Attention

Attention 은 입력 시퀀스의 각 요소(토큰)가 다른 모든 요소와의 관계(연관성, 유사도)를 동적으로 계산하여, 중요한 정보에 더 집중할 수 있도록 하는 방법이다. 즉, 입력 전체를 한 번에 바라보면서, 각 토큰이 다른 토큰들과 얼마나 관련이 있는지 가중치를 부여해 정보를 집계한다.


1. 기본 아이디어

기존 RNN 기반 모델은 입력을 순차적으로 처리하기 때문에, 먼 거리의 토큰 간 관계를 학습하는 데 한계가 있었다. Attention은 입력 시퀀스 전체를 동시에 바라보고, 각 토큰이 다른 토큰들과 얼마나 중요한지(얼마나 "집중"해야 하는지)를 계산한다.


2. Self-Attention (자기-어텐션)

Transformer에서 가장 핵심적인 형태의 Attention이다.


3. 계산 과정

Self-Attention의 계산은 다음과 같이 이루어진다.

  1. Query, Key, Value 생성

    • 각 입력 토큰 임베딩에서 세 가지 벡터(Query, Key, Value)를 생성한다.
    • Q=XWQ, K=XWK, V=XWV (여기서 X는 입력 임베딩, W는 학습 가능한 가중치 행렬)
  2. 유사도(Attention Score) 계산

    • Query와 Key의 내적(dot product)을 통해 각 토큰 쌍의 유사도를 계산한다.
    • scorei,j=QiKjT
  3. 정규화(Softmax)

    • 각 토큰에 대해, 모든 토큰과의 유사도를 Softmax로 정규화하여 가중치(Attention Weight)를 만든다.
    • ai,j=softmax(scorei,j)
  4. 가중합

    • 각 토큰의 Value 벡터에 위에서 구한 가중치를 곱해, 최종적으로 새로운 표현을 만든다.
    • zi=jai,jVj
  5. 스케일링

    • 안정적인 학습을 위해, 유사도 계산 시 dk로 나누어준다. (dk는 Key 벡터의 차원)
    • scorei,j=QiKjTdk

4. Multi-Head Attention


5. Encoder-Decoder Attention


6. Masked Attention


7. 수식 요약

Self-Attention의 전체 수식은 다음과 같다.

Attention(Q,K,V)=softmax(QKTdk)V

8. 장점


9. 시각적 예시

아래 그림은 Self-Attention의 동작 방식을 시각적으로 보여준다.

Pasted image 20250601161452.png


10. Attention의 종류

Transformer에서는 다음과 같은 Attention이 사용된다.

종류 설명
Self-Attention 입력 시퀀스 내에서 각 토큰이 서로를 참고(Encoder, Decoder 모두 사용)
Masked Self-Attention 미래 토큰을 마스킹(Decoder에서 사용)
Encoder-Decoder Attention Encoder 출력과 Decoder 출력을 결합(Decoder에서 사용)

11. Attention의 역할


12. 한계 및 개선


13. 요약