0. Attention에 대한 간단한 정리
- 어떠한 token sequence가 존재할때, 각각의 token이 "다른 tokens 중 무엇을 얼마나 참고할지"를 계산하는 연산이 attention이다.
- 기본 구성 요소
- 핵심 연산 ( Scaled Dot-Product Attention )
- softmax는 점수를 확률처럼 만들어서 가중치로 사용한다.
- softmax안의 수식은 “점수” 이다. (토큰 i가 토큰 j를 얼마나 참고할지)
- 마지막에 V를 가중합해서 “참고 결과”를 만든다
- 직관적으로, 각각의 token은 "내 질문Q"에 가장 잘 맞는 "주소 K"를 가진 tokens를 골라서, 해당 tokens의 "내용 V"를 섞어서 새로운 표현을 만든다.
1. self-attention
- self-attention은 Q K V가 모두 같은 token집합에서 나온다.
- 만약 입력이 X하나라면...
즉, 토큰들이 서로 같은 집단 내부에서 서로를 참고한다.
- 직관적으로, 문장이라면... 단어들이 문장 안의 다른 단어를 참고
이미지 토큰이라면, 패치들이 같은 프레임 안의 다른 패치를 참고
- Navigation World Models의 CDiT에서 self-attention은 "미래 프레임(denoise대상)" 토큰들을 X_target이라 한다면, self-attn을 X_target내부에서만 하게 제안한다... ( 목적은 target frame안에서 공간적/구조적 관계를 정리 )
2. Cross-Attention
- cross-attention은 Q는 하나의 token집합에서, K와 V는 다른 token집합에서 나온다.
- 직관적으로
- 번역(encoder-decoder)에서: 디코더(출력)가 인코더(입력 문장)를 참고
- 비디오에서: 현재 프레임이 과거 프레임(컨텍스트)을 참고
- Navigation World Models의 CDiT에서 cross-attention의 의미는 아래와 같다.....
- 미래 프레임을 복원할 때, 과거 프레임에서 “어떤 정보(랜드마크, 방향, 구조)”를 가져와야 하는지를 cross-attention이 담당
3. Multi-Head Attention
- Multi-head attention은 attention을 여러 개 head로 병렬로 계산한 뒤 합치는 구조다.
- (중요: multi-head는 self/cross의 “종류”가 아니라, 그 attention을 여러 개로 쪼개는 방식)
- head 개수를 h라고 한다면....
- 그리고 각 head의 출력들은 아래와 같다.
- W_O는 concat한거를 선형가중치로 투영하는 것
- concat만 하면 head 결과가 그냥 “옆으로 붙어있는” 상태라서 head들 사이 정보가 잘 섞이지 않는다.
- W_O는 head들의 채널을 섞어서(선형 결합) 모델이 다음 레이어에서 쓰기 좋은 표현으로 바꿔준다.
- 비유하자면....
concat: “12명이 각자 메모한 걸 한 장에 붙여놓기”
W_O: “그 메모들을 한 번 정리/편집해서 최종 보고서로 만들기(선형 조합)”
- 직관
- 하나의 attention만 쓰면 “참고하는 기준”이 하나인데,
head를 여러 개 두면...
- 어떤 head는 코너/윤곽
- 다른 head는 특정 물체/랜드마크
- 또 다른 head는 원근/방향 변화
같이 서로 다른 관계를 동시에 학습하기 쉬워진다.