본문 바로가기

dev_AI_framework

attention, transformer layer 구현하기 - Attention, transformer 란?

1. 수학적/연산적 장점

  • 병렬화 가능 - RNN 은 순서대로 토큰을 처리해야 해서 GPU 병렬화가 안 됨, Attention 은 QK^T 연산으로 한 번에 시퀀스 전체 계산
  • 동적 수용 범위 Dynamic receptive field - CNN 은 커널 크기 제한, RNN 은 가까운 시점 위주, Attention 은 softmax 로 모든 위치끼리 직접 연결 - 문맥 길이가 길어져도 멀리 있는 토큰을 참조 가능
  • 정보 흐름의 단축 경로 - RNN 의 경우 1 - 100 토근의 연결에서 99번 state 를 거쳐야 하지만, Attention 은 한 번의 QK^T 로 직접 연결, gradient vanishing/exploding 문제 완화

 

2. 표현력 Expressivity

  • 가중치 기반 관계 학습 - Attention 의 가중치 alpha_ij 는 i 번째 단어가 j 번째 단어를 얼마나 참조하는지라는 의미있는 해석을 가짐, 즉, 데이터의 구조적 의존성을 잘 드러냄
  • Multi-Head Attention - 하나의 Attention 만 두면 한 가지 관계만 집중, 여러 head 의 경우 병렬적으로 다양한 관계 추적 가능

 

3. 범용성 Modality Agnostic

  • Vision Transformer (ViT) - 이미지 패치를 시퀀스로 보고 Attention 적용
  • Audio/Video - 시퀀스 단위로 쪼개 Attention 적용
  • Diffusion 모델에서도 UNet 안에 Cross-Attention 넣어 조건부 이미지 생성

결국 Attention 은 순서 있는 벡터 집합 -> 문맥적 벡터 집합으로 변환하는 범용 함수, 다양한 데이터 적용 가능

 

4. 실전 성능과 스케일링 범칙

  • Scaling Law 친화적 - Transformer 는 모델 크기와 데이터 크기를 키우면 성능이 꾸준히 올라감
  • 단순 강력 - MHA + FFN + Residual + Norm 의 반복, 구조가 단순하면서 성능이 좋아, 대규모 학습에 유리

 

더보기

Attention - 입력 간의 가중치 기반 관계 추출 연산

 

1. 입력을 세 가지 공간으로 사영

  • 원래 입력 x (토큰 벡터들, shape : B T d ) 를 선형변환해서
    • Query Q = XW_Q
    • Key K = XW_K
    • Value V = XW_V
  • 각각 dimension d - d_k, d_v 로 매핑됨

 

2. Query-Key 유사도로 가중치 계산

  • 점수 행렬
    • scores = QK^T / root(d_k) - (Query 와 Key 내적 - 얼마나 강하게 참조할지 의미)
  • softmax 적용
    • alpha = softmax(scores) - 행마다 확률 분포 : 각 토큰이 다른 토큰에 주는 주의 비율

 

3. value 의 가중합으로 새로운 표현 생성

Attention(Q, K, V) = alpha V

즉, Query 기준으로 Key-Value 를 찾아 필요한 정보만 모아온 새로운 벡터를 만듦

 

즉, Attention 은 (Q, K) 로 만든 가중치 -> V 를 다시 조합 한느 하나의 네트워크 블록

 

Transforemer 는 그 Attention 블록을 중심으로 짜인 전체 신경망 아키텍쳐