logo

교차 어텐션

어텐션 attention

  • 어텐션: 여러 정보 중 현재 처리에 필요한 정보를 선택하여 결합하는 방법
  • 모든 정보를 같은 비중으로 사용하는 대신, 관련성이 높은 정보에 큰 가중치를 부여
  • 쿼리(Query), 키(Key), 밸류(Value)를 사용
    • 쿼리: 지금 필요한 정보를 찾기 위한 요청
    • 키: 각 정보가 무엇과 관련되는지 비교하기 위한 표지
    • 밸류: 선택되었을 때 실제로 가져올 내용

검색에 비유하면 쿼리는 검색어, 키는 자료의 색인, 밸류는 검색 결과의 본문에 해당. 쿼리와 각 키의 관련성을 계산한 뒤, 관련성이 높은 밸류를 더 많이 반영

셀프 어텐션과 교차 어텐션

구분 셀프 어텐션 self-attention 교차 어텐션 cross-attention
정보의 출처 하나
쿼리 같은 입력에서 생성 한 입력에서 생성
키와 밸류 쿼리와 같은 입력에서 생성 다른 입력에서 생성
주요 역할 한 입력 내부의 관계 파악 서로 다른 두 입력의 관계 연결
  • 셀프 어텐션: 문장 안의 단어끼리 또는 이미지 특징끼리 관계를 계산
  • 교차 어텐션: 이미지와 텍스트처럼 서로 다른 정보 사이의 관계를 계산

교차 어텐션은 두 입력을 단순히 더하는 방식이 아님. 한쪽 입력의 각 위치가 다른 쪽 입력에서 필요한 정보를 선택하도록 학습

텍스트와 이미지 특징의 연결

텍스트 조건부 이미지 생성에서는 프롬프트와 현재 이미지 특징이 서로 다른 형태를 가짐

  • 텍스트 인코더: 프롬프트를 문맥이 반영된 토큰 임베딩으로 변환
  • U-Net: 현재 역확산 단계의 잡음 이미지 또는 잠재 표현을 여러 해상도의 특징 맵으로 변환
  • 교차 어텐션: 각 이미지 위치가 어떤 텍스트 토큰을 얼마나 참고할지 계산
프롬프트 → 텍스트 인코더 → 토큰 임베딩 ──→ 키·밸류
                                             ↓
잡음 이미지 → U-Net → 이미지 특징 ─────────→ 쿼리
                                             ↓
                                      교차 어텐션
                                             ↓
                                텍스트가 반영된 이미지 특징

U-Net에서의 쿼리, 키, 밸류

요소 출처 역할
쿼리 Q U-Net의 이미지 특징 각 이미지 위치에 어떤 텍스트 정보가 필요한지 질문
K 텍스트 토큰 임베딩 쿼리와 각 토큰의 관련성을 계산
밸류 V 텍스트 토큰 임베딩 관련성에 따라 이미지 특징에 전달할 의미 정보

예를 들어 프롬프트가 빨간 사과가 나무 탁자 위에 놓여 있다라면 이미지의 위치마다 참고하는 토큰의 비중이 달라질 수 있음

  • 사과가 형성되는 위치: 빨간, 사과 토큰의 정보를 더 많이 반영
  • 배경 위치: 나무, 탁자 토큰의 정보를 더 많이 반영
  • 관계 표현: 위에 같은 토큰을 통해 사물 배치에 관한 정보를 반영

이 설명은 교차 어텐션의 작동 원리를 이해하기 위한 직관. 실제 어텐션 가중치가 사람의 해석과 항상 정확히 일치하는 것은 아님

교차 어텐션의 처리 과정

  1. 프롬프트를 여러 텍스트 토큰으로 분리
  2. 텍스트 인코더로 각 토큰의 문맥적 임베딩을 생성
  3. U-Net의 이미지 특징을 공간 위치별 표현으로 펼침
  4. 이미지 특징에서 쿼리를, 텍스트 임베딩에서 키와 밸류를 생성
  5. 각 이미지 위치와 각 텍스트 토큰의 관련성을 계산
  6. 관련성에 따라 텍스트 정보를 가중합
  7. 가중합한 텍스트 정보를 이미지 특징에 결합

이 과정은 U-Net의 여러 해상도와 여러 역확산 단계에서 반복될 수 있음. 넓은 범위의 특징에서는 전체 구도와 큰 사물에, 세밀한 특징에서는 질감과 국소적인 묘사에 텍스트 조건이 반영될 수 있음

텍스트 인코더와 교차 어텐션의 차이

구성 요소 역할
텍스트 인코더 프롬프트의 토큰을 문맥이 반영된 임베딩으로 변환
교차 어텐션 텍스트 임베딩에서 현재 이미지 위치에 필요한 정보를 선택
U-Net 선택된 텍스트 조건을 반영하여 현재 단계의 잡음을 예측

텍스트 인코더만으로는 이미지의 어느 위치에 어떤 단어를 반영할지 결정할 수 없음. 교차 어텐션이 텍스트 표현과 이미지 특징 사이의 연결을 담당

수식으로 보는 교차 어텐션

어텐션 계산

쿼리와 키의 내적으로 관련성 점수를 계산하고, 소프트맥스로 각 밸류의 가중치를 구함

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 텍스트 정보가 반영된 이미지 위치별 특징

다중 헤드 교차 어텐션

다중 헤드 어텐션은 서로 다른 투영 공간에서 교차 어텐션을 여러 번 계산한 뒤 결과를 결합. 각 헤드는 사물, 속성, 질감, 관계처럼 서로 다른 연결 패턴을 학습할 수 있음

퀴즈

문제 1 / 4맞음: 0힌트: 0틀림: 0채점중: 0남음: 4

셀프 어텐션과 교차 어텐션을 구분하는 핵심 기준은 무엇입니까?

  • 쿼리와 키·밸류가 같은 정보에서 오는지 서로 다른 정보에서 오는지
  • 어텐션을 계산할 때 이미지의 해상도를 항상 절반으로 줄이는지
  • 소프트맥스 대신 합성곱만 사용하는지
  • 입력 데이터에 정답 레이블이 포함되어 있는지

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.

Previous
U-Net