트랜스포머·PEFT 2일 과정3장 · Attention과 Encoder1 / 18← 이전목차다음 →MetaContents

3장. Attention과 Encoder

먼저 큰 그림부터

회의실에 여섯 사람이 앉아 있다고 해 봅시다. 한 사람이 말을 하려면 먼저 다른 사람들의 발언을 떠올리고, 지금 내 말과 가장 관련 있는 발언을 더 많이 참고합니다. "그것"이라는 말을 쓸 때도 앞사람이 말한 "장비"를 떠올려야 뜻이 통합니다. Transformer 의 핵심인 Self-Attention 이 바로 이 일을 합니다. 문장 안의 낱말들이 서로의 발언을 얼마나 참고할지 숫자로 정하고, 그 비율대로 정보를 섞어 자기 표현을 문맥에 맞게 고칩니다. 2장에서 낱말을 숫자 한 줄(임베딩)로 바꾸고 위치 번호표까지 붙였다면, 이 장에서는 그 숫자 줄들이 서로 정보를 주고받는 방법을 봅니다.

입력 벡터, Q·K·V 만들기, 점수 매기기, 비율대로 섞기, Add & Norm 과 FFN 으로 다듬기의 다섯 걸음을 이은 흐름도

이 장에서 챙겨 갈 것은 세 가지입니다. 첫째, Self-Attention 의 계산 softmax(QKᵀ / √d_k) V 입니다. Query·Key·Value 를 도서관 검색에 빗대어 이해하고, 행렬의 shape 를 따라가며 한 줄씩 손으로 계산해 봅니다. 둘째, √d_k 로 나누는 까닭과 Multi-Head Attention 입니다. 점수 눈금을 맞추는 일과, 여러 전문가가 각자 관점으로 본 뒤 의견을 합치는 일입니다. 셋째, Encoder 블록입니다. Attention 뒤에 Add & Norm 과 FFN 을 붙여 블록 하나를 만들고, 이 블록만 쌓은 모델(BERT)이 어떤 일에 강한지 봅니다. 원본 노트북의 이 부분에는 코드가 없어서, 실습은 NumPy 로 식을 그대로 따라 계산하는 새 코드로 만들었습니다. pandas 로 행마다 합이 1 인 비율 표를 만들던 경험이 Attention 가중치 표로 그대로 이어집니다.

← 이전2장 · 확인문제와 해답다음 절 →3장 · 용어 짚고 가기