한 줄 정의

트랜스포머 아키텍처에서 인코더의 최종 출력 벡터(메모리 뱅크)와 디코더의 쿼리(Query)를 결합하여, 생성 단계에서 입력 문맥 정보를 반영할 수 있도록 연결해주는 교차 어텐션(Cross-Attention) 매커니즘.

핵심 요지

  • 고정된 메모리 뱅크: 인코더의 마지막 레이어를 거쳐 나온 출력 벡터()는 문맥, 구문, 위치, 관계 정보가 풍부하게 포함된 512차원의 고정된 룩업 테이블(Frozen memory bank) 역할을 한다.
  • 일방향 정보 흐름: 디코더는 메모리 뱅크에서 정보를 읽기(Query)만 할 뿐, 디코더의 정보가 인코더로 거꾸로 역전파되거나 전달되지 않는다.
  • 효율성과 모듈성: 인코더의 출력을 고정함으로써 추론(Inference) 단계에서 매번 인코더를 재실행하지 않아도 되어 연산이 효율적이고, 동일한 인코더 출력값을 바탕으로 다양한 태스크의 디코더와 모듈식으로 연동할 수.있다.
  • 다중 수행: 교차 어텐션은 디코더 레이어마다 한 번씩(통상 6번) 독립적으로 일어나며, 각 레이어는 인코더의 출력을 독자적인 시각으로 재해석해 가져간다.

상세

작동 메커니즘

인코더-디코더 어텐션에서는 입력 데이터를 처리하는 주체가 인코더와 디코더로 나뉘어 다음과 같이 어텐션 요소가 구성된다.

  • 쿼리(Query, Q): 디코더의 이전 레이어 출력(현재 생성 중인 타깃 시퀀스의 문맥 벡터).
  • 키(Key, K) & 값(Value, V): 인코더의 마지막 레이어 출력인 고정 메모리 뱅크 .

디코더는 자신이 생성해야 할 단어의 힌트(Q)를 가지고 인코더가 제공하는 정보의 키(K)와 대조(내적 연산 및 소프트맥스)하여 유사도를 구한다. 이후 그 유사도 가중치를 값(V)에 곱해 최종적으로 입력 문장 맥락이 반영된 정보를 획득한다.

인코더 출력의 고정 이유와 효과

  1. 효율성: 디코더가 다음 토큰을 하나씩 생성할 때마다 인코더를 매번 처음부터 다시 가동하지 않는다.
  2. 모듈성: 동일한 인코더 표현을 다른 언어 번역용 디코더나 요약용 디코더 등에 연결하여 사용할 수 있다.

예시

영어 문장 "The dog sat ."을 한국어로 번역하는 경우:

  1. 인코더는 입력 문장 전체를 처리하여 "dog" 벡터에 "sat"의 의미적 힌트 등을 결합한 풍부한 맥락의 512차원 표현 벡터들을 생성하고 이를 고정 메모리 뱅크로 삼는다.
  2. 디코더가 첫 단어 "개"를 생성한 후 다음 단어 "가" 또는 "앉았다"를 생성하려 할 때, 디코더는 이전 출력인 "개"에 대한 쿼리(Q)를 던져 인코더의 메모리 뱅크에서 가장 연관성이 높은 단어인 "dog""sat" 정보를 매칭하여 문맥에 딱 맞는 번역을 지속한다.

충돌 및 오해

  • 추론 시 그래디언트의 역전파:
    • 오해: 추론 시 매 단계마다 디코더에서 인코더로 그래디언트가 역전파되어야 한다.
    • 사실: 그래디언트 역전파는 오직 학습(Training) 중에만 흐른다. 실제 텍스트를 생성하는 추론(Inference) 시점에는 인코더가 고정(Freeze)되어 메모리 역할만 수행한다.
  • 교차 어텐션의 수행 빈도:
    • 오해: 교차 어텐션은 인코더와 디코더 전체를 통틀어 단 한 번만 수행된다.
    • 사실: 디코더의 각 레이어마다 개별적으로 한 번씩(통상 6번) 수행되며, 각 레이어가 독자적인 시각으로 인코더 출력을 재해석해 가져간다.

관련 노트