본문 바로가기
math4ai/Machine Learning and Deep Learning

M4AI) Attention & Transformer

by 잼민ai 2024. 7. 29.

면접 답변용이라고 생각하고 최대한 풀어서 쓰겠음

Attention

Attention이라는 용어는, 토큰의 시퀀스로 구성된 문장에서 토큰 간 얼마나 관련성이 있는지를 나타내는 용어입니다. 어텐션 매커니즘은 Query, Key, Value의 세 가지 벡터와 softmax함수로 계산되는데요,
\begin{equation}\label{atn}\tag{*}\text{Attention}(Q, K, V) = \text{softmax}\left(\dfrac{QK^\top}{\sqrt{d_k}}\right)V\end{equation}
푸핫 이게 뭐람

  • Query: '질문'이라는 의미를 가지고 있는데요, 어떤 토큰이 다른 토큰과 얼마나 연관성이 있는지 '질문'하는 역할을 해준다고 해요.
  • Key: 그 질문에 대한 대답이라고 표현할 수 있을 것 같아요. 그래서 이 두 요소를 가지고 $QK^\top$ 연산을 하고 softmax 함수를 취해주면 토큰과 토큰 간의 관련성이 쭉 나오는데, 이 값이 높으면 우리는 한 토큰이 다른 토큰에 집중하고 있다(attend to)고 말한대요.
  • Value: 3B1B 선생은 토큰 별 임베딩 스페이스에서, 우리가 원하는 구/문장을 표현하려면 특정 토큰 벡터가 얼마나 이동해야 하는지?를 의미하는 벡터라고 표현하더이다.. 

정확한 수학적 정의는…

Q = Query : t 시점의 디코더 셀에서의 은닉 상태
K = Keys : 모든 시점의 인코더 셀의 은닉 상태들
V = Values : 모든 시점의 인코더 셀의 은닉 상태들
_출처: https://wikidocs.net/65775


그래서 softmax값과 곱해져 계산된 attention 값은 단어들간의 관계를 반영해 전체 문장을 임베딩 스페이스 내에서 어떻게 표현할 것인가!에 관한 계산방법이라고 말할 수 있을 것 같아요. query, key, value 각각을 계산하기 위한 weight이 존재하고 이는 학습 시에 조정됩니다.
이 프로세스가 single 'head' attention을 지칭하고, GPT는 multi-head attention으로 구성되는데 이런 어텐션 계산이 병렬적으로 이뤄지는 구조예요. 문장 내에 존재하는 다양한 attention pattern을 캐치하자는 게 그 취지라고 할 수 있을 것 같습니다. 
 
트랜스포머는 Attention layer => MLP (multi-layer perceptron) => Attention layer => ... 로 구성됩니다.

출처: Vaswani et al. (2017)

미친놈들 이런 걸 대체 어떻게 생각해냄
포시셔널 인코딩은 단어벡터와 더불어 문장 내에서 단어의 위치도 임베딩에 들어간다는 걸 의미하구요, self-attention이라는 표현도 종종 보일텐데 그것은 한 문장 안에 있는 단어들끼리 어텐션을 계산해준다는 이야기입니다.
 
이상~

728x90