교차 어텐션
어텐션 attention
- 어텐션: 여러 정보 중 현재 처리에 필요한 정보를 선택하여 결합하는 방법
- 모든 정보를 같은 비중으로 사용하는 대신, 관련성이 높은 정보에 큰 가중치를 부여
- 쿼리(Query), 키(Key), 밸류(Value)를 사용
- 쿼리: 지금 필요한 정보를 찾기 위한 요청
- 키: 각 정보가 무엇과 관련되는지 비교하기 위한 표지
- 밸류: 선택되었을 때 실제로 가져올 내용
- 검색에 비유하면 쿼리는 검색어, 키는 자료의 색인, 밸류는 검색 결과의 본문에 해당. 쿼리와 각 키의 관련성을 계산한 뒤, 관련성이 높은 밸류를 더 많이 반영
셀프 어텐션과 교차 어텐션
| 구분 | 셀프 어텐션 self-attention | 교차 어텐션 cross-attention |
|---|---|---|
| 정보의 출처 | 하나 | 둘 |
| 쿼리 | 같은 입력에서 생성 | 한 입력에서 생성 |
| 키와 밸류 | 쿼리와 같은 입력에서 생성 | 다른 입력에서 생성 |
| 주요 역할 | 한 입력 내부의 관계 파악 | 서로 다른 두 입력의 관계 연결 |
- 셀프 어텐션: 문장 안의 단어끼리 또는 이미지 특징끼리 관계를 계산
- 교차 어텐션: 이미지와 텍스트처럼 서로 다른 정보 사이의 관계를 계산
텍스트와 이미지 특징의 연결
텍스트 조건부 이미지 생성에서는 프롬프트와 현재 이미지 특징이 서로 다른 형태를 가짐
- 텍스트 인코더: 프롬프트를 문맥이 반영된 토큰 임베딩으로 변환
- U-Net: 현재 역확산 단계의 잡음 이미지 또는 잠재 표현을 여러 해상도의 특징 맵으로 변환
- 교차 어텐션: 각 이미지 위치가 어떤 텍스트 토큰을 얼마나 참고할지 계산
Mermaid 다이어그램 원문
flowchart TD
prompt[프롬프트] --> encoder[텍스트 인코더] --> embedding[토큰 임베딩]
embedding --> key[키]
embedding --> value[밸류]
noise[잡음 이미지] --> unet[U-Net] --> image[이미지 특징] --> query[쿼리]
key --> attention[교차 어텐션]
value --> attention
query --> attention
attention --> output[텍스트가 반영된 이미지 특징]대화형 다이어그램을 불러오기 전에는 원문으로 표시됩니다.
U-Net에서의 쿼리, 키, 밸류
| 요소 | 출처 | 역할 |
|---|---|---|
| 쿼리 Q | U-Net의 이미지 특징 | 각 이미지 위치에 어떤 텍스트 정보가 필요한지 질문 |
| 키 K | 텍스트 토큰 임베딩 | 쿼리와 각 토큰의 관련성을 계산 |
| 밸류 V | 텍스트 토큰 임베딩 | 관련성에 따라 이미지 특징에 전달할 의미 정보 |
예를 들어 프롬프트가 빨간 사과가 나무 탁자 위에 놓여 있다라면 이미지의 위치마다 참고하는 토큰의 비중이 달라질 수 있음
- 사과가 형성되는 위치:
빨간,사과토큰의 정보를 더 많이 반영 - 배경 위치:
나무,탁자토큰의 정보를 더 많이 반영 - 관계 표현:
위에같은 토큰을 통해 사물 배치에 관한 정보를 반영
단, 실제 어텐션 가중치가 위의 설명과 같이 사람의 해석과 항상 정확히 일치하게 작동하는 것은 아님
수식으로 보는 교차 어텐션
어텐션 계산
쿼리와 키의 내적으로 관련성 점수를 계산하고, 소프트맥스로 각 밸류의 가중치를 구함
Attention(Q,K,V)=softmax(dkQK⊤)V- QK⊤: 각 이미지 위치와 각 텍스트 토큰의 관련성 점수
- dk: 벡터 차원이 커질 때 내적값이 지나치게 커지는 것을 완화
- 소프트맥스: 토큰별 점수를 합이 1인 가중치로 변환
- 가중합: 관련성이 높은 토큰의 밸류를 더 많이 반영
텐서의 형태
이미지 특징의 공간 위치 수를 N, 텍스트 토큰 수를 M이라고 하면 다음과 같이 표현 가능
| 텐서 | 형태 | 의미 |
|---|---|---|
| Q | N×dk | 이미지 위치별 쿼리 |
| K | M×dk | 텍스트 토큰별 키 |
| V | M×dv | 텍스트 토큰별 밸류 |
| 어텐션 가중치 | N×M | 각 이미지 위치가 각 토큰을 참고하는 비중 |
| 출력 | N×dv | 텍스트 정보가 반영된 이미지 위치별 특징 |
다중 헤드 교차 어텐션
다중 헤드 어텐션은 서로 다른 투영 공간에서 교차 어텐션을 여러 번 계산한 뒤 결과를 결합. 각 헤드는 사물, 속성, 질감, 관계처럼 서로 다른 연결 패턴을 학습할 수 있음
퀴즈
셀프 어텐션과 교차 어텐션을 구분하는 핵심 기준은 무엇입니까?
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.