AI 사전작동 원리

크로스 어텐션

크로스 어텐션은 한 시퀀스의 쿼리가 다른 시퀀스의 키와 값을 참조해 필요한 정보를 가져오는 어텐션 방식이다. 쿼리와 키와 값의 출처가 다르다는 점이 셀프 어텐션과 구분되는 특징이다. 번역 모델의 인코더-디코더 구조에서 처음 쓰였고, 이후 이미지 생성, 음성 인식, 검색 증강 생성, 멀티모달 모델에도 쓰인다.

루카스 · 수정 · AI Wiki 문서 번역·편집

쉽게 말하면, 크로스 어텐션은 질문하는 쪽 입력이 다른 입력에서 필요한 정보를 골라 가져오는 방식이다. 같은 입력 안의 관계를 보는 셀프 어텐션과 달리, 두 입력 사이의 관계를 맞춘다. 번역 모델이 입력 문장을 참고하거나, 이미지 생성 모델이 텍스트 설명을 반영할 때 쓰인다.

크로스 어텐션
분류어텐션 메커니즘의 한 형태, 쿼리와 키와 값을 서로 다른 시퀀스에서 가져온다
최초 형태2014년 신경망 기계 번역 연구의 인코더-디코더 어텐션2
일반화2017년 트랜스포머 논문 「Attention Is All You Need」에서 쿼리-키-값 형태로 정리됨3
대표 사용처기계 번역, 음성 인식, 텍스트-이미지 확산 모델, 검색 증강 생성, 멀티모달 모델
잘 쓰지 않는 곳디코더 전용 대규모 언어 모델(GPT, Llama 등)은 셀프 어텐션만 쓴다

1. 개요

크로스 어텐션(cross-attention)은 어텐션 메커니즘의 한 변형이다. 쿼리는 한 시퀀스나 표현에서 만들고, 키와 값은 다른 시퀀스나 표현에서 만들어서, 모델이 출력을 외부 정보 출처에 맞춘다. 한 입력 안의 관계를 파악하는 셀프 어텐션과 달리, 크로스 어텐션은 서로 다른 두 출처의 정보를 연결하고 맞춘다. Vaswani 등(2017)은 트랜스포머의 인코더-디코더 어텐션 층을 이렇게 설명했다. 쿼리는 이전 디코더 층에서 오고, 키와 값은 인코더 출력에서 온다. 그래서 디코더의 각 위치가 입력 시퀀스의 모든 위치를 참조할 수 있다.3

이 메커니즘은 Bahdanau 등(2014)의 신경망 기계 번역 연구에서 인코더-디코더 어텐션으로 처음 나타났다. 이후 Vaswani 등(2017)이 쿼리-키-값 형태로 일반화했다. 지금은 자연어 처리, 컴퓨터 비전, 음성 인식, 확산 모델, 검색 증강 생성, 여러 멀티모달 AI 시스템에서 기본 구성 요소로 쓰인다.2,3

셀프 어텐션이 디코더 전용 대규모 언어 모델인 GPT나 Llama에서 중심인 반면, 크로스 어텐션은 출력을 다른 표현 공간에 있는 외부 정보에 맞춰야 할 때 표준 방식으로 쓰인다. 텍스트 설명을 반영하는 Stable Diffusion의 이미지 생성, 검색된 여러 문서를 디코더에서 함께 참조하는 Fusion-in-Decoder, 가중치를 고정한 언어 모델에 시각 특징을 넣는 Flamingo가 대표 예다. 같은 스케일드 점곱 연산이 쿼리와 키와 값의 출처만 바꿔 여러 역할을 맡을 수 있다는 점이 어텐션 체계를 범용적으로 만드는 이유 중 하나다.

2. 정의와 작동 원리

가장 기본적으로 크로스 어텐션은 한 시퀀스의 쿼리를 받아 두 번째 시퀀스의 키와 얼마나 잘 맞는지 점수를 계산하고, 그 점수로 두 번째 시퀀스의 값을 가중 합산하는 함수다. '크로스'는 정보가 하나의 표현 안에서 도는 것이 아니라 서로 다른 두 표현 사이에서 흐른다는 뜻이다. 첫 번째 시퀀스는 모델이 던지는 질문의 관점을, 두 번째 시퀀스는 질문을 받는 데이터를 제공한다.

전형적인 인코더-디코더 구조에서 디코더는 생성의 매 단계마다 인코더 출력의 어느 부분이 가장 관련 있는지 정해야 한다. 크로스 어텐션이 바로 이 역할을 한다. 디코더의 각 위치는 쿼리 벡터를 만들고, 이를 인코더가 만든 모든 키 벡터와 비교한다. 그 결과 얻은 어텐션 가중치가 각 인코더 위치가 현재 출력에 기여하는 정도를 정한다. 이 아이디어는 인코더-디코더 텍스트 모델을 넘어 확장된다. 쿼리 쪽은 학습된 소수의 잠재 벡터, 이미지 패치 시퀀스, 또는 단일 읽기 토큰일 수 있다. 키와 값 쪽은 텍스트 단락, 검색된 문서 묶음, 오디오 스펙트로그램, 고해상도 이미지일 수 있다. 결국 크로스 어텐션은 한 표현이 다른 표현의 요청에 따라 정보를 골라 가져오는, 부드럽고 미분 가능한 조회(lookup)다.

문헌에서는 이 메커니즘을 '인코더-디코더 어텐션'이라고 부르기도 한다. 그러나 '크로스 어텐션'이 더 일반적이고 널리 쓰이는 이름이 되었다. 특히 이 기법이 전통적인 인코더-디코더 모델을 넘어 확산 모델, 멀티모달 시스템, 검색 증강 구조로 확장되면서 그렇게 되었다. 두 용어는 흔히 섞어 쓰지만, '인코더-디코더 어텐션'은 키와 값이 트랜스포머 인코더 스택에서 올 때를 가리킨다.

3. 계산 방식

크로스 어텐션은 트랜스포머 모델 전반에서 쓰는 스케일드 점곱 어텐션 공식과 같다. 다른 점은 쿼리, 키, 값 행렬의 출처다.

  • 시퀀스 A(예: 디코더 은닉 상태)는 쿼리를 제공한다.
  • 시퀀스 B(예: 인코더 출력)는 키와 값을 제공한다.

쿼리, 키, 값 행렬은 다음과 같이 계산한다. H_A는 시퀀스 A의 은닉 표현으로 크기가 (n_q, d)이고, H_B는 시퀀스 B의 은닉 표현으로 크기가 (n_kv, d)다. W^Q, W^K, W^V는 학습되는 투영 행렬이다.

Q = H_A W^Q,  K = H_B W^K,  V = H_B W^V
쿼리, 키, 값 계산 식

n_q(쿼리 길이)와 n_kv(키와 값의 길이)는 크게 다를 수 있다. 기계 번역에서는 보통 비슷하지만, 텍스트-이미지 확산 모델에서는 수천 개의 공간 쿼리 위치가 수십 개의 텍스트 토큰에 주의를 기울이는 식으로 몇 자릿수 차이가 나는 경우가 많다.

어텐션 출력은 다음 식으로 계산한다.

Attention(Q, K, V) = softmax(Q K^T / sqrt(d_k)) V
스케일드 점곱 어텐션

d_k는 키 벡터의 차원이다. sqrt(d_k)로 나누는 이유는 점곱 값이 지나치게 커져 softmax가 기울기가 극도로 작은 영역으로 밀려나는 것을 막기 위해서다. 점수 행렬 Q K^T의 크기는 셀프 어텐션의 (n, n)이 아니라 (n_q, n_kv)다. 두 쪽의 길이가 서로 독립적이기 때문이다.3

softmax는 모든 키 위치에 걸쳐 점수를 정규화해, 각 쿼리 위치가 각 키 위치에 얼마나 주의를 주는지를 확률 분포로 나타낸다. 출력은 값 벡터의 가중합이며, 점수가 높은 위치일수록 출력에 더 크게 기여한다. 투영 행렬이 학습되므로 네트워크는 질문하는 쪽과 답을 주는 쪽에 서로 다른 부분공간을 쓸 수 있다. 같은 H_B도 투영 행렬을 새로 학습하면 여러 개의 K와 V 관점으로 투영할 수 있다.

3.1. 멀티헤드 크로스 어텐션

실제로 크로스 어텐션은 거의 항상 멀티헤드 어텐션으로 구현된다. Vaswani 등(2017)의 정식화를 따르며, 식은 다음과 같다.3

MultiHead(Q, K, V) = Concat(head_1, ..., head_h) W^O
head_i = Attention(Q W_i^Q, K W_i^K, V W_i^V)
멀티헤드 어텐션

원래 트랜스포머는 어텐션 헤드 수 h=8, d_model=512를 썼다. 따라서 각 헤드의 차원은 d_k = d_v = d_model/h = 64다. 투영 행렬 W_i^Q, W_i^K, W_i^V는 512×64 크기이고, 출력 투영 행렬 W^O는 512×512 크기로 연결된 헤드 출력을 모델 차원으로 다시 합친다.3

여러 헤드는 서로 다른 표현 부분공간의 정보를 동시에 볼 수 있게 한다. 번역 모델에서는 한 헤드가 단어의 구문 정렬을, 다른 헤드가 두 언어 사이의 의미 유사성을, 또 다른 헤드가 위치상 가까움을 학습할 수 있다. 학습된 번역 모델의 개별 크로스 어텐션 헤드에서는 주어와 동사의 일치, 상호참조 해결, 어순 재배열 같은 익숙한 언어 패턴이 반복해서 확인되었다. 이런 병렬 처리가 멀티헤드 크로스 어텐션이 실제로 잘 작동하는 이유 가운데 하나다.

3.2. 마스킹과 인과 구조

크로스 어텐션은 인과 마스크를 거의 쓰지 않는다. 키와 값은 보통 생성이 시작되기 전에 전체가 계산된 표현에서 오기 때문이다. 인코더-디코더 트랜스포머에서는 첫 디코더 단계 전에 인코더 스택 전체가 실행되어 H_B를 만들므로, 키 쪽에는 가릴 '미래'가 없다. 디코더는 셀프 어텐션 부분층에서 인과 마스크를 쓰지만, 크로스 어텐션 부분층은 인코더에 대해 양방향이다.

그 밖의 이유로 크로스 어텐션에 마스크가 들어가기도 한다. 패딩 마스크는 배치 처리를 위해 덧붙인 패딩 토큰에 대한 어텐션을 0으로 만든다. Flamingo의 크로스 어텐션 마스크는 각 텍스트 토큰이 교차 배치된 시퀀스에서 앞에 나온 이미지만 참조하도록 제한해, 문서 수준에서 자기회귀 성질을 지킨다. 일부 검색 증강 시스템은 독립적으로 인코딩된 단락의 경계를 넘어 정보가 새지 않도록 블록 대각 마스크를 쓴다.4

4. 셀프 어텐션과의 차이

두 어텐션의 차이는 단순하지만 중요하다. 셀프 어텐션은 하나의 시퀀스가 쿼리, 키, 값의 출처를 모두 맡는다. 크로스 어텐션은 쿼리는 한 시퀀스에서, 키와 값은 다른 시퀀스에서 가져온다. 두 연산은 같은 스케일드 점곱 틀을 쓰고, 데이터의 출처만 다르다.

셀프 어텐션과 크로스 어텐션 비교
항목셀프 어텐션크로스 어텐션
쿼리의 출처키와 값과 같은 시퀀스키와 값과 다른 시퀀스
키와 값의 출처쿼리와 같은 시퀀스쿼리와 다른 시퀀스
목적한 시퀀스 안의 관계 파악두 시퀀스를 맞추고 통합
원래 트랜스포머의 위치인코더 층, 디코더의 마스크된 셀프 어텐션디코더의 인코더-디코더 어텐션 부분층
전형적 용도단일 입력의 문맥 표현외부 정보에 맞춘 출력 생성
시퀀스 길이항상 같음(n_q = n_kv = n)다를 수 있음(n_q, n_kv)
점수 행렬 크기(n, n)(n_q, n_kv)
계산 복잡도O(n² d), n은 시퀀스 길이O(n_q n_kv d)
인과 마스크선택 사항(자기회귀 디코더에서 사용)드묾(키와 값이 보통 완전히 관찰됨)
입력 시퀀스 수하나둘
예시 응용문장을 인코딩하는 BERT인코더를 참조하는 기계 번역 디코더
최신 디코더 전용 LLM있음(유일한 어텐션 형태)보통 없음

셀프 어텐션은 한 시퀀스의 각 토큰이 같은 시퀀스의 다른 모든 토큰에서 문맥을 모으게 한다. 크로스 어텐션은 한 시퀀스의 토큰이 완전히 다른 시퀀스의 토큰에서 정보를 모으게 한다. 무엇을 쓸지는 결국 데이터에 관한 문제다. 입력이 하나이고 풍부한 특징이 필요하면 셀프 어텐션을, 입력이 둘이고 한쪽이 다른 쪽의 정보를 반영해야 하면 크로스 어텐션을 쓴다.

셀프 어텐션은 크로스 어텐션에서 두 시퀀스가 같은 경우로 볼 수 있다. PyTorch의 nn.MultiheadAttention(query, key, value)처럼 같은 모듈이 query와 key와 value가 같을 때는 셀프 어텐션을, 다를 때는 크로스 어텐션을 수행한다. 두 연산이 같은 수학적 기반 위에 있다는 점을 잘 보여 주는 통합이다.

5. 원래 트랜스포머에서의 역할

2017년 NeurIPS 학회에서 발표된 Vaswani 등의 트랜스포머에는 세 종류의 어텐션이 있다.

  • 인코더 셀프 어텐션: 인코더의 각 위치가 이전 인코더 층의 모든 위치를 참조한다. 쿼리, 키, 값이 모두 인코더 자신의 표현에서 온다.
  • 디코더 마스크된 셀프 어텐션: 디코더의 각 위치가 현재 위치까지만 참조한다. 인과 마스크가 미래 토큰을 가려 자기회귀 성질을 지킨다.
  • 인코더-디코더 어텐션(크로스 어텐션): 쿼리는 이전 디코더 층에서, 키와 값은 인코더 출력에서 와서 디코더의 각 위치가 입력 전체를 참조한다.

원래 트랜스포머는 인코더와 디코더에 각각 N=6개의 동일한 층을 쌓았다. 인코더 층은 멀티헤드 셀프 어텐션과 위치별 피드포워드 신경망 두 부분층으로 이루어진다. 디코더 층은 마스크된 멀티헤드 셀프 어텐션, 인코더 출력에 대한 멀티헤드 크로스 어텐션, 위치별 피드포워드 신경망 세 부분층으로 이루어진다. 각 부분층은 잔차 연결과 층 정규화로 감싸인다.3

디코더의 크로스 어텐션 부분층은 생성하는 동안 입력 시퀀스를 들여다보게 하는 역할을 한다. 이 부분층이 없으면 디코더는 인코더가 만든 입력 정보를 근거로 다음 예측을 조정할 방법이 없다. 논문은 이 설계가 순환 신경망 등으로 만든 시퀀스-투-시퀀스 모델의 전형적인 인코더-디코더 어텐션 방식을 본뜬 것이라고 밝히면서, 재귀 구조를 병렬 처리가 가능한 어텐션 연산으로 대체했다고 설명한다.2,3

5.1. 디코더 블록 안의 위치

h = LayerNorm(x + MaskedSelfAttention(x))
h = LayerNorm(h + CrossAttention(query=h, key=enc_out, value=enc_out))
h = LayerNorm(h + FFN(h))
디코더 블록의 의사 코드

크로스 어텐션 부분층은 실행 중인 디코더 표현 h를 쿼리로, 미리 계산된 인코더 출력 enc_out을 키와 값으로 받는다. enc_out은 생성 과정 내내 고정되므로 K와 V 투영을 첫 디코딩 단계 뒤에 캐시해 이후 모든 단계에서 재사용할 수 있다. 이는 인코더-디코더 추론 실행에서 가장 중요한 실용적 최적화 중 하나다. 원본 입력에 대한 KV 캐시는 한 번 계산되어 출력 전체에 재사용되고, 토큰 단위로 커지는 것은 디코더 셀프 어텐션의 KV 캐시뿐이다.

6. 등장 배경

6.1. Bahdanau 어텐션(2014)

크로스 어텐션의 직계 조상은 Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio가 2014년 논문 「Neural Machine Translation by Jointly Learning to Align and Translate」에서 소개한 소프트 어텐션이다. 이전의 시퀀스-투-시퀀스 모델은 입력 문장 전체를 하나의 고정 길이 문맥 벡터로 압축해, 긴 입력에서 심각한 병목이 생겼다. Bahdanau 등은 모든 정보를 한 벡터에 통과시키면 신호가 뭉개지고, 문장이 길어질수록 성능이 빠르게 떨어진다고 주장했다.2

해결책은 입력을 양방향 순환 신경망으로 인코딩한 주석 벡터의 시퀀스로 바꾸고, 디코더가 매 단계 어떤 주석에 주목할지 고르게 하는 것이었다. 디코더는 이전 은닉 상태를 쿼리로 삼아 작은 피드포워드 신경망으로 각 주석과의 점수를 계산하고, softmax로 정규화한 뒤 주석을 합쳐 문맥 벡터를 만들었다. 이 문맥 벡터가 다음 디코딩 단계에 들어간다. 돌아보면 이는 RNN 은닉 상태에 내적이 아니라 가산 점수를 쓴 크로스 어텐션이다. 이 기법은 지금도 Bahdanau 어텐션 또는 가산 어텐션(additive attention)으로 불린다.

6.2. Luong 어텐션(2015)

Thang Luong, Hieu Pham, Christopher D. Manning은 후속 논문 「Effective Approaches to Attention-based Neural Machine Translation」를 발표했다. 이들은 Bahdanau의 가산 점수를 대신하는 두 가지 점수 함수, 즉 내적(dot-product)과 일반(general) 방식을 제시했다. 또 모든 입력 위치를 보는 전역(global) 어텐션과, 예측된 정렬 위치 주변의 작은 창만 보는 지역(local) 어텐션을 구분했다. 내적 점수는 트랜스포머의 스케일드 점곱 어텐션의 직접적인 선조다. 트랜스포머는 여기에 1/sqrt(d_k) 스케일링 인자를 더해, 차원이 클 때 softmax가 포화되는 것을 막았다.3,5

6.3. 메모리 네트워크와 Show, Attend and Tell(2015)

같은 2015년에 나온 두 논문도 이 아이디어를 확장했다. Sukhbaatar, Szlam, Weston, Fergus의 「End-To-End Memory Networks」는 어텐션을 외부 메모리 행렬에 대한 소프트 주소 지정(soft addressing)으로 정의했다. 쿼리가 메모리 키에 대한 가중치를 계산하고 메모리 값의 조합을 가져오는 방식이다. 이 논문은 출력 하나마다 어텐션을 여러 번 '홉(hop)'으로 반복하는 구조를 보여 주었고, 이는 이후 트랜스포머의 여러 층 어텐션 구조를 예고했다.6

Kelvin Xu 등은 「Show, Attend and Tell」에서 어텐션을 다중 모달 설정으로 확장했다. 이 모델은 합성곱 신경망의 공간 특징을 주목하는 LSTM 디코더로 캡션을 한 단어씩 만들었다. 단어를 생성할 때마다 어텐션 맵을 시각화하면 모델이 이미지의 관련 영역에 고정되는 모습이 드러났다. 사실상 이것이 널리 쓰인 최초의 교차 모달 크로스 어텐션이었다.7

6.4. 트랜스포머의 인코더-디코더 어텐션(2017)

Vaswani 등(2017)의 트랜스포머 논문은 교차 시퀀스 어텐션을 통합된 쿼리-키-값 틀로 다시 정식화했다. 가산 점수 대신 스케일드 점곱 점수를 쓰고, 다중 헤드 병렬 처리를 더했다. 트랜스포머 디코더의 인코더-디코더 어텐션 부분층이 대표적인 현대 크로스 어텐션이다. 재귀 구조를 없애면서 크로스 어텐션은 순차적인 RNN 단계와 번갈아 실행될 필요가 없어졌고, 다중 헤드 덕분에 표현력이 높아졌으며, GPU와 TPU에서의 병렬 처리 덕분에 효율도 크게 높아졌다.3

7. 활용 분야

7.1. 기계 번역과 텍스트 생성

크로스 어텐션의 원래이자 가장 직관적인 응용은 기계 번역이다. 인코더가 원문 문장을 처리하고, 디코더가 번역문을 토큰 하나씩 만든다. 디코딩의 각 단계에서 크로스 어텐션은 디코더가 다음 번역 토큰을 예측하는 데 어떤 원문 토큰이 가장 관련 있는지 찾게 한다.

예를 들어 'The cat sat on the mat'을 영어에서 프랑스어로 옮길 때, 디코더는 'chat'을 생성하면서 'cat'에, 'tapis'를 생성하면서 'mat'에 강하게 주목할 수 있다. 크로스 어텐션으로 학습된 어텐션 가중치는 원문과 번역문 위치 사이에 부드러운 정렬을 만든다. 이는 이전 통계 기반 기계 번역 시스템이 쓰던 딱딱한 정렬 모델을 대신한다. 연구자들은 이 정렬을 해석 가능성 시각화에 쓰고, 이중언어 사전 같은 후속 도구를 위한 단어 단위 정렬을 뽑아내며, 실제 번역 시스템의 실패 사례를 디버깅하는 데 활용해 왔다.

번역을 넘어 크로스 어텐션은 텍스트 요약, 질의응답, 문서 기반 생성 같은 다른 시퀀스-투-시퀀스 과제에서도 핵심 역할을 한다. 모델은 입력 문서에 맞춰 출력을 만들어야 하기 때문이다. T5와 BART 같은 인코더-디코더 모델은 입력이 출력을 형성하는 주된 통로로 크로스 어텐션을 쓴다. 이 모델들이 요약, 패러프레이징, 문법 오류 교정에서 좋은 성능을 내는 데는 크로스 어텐션이 입력 정보를 유연하게 고르는 능력이 크게 기여했다.

7.2. 텍스트-이미지 확산 모델

현대에서 크로스 어텐션의 가장 두드러진 쓰임 가운데 하나는 텍스트-이미지 확산 모델이다. 이 시스템에서 크로스 어텐션은 텍스트 설명이 이미지 생성 과정을 이끄는 주된 메커니즘이다. Rombach 등(2022)은 교차 어텐션 층을 모델 구조에 넣어 확산 모델을 텍스트나 바운딩 박스 같은 일반적인 조건 입력을 받는 강력하고 유연한 생성기로 바꾸었다고 설명한다.

Rombach 등(2022)의 Latent Diffusion Model을 기반으로 한 Stable Diffusion은 U-Net 잡음 제거 네트워크 안의 크로스 어텐션 층을 써서 텍스트 프롬프트에 맞춰 이미지를 생성한다. 프롬프트는 먼저 고정된 CLIP ViT-L/14 텍스트 인코더로 인코딩된다. U-Net 안에서는 잠재 이미지 특징이 쿼리가 되고, CLIP 텍스트 토큰 임베딩이 키와 값을 만든다. 각 잡음 제거 단계에서 모델은 이미지의 어느 공간 영역이 프롬프트의 어느 단어에 대응해야 하는지 정한다. Stable Diffusion은 64x64, 32x32, 16x16 잠재 특징 맵 등 여러 공간 해상도에서 크로스 어텐션을 적용해, 다양한 세밀함의 텍스트 조건을 준다.8

추론 실행 중 크로스 어텐션은 두 단계로 작동하는 것으로 나타났다. 초기의 '의미 계획' 단계에서 모델은 텍스트에 묘사된 객체들의 공간 배치를 잡기 위해 크로스 어텐션에 크게 의존한다. 이어지는 '충실도 향상' 단계에서는 크로스 어텐션 출력이 고정점으로 수렴하고, 모델은 시각 세부를 다듬는다. 이 통찰은 프롬프트 간 편집(prompt-to-prompt) 기법에 활용되었다. 크로스 어텐션 맵을 조작하면 전체 구도를 바꾸지 않고 생성 이미지의 특정 부분만 바꿀 수 있다.

Imagen(Saharia 등, 2022, Google Research)은 텍스트 인코딩에서 다른 접근을 쓰지만, 같은 크로스 어텐션 조건화 방식에 의존한다. CLIP 대신 Imagen은 이미지-텍스트 쌍으로 학습되지 않은 텍스트 전용 모델인 고정된 T5-XXL 대형 언어 모델의 인코더를 쓴다. 텍스트 임베딩은 각 어텐션 층의 키-값 쌍에 이어 붙이는 방식으로 U-Net에 크로스 어텐션을 통해 주입된다. 구글 연구진은 언어 모델의 크기를 키우는 것이 확산 모델 자체를 키우는 것보다 이미지 품질과 텍스트-이미지 정합성을 더 높인다는 결과를 얻었다. 이는 텍스트와 이미지 사이의 크로스 어텐션 인터페이스가 생성 품질에 얼마나 중요한지 보여 준다.9

DALL-E 2(Ramesh 등, 2022, OpenAI)은 unCLIP이라고도 불리며 두 단계 구조를 쓴다. 먼저 확산 사전 모델(prior)이 텍스트로부터 CLIP 이미지 임베딩을 만들고, 이어서 디코더가 그 임베딩으로부터 이미지를 생성한다. 디코더는 인코더와 디코더 블록 사이에 크로스 어텐션 층을 두며, 이 층은 CLIP 텍스트 임베딩과 이전 층의 출력을 받아 이후 각 층에 쓰일 문맥 벡터를 만든다.10

보다 최근의 텍스트-이미지 시스템은 다른 방식을 탐색해 왔다. Peebles와 Xie(2023)의 Diffusion Transformer(DiT)는 U-Net 백본을 잠재 패치에서 작동하는 트랜스포머로 바꾸고, 크로스 어텐션, 인컨텍스트 조건화, 적응형 층 정규화(adaLN-Zero) 세 가지 조건화 방식을 연구했다. 이 논문은 adaLN-Zero가 크로스 어텐션보다 낮은 FID를 내면서 계산 효율도 높다고 보고했다. 그래서 DiT 기반의 최신 시스템은 클래스나 스칼라 조건화에 adaLN-Zero를 쓰는 경우가 많다. 조건 신호가 단일 클래스 라벨이 아니라 토큰 임베딩 시퀀스인 텍스트 조건화에서는 크로스 어텐션이 여전히 표준이다.11

Stable Diffusion 3와 FLUX.1(2024)은 텍스트와 이미지 토큰을 함께 처리하되 모달리티마다 Q, K, V 투영을 따로 두는 Multimodal Diffusion Transformer(MMDiT) 구조를 쓴다. 이 구조는 구조적으로 양방향 크로스 어텐션을 번갈아 두는 것과 같다.12

7.3. 비전-언어 멀티모달 모델

크로스 어텐션은 시각 정보와 텍스트 정보를 융합해야 하는 많은 비전 언어 모델의 핵심 구조 요소다. 크로스 어텐션과 단순한 연결(concatenation) 방식 중 무엇을 고를지는 이 분야의 중심 설계 결정 가운데 하나다.

Flamingo(Alayrac 등, 2022, DeepMind)는 고정된 대형 언어 모델에 시각 정보를 넣는 주된 방법으로 게이트가 달린 크로스 어텐션 밀집(dense) 층을 도입했다. 이 gated xattn-dense 블록은 기존의 고정된 LLM 층 사이에 끼워진다. 시각 특징은 Perceiver Resampler를 거친 비전 인코더 출력에서 오며 키와 값이 되고, 언어 모델의 은닉 상태가 쿼리가 된다. tanh 기반 스칼라 게이트를 0으로 초기화해 사전 학습된 언어 모델을 흔들지 않으면서 시각 조건화를 점차 도입한다. 이 설계 덕분에 Flamingo는 교차 배치된 이미지-텍스트 예시를 프롬프트로 주는 방식으로 퓨샷 학습을 수행할 수 있다.4

BLIP-2(Li 등, 2023)는 고정된 이미지 인코더와 고정된 언어 모델을 잇는 가벼운 질의 트랜스포머인 Q-Former를 도입했다. Q-Former는 학습 가능한 소수의 질의 토큰을 쓰는데, 이 토큰들은 셀프 어텐션 층에서 서로 정보를 주고받고, 크로스 어텐션 층에서 시각 인코더 특징으로부터 정보를 뽑아낸다. 출력은 고정 크기의 질의 토큰 집합이며, 이를 언어 모델의 입력 공간으로 투영할 수 있다. 이 방식은 멀티모달 모델을 엔드 투 엔드로 학습하는 방식보다 학습 가능한 매개변수가 훨씬 적으면서도 경쟁력 있는 결과를 낸다.13

LLaVA(Liu 등, 2023)는 다른 접근을 쓴다. 크로스 어텐션 층 대신 CLIP 비전 인코더의 시각 토큰을 단순한 선형(후에 MLP) 투영으로 바꾼 뒤, 텍스트 토큰과 이어 붙여 LLM 디코더에 입력한다. 이 투영 기반 융합은 추가 크로스 어텐션 매개변수가 필요 없지만, 언어 모델의 셀프 어텐션이 결합된 시각-텍스트 시퀀스를 처리해야 한다. LLaVA 방식은 학습이 단순하고 텍스트용으로 이미 학습된 셀프 어텐션 층을 그대로 쓸 수 있어서, 명시적 크로스 어텐션의 대안으로 점점 인기를 얻고 있다.

Qwen-VL(Bai 등, 2023)은 두 방식의 중간에 놓인다. 학습 가능한 질의 벡터를 쓰는 단일 층 크로스 어텐션 어댑터가 시각 인코더 특징을 키와 값으로 받아, 길이가 가변인 시각 특징 시퀀스를 256 길이로 압축한다. 압축 중 원 이미지의 공간 정보를 보존하기 위해 2D 절대 위치 인코딩을 크로스 어텐션의 쿼리-키 쌍에 더한다. 압축된 시각 시퀀스는 텍스트 토큰과 이어 붙여 Qwen 언어 모델이 처리한다.14

Hugging Face의 IDEFICS 계열은 이 설계가 어떻게 오갔는지 보여 준다. Flamingo를 재현한 첫 IDEFICS는 게이트 크로스 어텐션 층을 썼다. 2024년 발표된 IDEFICS-2는 이 설계를 버리고, Perceiver 풀링, MLP 투영, 텍스트 토큰과의 연결을 거치는 완전한 자기회귀 방식을 택했다. 이는 LLaVA와 비슷하다. 크로스 어텐션은 모달리티를 더 깔끔하게 나누고 매개변수 효율이 높은 조건화를 제공하는 반면, 연결 방식은 구조 변경이 적고 기존 셀프 어텐션 기반을 재사용한다는 절충이 있다.15

주요 멀티모달 구조의 융합 방식 비교
모델연도비전-언어 융합 방식크로스 어텐션 사용 여부
Show, Attend and Tell2015LSTM 디코더가 CNN 특징 맵에 주목사용(가산 어텐션, 공간 특징 대상)
Flamingo2022고정 LLM 사이에 게이트 xattn-dense 층 삽입사용(게이트 크로스 어텐션)
Perceiver2021잠재 배열에서 입력 바이트로의 크로스 어텐션사용(핵심 특징)
Perceiver IO2021입력 크로스 어텐션과 출력 크로스 어텐션사용(입력과 출력 모두)
BLIP-22023학습된 질의가 ViT 특징에 크로스 어텐션하는 Q-Former사용(Q-Former 내부)
Qwen-VL2023단일 층 크로스 어텐션 어댑터가 ViT 특징을 256 토큰으로 압축사용(어댑터 내부)
LLaVA2023ViT 특징을 MLP로 투영해 텍스트와 연결미사용(연결)
IDEFICS2023게이트 xattn-dense를 쓴 Flamingo 재현사용(게이트)
IDEFICS-22024Perceiver 풀링, MLP 투영, 연결미사용(연결)
Florence-22023비전 인코더와 언어 디코더의 시퀀스-투-시퀀스 구조사용(인코더-디코더 크로스 어텐션)
Stable Diffusion2022U-Net이 CLIP 텍스트 임베딩에 크로스 어텐션사용(텍스트 조건화)
Imagen2022U-Net이 T5-XXL 텍스트 임베딩에 크로스 어텐션사용(텍스트 조건화)
DALL-E 22022디코더가 CLIP 텍스트 및 이미지 임베딩에 크로스 어텐션사용

7.4. 음성 인식

인코더-디코더 자동 음성 인식(ASR) 시스템은 음향 특징을 텍스트 전사와 맞추기 위해 크로스 어텐션에 의존한다. 디코더는 오디오에 대한 인코더 표현에 주목하면서 텍스트 토큰을 하나씩 생성한다.

Whisper(Radford 등, 2022, OpenAI)가 대표 예다. Whisper는 오디오를 30초 단위 조각으로 나눠 로그 멜 스펙트로그램으로 바꾸고, 이를 트랜스포머 인코더가 부호화한다. 디코더는 인코더 출력에 크로스 어텐션을 하면서 텍스트 토큰을 자기회귀 방식으로 생성한다. 이 크로스 어텐션은 음향 프레임과 전사되는 텍스트 사이에 동적 정렬을 만들어, 가변 길이 오디오를 처리하고 여러 언어에서 정확한 전사를 내게 한다.16

Whisper의 크로스 어텐션 가중치는 기본 전사를 넘어서도 쓸모가 있었다. 연구자들은 크로스 어텐션 맵에 담긴 암묵적 시간 정렬을 단어 단위 타임스탬프와 스트리밍 ASR 같은 과제에 활용해 왔다. 예를 들어 Simul-Whisper 시스템은 Whisper 크로스 어텐션의 시간 정렬로 청크 단위 스트리밍 음성 인식의 자기회귀 디코딩을 안내한다.

Chan 등(2016)의 「Listen, Attend and Spell」(LAS)을 포함한 이전의 인코더-디코더 ASR 시스템도 음향 인코더와 텍스트 디코더 사이에 어텐션 기반 정렬을 썼다. 이 패턴을 Whisper를 비롯한 현대 시스템이 따른다.17

7.5. 질의응답과 문서 기반 생성

생성형 질의응답 시스템에서 크로스 어텐션은 하나 이상의 문서에 조건을 맞춘 답변을 만들어야 할 때 표준 메커니즘이다. 인코더-디코더 모델에서는 관련 문서가 키-값 메모리로 인코딩되고, 디코더가 그 표현에 주목하면서 답을 생성한다. 크로스 어텐션 가중치는 학습된 관련도 점수 역할을 해서, 현재 생성 단계에 가장 유용한 입력 부분을 드러낸다.

이 패턴은 인코더-디코더 트랜스포머 위에 세운 대부분의 추출형·생성형 QA 시스템의 기반이다. 긴 문서를 다루는 QA 시스템은 같은 메커니즘을 검색, 희소 어텐션, 계층형 인코더로 확장해, 입력이 매우 길어져도 크로스 어텐션 비용을 감당할 수 있게 한다.

8. Perceiver의 교차 어텐션 활용

Perceiver(Jaegle 등, 2021, DeepMind)는 임의 크기와 여러 모달리티의 입력을 다루기 위해 크로스 어텐션을 쓰는 새로운 방식을 제시했다. 기존 트랜스포머는 전체 입력에 셀프 어텐션을 적용하는데, 이미지처럼 고차원 데이터에서는 계산량이 지나치게 크다. 224x224 이미지는 5만 개가 넘는 픽셀을 가지므로, 단순한 셀프 어텐션은 약 25억 개의 항목을 가진 어텐션 행렬이 필요하다.

Perceiver는 크로스 어텐션으로 고차원 입력 바이트 배열을 고정 크기의 잠재 배열(latent array)로 투영해 이 문제를 푼다. 구조는 두 핵심 요소로 이루어진다.

  • 교차 어텐션 모듈: 큰 입력 바이트 배열(M개 원소)과 작은 잠재 배열(N개 원소, N은 M보다 훨씬 작음)을 받아 새 잠재 배열을 만든다. 쿼리는 잠재 배열에서, 키와 값은 입력에서 온다.
  • 잠재 트랜스포머 타워: 잠재 공간에서만 작동하는 셀프 어텐션 블록의 스택이다.18

교차 어텐션 단계의 계산량은 O(MN)으로, N을 고정하면 입력 크기 M에 대해 선형이다. 잠재 셀프 어텐션은 O(N²)로 입력 크기와 무관하다. 전체 구조는 O(MN + LN²)이며, 여기서 L은 잠재 셀프 어텐션 층의 수다. 이렇게 하면 네트워크 깊이를 입력 크기에서 분리할 수 있다.

ImageNet 분류에서는 1024 채널을 가진 약 512개 인덱스의 잠재 배열을 쓴다. 구조는 크로스 어텐션(입력을 다시 읽기)과 잠재 셀프 어텐션(잠재 표현 처리)을 번갈아 반복한다. 크로스 어텐션 라운드를 여러 번 두면 계산은 늘지만 성능이 좋아진다. Perceiver는 2D 합성곱 없이 50,000개 픽셀 전체에 크로스 어텐션으로 직접 주목하고, 잠재 병목을 통해 압축해 ImageNet에서 ResNet-50 및 ViT와 비슷한 성능을 냈다.18

Perceiver IO(Jaegle 등, 2021)는 여기에 출력 크로스 어텐션 단계를 더한다. 과제별 출력 쿼리가 잠재 배열에 크로스 어텐션해 원하는 모양의 구조화된 출력을 만든다. 그래서 입력과 출력을 벡터 배열로 표현할 수 있는 과제라면 분류, 분할, 광학 흐름, 언어 모델링까지 범용 백본으로 쓸 수 있다.19

이 구조는 이후 설계에 영향을 주었다. Flamingo의 Perceiver Resampler는 같은 원리로, 고정된 학습 잠재 질의가 가변 길이 시각 특징에 크로스 어텐션해 입력 해상도와 무관하게 고정 크기의 시각 토큰을 만든다. BLIP-2의 Q-Former도 같은 패턴을 따른다. 두 구조 모두 Perceiver의 입력 크로스 어텐션의 직계 후손으로 볼 수 있다.

9. 검색 증강 생성에서의 활용

크로스 어텐션은 외부에서 검색한 문서를 생성 과정에 넣어야 하는 여러 검색 증강 생성(RAG) 구조의 핵심 메커니즘이다.

Lewis 등(2020)이 제안한 RAG 틀은 밀집 단락 검색기와 사전 학습된 시퀀스-투-시퀀스 모델 BART를 결합했다. 입력 질의가 들어오면 검색기가 밀집 벡터 색인에서 상위 K개의 관련 위키백과 단락을 가져온다. 이후 시퀀스-투-시퀀스 모델은 질의와 함께 검색된 단락을 조건으로 답을 생성한다. 검색된 근거가 디코더로 흘러드는 통로가 바로 크로스 어텐션이다.

논문은 두 가지 변형을 탐구했다. RAG-Sequence는 단일 검색 문서가 전체 출력을 책임진다고 가정하고, RAG-Token은 생성되는 각 토큰이 서로 다른 문서에 주목할 수 있게 한다. 두 방식 모두 디코더에서 검색 문서에 대한 주변화(marginalization)로 구현된다.20

RAG는 발표 당시 세 개의 개방형 질의응답 벤치마크에서 최고 성능을 기록했다. 또한 사실 기반 과제에서 대규모 언어 모델을 쓸 때 지금 널리 쓰이는 검색 증강 패러다임을 정립하는 데 기여했다.

9.1. Fusion-in-Decoder(FiD)

Fusion-in-Decoder(Izacard and Grave, 2021)는 T5를 기반으로 한 검색 증강 모델로, 크로스 어텐션을 핵심 융합 메커니즘으로 쓴다. FiD에서는 검색된 각 단락을 T5 인코더가 독립적으로 인코딩한다. 모든 검색 단락의 인코더 출력을 이어 붙여 T5 디코더로 넘기면, 디코더는 크로스 어텐션을 통해 인코딩된 모든 단락을 함께 본다. 이 설계로 디코더는 여러 검색 문서에 흩어진 관련 정보를 찾아 종합할 수 있다.21

FiD의 크로스 어텐션 가중치는 학습된 관련도 점수 역할을 하며, 모델은 생성 중 가장 정보량이 많은 단락에 주목하도록 학습된다. 연구자들은 이 어텐션 점수를 단락 수준 중요도 계산에 써서 근거 선택 같은 후속 과제에 활용해 왔다. FiD는 확장성도 좋다. 단락을 독립적으로 인코딩하는 작업은 병렬화할 수 있고, 디코더 크로스 어텐션이 단락 간 상호작용을 거의 한 곳에 모은다. 후속 연구인 FiDO는 디코더의 몇 개 층마다만 크로스 어텐션을 적용해 추론 실행 비용을 더 줄였는데, 이를 계층 희소 어텐션(layer-sparse attention)이라 부른다.

9.2. RETRO

Borgeaud 등(2022, DeepMind)의 Retrieval-Enhanced Transformer(RETRO)는 검색한 텍스트를 언어 모델 예측에 넣는 청크 단위 크로스 어텐션 메커니즘을 도입했다. RETRO는 입력을 청크로 나누고, 각 청크마다 수조 개 토큰 규모의 데이터베이스에서 가장 가까운 이웃을 검색한다. 검색된 이웃은 인코더로 처리되고, 그 표현은 일반 셀프 어텐션과 번갈아 끼워진 전용 청크 크로스 어텐션 층을 통해 본 모델에 통합된다. 이 방식의 시간 복잡도는 검색된 데이터량에 선형이다.

RETRO는 75억 매개변수 모델이 Pile 데이터셋에서 GPT-3(175B)과 맞먹는 성능을 내게 했으며, 매개변수는 약 25배 적게 썼다.22

이 사례들은 크로스 어텐션이 생성 모델에 외부 검색 정보를 조건으로 넣는 자연스럽고 효과적인 접점임을 보여 준다. 문서 말뭉치, 지식 베이스, 기타 구조화된 데이터 원천 어디에서 온 정보든 같은 방식이 적용된다. 오늘날 실무의 RAG 파이프라인은 검색 결과를 프롬프트 수준에서 LLM 입력 창에 이어 붙이는 방식을 많이 쓴다. 하지만 충분한 학습 데이터가 있을 때는 크로스 어텐션 기반 구조가 여전히 영향력이 크고, 프롬프트만 쓰는 방식보다 성능이 나은 경우가 많다.

10. 계산 비용과 효율화

크로스 어텐션의 계산 비용은 두 시퀀스의 길이에 따라 정해진다. 쿼리 시퀀스가 n_q 토큰이고 키와 값 시퀀스가 n_kv 토큰이면, 어텐션 계산은 O(n_q n_kv d) 연산이 필요하다. 여기서 d는 임베딩 차원이다.

기계 번역을 위한 표준 인코더-디코더 트랜스포머에서는 두 시퀀스 길이가 대개 비슷해서 크로스 어텐션 비용이 셀프 어텐션과 비슷하다. 하지만 최근 응용에서는 두 시퀀스 크기가 크게 다를 수 있다. 확산 모델에서는 공간 특징 맵이 수천 위치인 반면 텍스트 프롬프트는 수십 토큰뿐이다. Perceiver에서는 입력이 수만 개 원소인 반면 잠재 배열은 수백 개에 그친다. FiD 같은 검색 증강 시스템에서는 연결된 인코더 출력이 수천 토큰을 넘는 반면 디코더는 수백 토큰만 생성한다.

인코더-디코더 모델에서 크로스 어텐션의 유용한 효율 특성은, 인코더 쪽 키와 값을 미리 계산해 캐시할 수 있다는 점이다. 인코더는 원본 시퀀스에 대해 한 번 실행되어 H_B를 만들고, K = H_B W^K와 V = H_B W^V는 한 번 계산되어 모든 디코딩 단계에서 재사용된다. 매 단계마다 다시 계산하는 것은 커지는 디코더 표현에서 온 쿼리 쪽뿐이다. 이는 인코더-디코더 구조가 다른 설계보다 갖는 가장 큰 실용적 이점 중 하나다. 반면 디코더 셀프 어텐션은 생성 단계마다 K와 V 캐시를 토큰 하나씩 늘려야 하지만, 그 캐시도 단계 사이에서 재사용될 수 있다.

모델 해상도와 시퀀스 길이가 늘면서 일부 응용에서는 크로스 어텐션이 눈에 띄는 계산 병목이 되었다. 텍스트-이미지 확산 모델에서는 공간 특징 맵이 커지는 고해상도에서 크로스 어텐션이 전체 추론 지연의 상당 부분을 차지할 수 있다. 검색 증강 시스템에서는 연결된 인코더 출력이 쉽게 수만 토큰을 넘는다. 이렇게 긴 키-값 시퀀스에 대한 크로스 어텐션은 계산과 메모리 모두에서 비용이 크다.

크로스 어텐션의 비용을 줄이기 위한 여러 방법이 개발되었다.

크로스 어텐션 비용 절감 기법 비교
기법설명대표 절감 효과
희소 크로스 어텐션고정 패턴, 라우팅, 군집화에 따라 선택한 토큰 부분집합에만 어텐션을 계산메모리 40~60% 절감
계층 희소 크로스 어텐션(LSA)모든 디코더 층이 아니라 일부 층에서만 크로스 어텐션 적용(FiDO 방식)디코더 추론 비용을 크게 줄임
다중 쿼리 어텐션(MQA)모든 헤드가 키와 값 투영을 공유하고 쿼리 투영은 따로 유지KV 메모리 최대 75% 절감
그룹 쿼리 어텐션(GQA)다중 헤드와 MQA의 절충으로, 소규모 헤드 그룹끼리 키와 값을 공유품질 저하가 적으면서 메모리 상당 절감
캐시 공유비슷한 크로스 어텐션 층끼리 계산된 키-값 캐시를 재사용중복 계산 감소
FlashAttention타일링과 재계산을 써서 메모리 효율이 높은 정확한 어텐션 계산근사 없이 2~4배 속도 향상
크로스 어텐션 가지치기수렴 후 중복되는 크로스 어텐션 층을 찾아 제거확산 모델 추론 비용 감소
KV 캐시 재사용인코더의 K와 V를 한 번 계산해 모든 디코더 단계에서 재사용단계마다의 인코더 비용 제거

Stable Diffusion 연구에서는 크로스 어텐션 출력이 추론 실행의 몇 단계 뒤에 고정점으로 수렴한다는 것이 확인되었다. 이 관찰을 바탕으로 이후 잡음 제거 단계에서는 크로스 어텐션 계산을 건너뛰는 방법이 나왔고, 이미지 품질 저하 없이 상당한 추론 실행 속도 향상을 얻었다. FlashAttention은 원래 셀프 어텐션용으로 개발되었지만, 고대역폭 메모리에 전체 (n_q, n_kv) 점수 행렬을 만들지 않으므로 크로스 어텐션도 빠르게 만든다.

11. 주요 변형

표준 다중 헤드 형식 외에도 특정 응용을 위한 크로스 어텐션 변형이 여러 개 개발되었다.

게이트 크로스 어텐션은 크로스 어텐션으로 얻은 정보를 주 표현에 얼마나 섞을지 조절하는 학습된 게이트를 더한다. 사전 학습된 모델에 크로스 어텐션을 추가할 때 특히 유용하다. 게이트를 0으로 초기화하면 처음에는 크로스 어텐션이 영향을 주지 않다가, 점차 새 정보원을 받아들이도록 학습된다. Flamingo의 게이트 크로스 어텐션이 대표 예다. 각 층의 출력은 학습된 스칼라 α에 대해 tanh(α)를 곱하며, α는 0으로 초기화된다. 이로써 사전 학습된 언어 모델의 동작이 초기화 시점에 보존되고, 시각 정보는 학습 중 점진적으로 들어온다. 이후 많은 시각-언어 모델이 고정된 백본에 새 모달리티를 붙일 때 같은 기법을 썼다.4

RETRO 구조에서 쓰는 청크 크로스 어텐션은 입력 시퀀스를 고정 크기 청크로 나누고, 각 청크를 대응하는 검색 이웃과만 독립적으로 크로스 어텐션한다. 계산 비용을 줄이고 크로스 어텐션을 국소화해 아주 긴 시퀀스를 다루게 한다. 또 입력 청크와 검색된 근거 사이의 의존 구조를 명시해, 어떤 검색 단락이 출력의 어느 부분에 영향을 줬는지 분석하기 쉽게 한다.22

일부 구조는 디코더 은닉 상태에서 쿼리를 만드는 대신 고정된 학습 쿼리 벡터 집합을 쓴다. Perceiver의 잠재 배열, Flamingo의 Perceiver Resampler, BLIP-2의 Q-Former가 이 방식이다. 학습된 쿼리가 입력에 크로스 어텐션하면서, 입력 내용과 무관하게 가장 관련 있는 정보를 뽑는 법을 배운다. 이렇게 하면 출력 크기가 입력 크기와 분리되고, 길이가 얼마든 입력을 고정 개수의 토큰으로 압축하는 유연한 정보 병목이 생긴다.13,18

표준 크로스 어텐션은 단방향이다. 정보가 키와 값에서 쿼리로만 흐른다. BiXT(2024)에서 쓰인 양방향 크로스 어텐션은 두 방향으로 정보가 동시에 흐르게 해, Perceiver류 구조의 반복적 병목을 다룬다. 같은 구조적 패턴이 Stable Diffusion 3와 FLUX.1의 MMDiT에도 나타나는데, 텍스트와 이미지 토큰이 짝지어진 투영을 통해 서로 주목한다. 분리형 크로스 어텐션은 Stable Diffusion용 IP-Adapter에서 쓰이며, 크로스 어텐션을 서로 다른 조건 출처(예: 텍스트와 함께 쓰는 이미지 임베딩)별 구성 요소로 나눈다. 덕분에 기본 모델을 재학습하지 않고도 이미지로 프롬프트하는 생성이 가능하다.

12. 다른 결합 방식과의 비교

크로스 어텐션은 두 시퀀스의 정보를 합치는 유일한 방법이 아니다. 몇 가지 대안이 있으며, 각각 장단점이 다르다.

융합 방식 비교
방식작동 방식장점단점
크로스 어텐션한 시퀀스의 쿼리가 다른 시퀀스의 키와 값에 주목토큰 단위의 세밀한 정렬, 학습 가능한 관련도O(n_q n_kv) 복잡도, 매개변수 추가
연결 후 셀프 어텐션두 시퀀스를 하나로 이어 붙여 셀프 어텐션 적용단순함, 추가 매개변수 없음, 기존 층 재사용결합 길이에 대해 이차적이고, 출처 구분이 명시적이지 않음
선형 투영한 모달리티를 다른 모달리티의 임베딩 공간으로 투영매우 단순하고 추가 매개변수가 최소동적 정렬이 없고 융합이 거침
FiLM 조건화조건 입력에서 유도한 학습된 아핀 변환으로 특징을 스케일과 시프트가볍고 전역 조건화에 좋음공간이나 토큰 단위 정렬이 없음
가산 융합정렬된 표현을 원소별로 더함계산이 저렴함미리 정렬된 표현이 필요함
adaLN / adaLN-Zero조건에 따라 적응형 층 정규화의 스케일과 시프트를 조절저렴하고 클래스 라벨 조건화에 잘 맞음단일 조건 벡터만 다루어 순차적 조건에는 약함
하이퍼네트워크 조건화조건 입력이 다른 네트워크의 가중치를 생성최대한 유연함계산이 무겁고 학습이 어려움

방식 선택은 과제 요구에 달려 있다. 두 시퀀스 사이의 세밀하고 위치별인 정렬이 필요하면 크로스 어텐션이 강하다. 그래서 번역, 확산 모델, 검색 증강 생성에서 주로 쓰인다. 정렬이 덜 중요하거나 계산 예산이 빠듯하면 투영이나 연결 같은 단순한 방식으로 충분할 수 있다. 현재 시각-언어 생태계는 크로스 어텐션 기반 설계(Flamingo, BLIP-2, Qwen-VL)와 연결 기반 설계(LLaVA, IDEFICS-2)로 나뉘어 있으며, 모든 용도에 최선인 방식에 대한 합의는 없다.

13. 디코더 전용 LLM에 크로스 어텐션이 없는 이유

GPT-4, Claude, Llama, Gemini, DeepSeek 등 가장 널리 쓰이는 현대 대규모 언어 모델은 디코더 전용 모델이며 크로스 어텐션 층이 없다. 인과 셀프 어텐션만 쓴다. 원래 트랜스포머가 설계의 중심에 크로스 어텐션을 둔 것과 뚜렷이 대비되는 모습이다.

디코더 전용 구조는 더 단순하다. 모든 입력을 하나의 시퀀스로 다루므로 다음 토큰 예측 같은 사전 학습 목표가 균일해진다. 표준 스케일링 법칙에 따라 예측 가능하게 확장되며, 인코딩과 생성에 같은 셀프 어텐션 층을 재사용하므로 학습과 서빙 인프라도 단순해진다. 조건 입력은 별도 인코더가 아니라 프롬프트에 넣고, 관련 관계는 모델의 셀프 어텐션이 찾아낸다.

크로스 어텐션을 쓰는 인코더-디코더 모델도 입력과 출력의 구조가 뚜렷이 다른 과제에서는 여전히 좋은 성능을 낸다. 기계 번역, 요약, 문법 오류 교정이 그렇다. T5, BART, mT5, Whisper는 크로스 어텐션을 유지하며 널리 쓰이는 인코더-디코더 모델이다. 따라서 디코더 전용 구조의 지배는 크로스 어텐션이 본질적으로 열등해서라기보다 실무적 공학 선택과 규모 고려를 반영한 결과에 가깝다. 멀티모달 모델에서는 MMDiT나 분리형 크로스 어텐션 어댑터처럼 새로운 형태로 크로스 어텐션이 다시 나타나고 있다.

14. 코드로 구현하는 방법

대부분의 딥러닝 프레임워크는 셀프 어텐션에 쓰는 다중 헤드 어텐션 모듈로 크로스 어텐션을 제공한다. PyTorch의 표준 인터페이스는 torch.nn.MultiheadAttention(embed_dim, num_heads)이고 forward(query, key, value)를 호출한다. 세 입력이 같은 텐서이면 셀프 어텐션을, query가 key와 value와 다르면 크로스 어텐션을 계산한다. 전형적인 디코더 블록은 다음과 같다.

# 셀프 어텐션 부분층(인과 마스크)
self_out, _ = self.self_attn(query=h, key=h, value=h, attn_mask=causal_mask)
h = self.norm1(h + self_out)

# 크로스 어텐션 부분층
cross_out, _ = self.cross_attn(query=h, key=enc_out, value=enc_out, key_padding_mask=enc_mask)
h = self.norm2(h + cross_out)

# 피드포워드 부분층
h = self.norm3(h + self.ffn(h))
디코더 블록 구현 예시

Hugging Face Transformers 라이브러리는 T5ForConditionalGeneration, BartForConditionalGeneration, WhisperForConditionalGeneration 같은 인코더-디코더 모델 클래스 안에 크로스 어텐션을 구현해 제공한다. 크로스 어텐션 KV 캐시는 past_key_values 인자로 노출되며, 생성 중 자동으로 채워지고 재사용된다. 확산 모델에서는 Diffusers 같은 프레임워크가 CrossAttention(또는 동등한 AttnProcessor)로 크로스 어텐션을 제공하며, 조건 입력은 encoder_hidden_states로 전달된다.

15. 해석 가능성

크로스 어텐션은 명시적인 (n_q, n_kv) 가중치 행렬을 만들기 때문에 현대 트랜스포머 구조에서 해석하기 쉬운 구성 요소에 속한다. 기계 번역에서 크로스 어텐션 맵은 단어 정렬에 가까우며, 이중언어 사전을 추출하거나 번역 오류를 디버깅하는 데 쓰였다. Whisper에서는 크로스 어텐션의 시간 정렬이 단어 단위 타임스탬프를 가능하게 했고, 스트리밍 추론 시스템에도 활용되었다. Stable Diffusion에서는 크로스 어텐션 맵을 이미지 위의 히트맵으로 시각화해 각 프롬프트 단어가 어디에 주목하는지 보여 주었다. 이 정보는 프롬프트 간 편집, 어텐션 슬라이싱, 어텐션 기반 분할 같은 기법의 바탕이 되었다.23

어텐션 가중치가 모델 행동의 완전한 설명은 아니다. 두 헤드가 같은 위치에 주목하더라도 읽는 값을 다르게 투영하면 출력이 크게 달라질 수 있다. 여러 논문은 어텐션이 설명으로서 항상 충실하지는 않다는 것을 보여 주었다. 그래도 크로스 어텐션 맵은 피드포워드 층의 조밀한 가중치 행렬보다 훨씬 해석하기 쉬우며, 연구와 디버깅에 여전히 유용한 도구다.

16. 발전 과정

시퀀스에서 다른 시퀀스로 주목하는 개념은 트랜스포머보다 앞선다. Bahdanau 어텐션은 2014년 RNN 기반 시퀀스-투-시퀀스 모델에서 인코더와 디코더 상태 사이의 소프트 정렬을 학습하는 아이디어를 도입했다. 다음 해 Luong 어텐션은 더 단순한 점수 함수를 제안했다. End-to-end 메모리 네트워크는 같은 연산을 외부 메모리에 대한 소프트 주소 지정으로 정의했고, Show, Attend and Tell은 어텐션을 이미지로 확장했다. 이 초기 메커니즘들은 본질적으로 트랜스포머 표현이 아니라 순환 또는 합성곱 표현에 적용된 크로스 어텐션의 형태다.2,5,6,7

트랜스포머의 기여는 교차 시퀀스 어텐션을 쿼리-키-값 틀로 다시 짜고, 다중 헤드 병렬성과 결합해, 재귀를 완전히 없앤 전면 어텐션 구조에 넣은 것이다. 이로써 크로스 어텐션은 더 표현력이 높고 효율적이 되었다. 이후 흐름은 모달리티를 넘나드는 일반화다. NMT의 인코더-디코더 패턴은 요약, 음성 인식, 이미지 캡셔닝으로 확장되었고, 이어서 텍스트 조건 확산 모델, 비전 언어 모델, 검색 증강 시스템으로 옮겨 갔다.3

가장 최근의 흐름은 다소 뜻밖이다. 현대 AI의 지배적 패러다임인 디코더 전용 대규모 언어 모델은 크로스 어텐션을 쓰지 않는다. 조건화는 프롬프트 연결과 셀프 어텐션으로 전부 처리한다. 동시에 크로스 어텐션은 확산 모델, 효율적인 멀티모달 어댑터, 검색 증강 구조, 번역과 음성 인식용 인코더-디코더 시스템에서 여전히 필수다. 이 메커니즘을 어떤 단일 구조의 대표 기능이라고 하기는 어렵지만, 두 표현을 맞닿게 해야 할 때 설계자가 손에 드는 유연한 구성 요소로 자리 잡았다.

출처 23개
  1. AI Wiki: Cross-attention (2026-06-21 수정본) aiwiki.ai · CC BY 4.0 · 확인 2026-10-17
  2. Neural Machine Translation by Jointly Learning to Align and Translate arxiv.org · 확인 2026-10-18
  3. Attention Is All You Need arxiv.org · 확인 2026-10-18
  4. Flamingo: a Visual Language Model for Few-Shot Learning arxiv.org · 확인 2026-10-18
  5. Effective Approaches to Attention-based Neural Machine Translation arxiv.org · 확인 2026-10-18
  6. End-To-End Memory Networks arxiv.org · 확인 2026-10-18
  7. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention arxiv.org · 확인 2026-10-18
  8. High-Resolution Image Synthesis with Latent Diffusion Models arxiv.org · 확인 2026-10-18
  9. Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding arxiv.org · 확인 2026-10-18
  10. Hierarchical Text-Conditional Image Generation with CLIP Latents arxiv.org · 확인 2026-10-18
  11. Scalable Diffusion Models with Transformers arxiv.org · 확인 2026-10-18
  12. Scaling Rectified Flow Transformers for High-Resolution Image Synthesis arxiv.org · 확인 2026-10-18
  13. BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models arxiv.org · 확인 2026-10-18
  14. Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond arxiv.org · 확인 2026-10-18
  15. What matters when building vision-language models? arxiv.org · 확인 2026-10-18
  16. Robust Speech Recognition via Large-Scale Weak Supervision arxiv.org · 확인 2026-10-18
  17. Listen, Attend and Spell: A Neural Network that Learns to Read arxiv.org · 확인 2026-10-18
  18. Perceiver: General Perception with Iterative Attention arxiv.org · 확인 2026-10-18
  19. Perceiver IO: A General Architecture for Structured Inputs & Outputs arxiv.org · 확인 2026-10-18
  20. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks arxiv.org · 확인 2026-10-18
  21. Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering arxiv.org · 확인 2026-10-18
  22. Improving Language Models by Retrieving from Trillions of Tokens arxiv.org · 확인 2026-10-18
  23. Prompt-to-Prompt Image Editing with Cross Attention Control arxiv.org · 확인 2026-10-18