AI/NLP (LLM)

Attention Is All You Need !

민사민서 2024. 11. 1. 01:58

https://arxiv.org/abs/1706.03762

 

Attention Is All You Need

The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new

arxiv.org

https://colab.research.google.com/github/happy-jihye/Natural-Language-Processing/blob/main/code/6_Attention_is_All_You_Need.ipynb#scrollTo=Pl32aWGThzhY

 

6 - Attention is All You Need

Run, share, and edit Python notebooks

colab.research.google.com

 

transformer를 처음 제시한 아주 대단한 논문... 이제야 읽어봅니다

 

기존까지의 dominant 시퀀스 변환 모델은 복잡한 recurrent/convolutional neural networks를 활용하는 RNN이나 CNN 기반이었음

=> recurrence와 convolution을 완전히 배제한 새로운 simple network architecture인 Transformer 등장 !

=> attention mechanism만을 이용해 시퀀스를 처리함

=> 병렬 처리가 가능해지고, 훈련 속도와 성능에서 큰 이점을 얻게 됨

 

Model Architecture

왼쪽이 encoder, 오른쪽이 decoder

 

encoder는 x=(x1, ... xn)을 동일한 dimension의 z=(z1, ... zn)으로 변환한다

z가 주어지면 (N=6 block 단위의 sublayer를 거친 output이 건네짐) decoder는 일련의 과정을 거쳐 y=(y1, ... , yn) 시퀀스 생성

each step은 auto-regressive하게 진행된다 = previously generated symbol들이 다음 generation에 input으로 추가로 더해짐

self-attention + fully connected layers 조합임 !!

 

cf) why auto-regressive?

이런 식으로 residual connection을 하면 모델의 안정성이 높아진다고 함

 

1. encoder

- stack of N=6 identical layers로 구성된다

- each layer는 multi-head self-attention mechanism + position-wise fully connected FFNfh rntjd

- residual connection (output of each sublayer = LayerNorm(x + sublayer(x)) // for stability?

- residual addition을 위해서 모든 sub-layer + embedding layer는 동일한 dimension을 output으로 내보내야겠지

 

2. decoder

- masked multi-head attention: 앞의 토큰과의 관계만 고려 (뒤의 토큰은 masking함, ensures that the predictions for position i can depend only on the known outputs at positions less than i)

- encoder의 two sublayer외에 세 번째 sub-layer가 도입됨 => encoder stack의 output을 활용한 multi-head attention

- 마찬가지로 masked multi-head attention + cross attention + FFW Network (+ Layer Normalization)

- residual connections을 위해 each sub-layer의 dimension 동일해야 함

 

so, what is attention function?

Q(query) + K(key) + V(value) 를 매핑하는 함수

Q, K, V는 일단 어떤 input(일단 쉽게 여러 word(token)으로 구성된 문장)을 layer등을 거쳐 조금씩 변형한 value라고 생각ㄱ

Q, K의 차원은 무조건 같아야 함, V는 별개의 차원을 가질 수 있음 (cross attention에서는 encoder의 출력[Q, K]과 decoder의 입력[V]의 차원이 서로 다를 수 있음)

 

single attention operation

- Q(dimention d_k*1)와 K(dimension d_k*1)의 dot product => d_k * d_k dimension의 matrix 형성되 ㄹ것

- scale (divide by sqrt(d_k)) = 내적 결과의 안정화

- softmax function 적용 => 각 토큰이 다른 토큰과 얼마나 관련있는지 probability 형태 (row 합 1) = weights on values

- 여기다 V(dimension d_k * 1) 곱하면 output vector의 dimension d_k*1 나옴 (유지)

 

multihead attention

- linearly project (queries, keys, values) h times

   * 입력 벡터를 서로 다른 feature subspace에 매핑하기 위해

- 그리고 attention function parallel하게 수행 => 각각은 d_v dimensional output value return

- concatenate된 후 한 번 더 linearly projected => final vector has same dimension with input 

    * h*d_v 차원의 벡터를 d_model 로 차원을 감소시키기 위해

=> 여러 개의 attention을 병렬로 계산해 서로 다른 표현학습을 가능케 하고, 최종적으로 이를 결합함

 

about position-wise feed-forward networks

consists of two linear transformations with a ReLU activation in between

 

positional encoding?

no recurrence and no convolution => model이 order of sequence를 인지하게 하기 위해 position info 제공 필요

=> 시퀀스의 순서를 인식하게 함 (각 단어의 위치 정보 제공)

 

기존 아키텍쳐와의 비교

 

 

그래서 transformer가 왜 중요한데?

엄청난 혁신

 

encoder 기반의 Bert

BERT는 Transformer의 encoder 구조만을 사용

다수의 encoder block으로 구성, 각 블록은 multihead self-attention + FFN로 이루어짐 (layer norm + residual connection)

 

학습 방식?

- Masked Language Model (MLM): 입력 문장에서 일부 단어를 무작위로 마스킹(숨김)하고, 모델이 문맥을 기반으로 마스킹된 단어를 예측

- Next Sentence Prediction (NSP): 두 문장이 주어졌을 때, 두 번째 문장이 첫 번째 문장의 다음 문장인지 여부를 예측하는 작업

 

decoder 기반의 GPT (Generative Pre-trained Transformer)

GPT는 Transformer의 decoder 구조만을 사용하는 언어 모델

다수의 decoder 블록으로 구성, 각 블록은 masked multihead self-attention + FFN으로 이루어짐 (encoder의 output 가지고 cross attention 하는 부분 빠짐)

입력 단어의 순서 보존 위해 positional encoding 적용

 

학습 방식?

Masked Self-Attention: GPT는 미래의 토큰을 마스킹하여 학습, 이를 통해 모델이 직전의 토큰들만 참조해 다음 단어를 예측

 

 

뿐만 아니라 cv에서도 널리 쓰이기 시작!

 

Vision Transformer (ViT)

이미지를 다루기 위해 Transformer 구조를 사용

이미지를 고정 크기의 패치로 나누고, 각 패치를 벡터로 변환해 입력 토큰으로 사용

패치들은 Transformer의 입력으로 들어가 Self-Attention 메커니즘을 통해 처리 => global context 파악

 

=> 추후 관련 글 작성하며 공부해볼 예정

 

Flamingo: Visual Language Model for Few-Shot Learning

멀티모달 학습 모델로, 텍스트와 이미지 데이터를 결합하여 학습 (VLM의 시초 느낌)

이미지 인코더는 이미지 피처를 추출하고, 이 피처는 cross attention을 통해 텍스트 데이터와 결합

frozen llm = LLM을 frozen 상태로 유지하며, 학습된 언어 지식을 이미지 정보와 연결하는 데 사용 (using cross attention)

 

=> 추후 관련 글 작성하며 공부해볼 예정

 

BLIP의 Q-Former

이미지 인코더와 텍스트 디코더(예: LLM) 사이의 modular difference 간극을 줄이기 위해 cross attention 사용

learnable한 Query 토큰을 생성하고, 이를 이미지 피처와 결합하여 Cross-Attention을 수행

image feature의 dimension이 어떻든간에 query token과의 cross attention 수행 시 query의 dimension이 output, 각 쿼리 토큰에 이미지 정보가 할당됨

이미지 정보가 적절하게 llm에 입력될 수 있도록 함

 

=> 추후 관련 글 작성하며 공부해볼 예정

 

Diffusion model에서의 attention

Backward Processing: Attention 메커니즘은 이미지의 특정 픽셀이나 피처 간의 관계를 학습하는 데 사용

Diffusion 모델은 노이즈를 점진적으로 제거하며 고화질 이미지를 생성하는데, 이 과정에서 attention을 통해 픽셀 간 상호작용을 효율적으로 캡쳐하여 생성 과정을 안정화

 

 

+ 요즘은 여러 연구들에서 normalization을 attention 전에 하는 게 더 안정적이라는 분석이 나와 FFW나 Multi-Head attention 전에 normalization 해버린다고 함

+ 또 요즘은 layer norm이 말고도 다른 normalize 방식도 많이 쓴다고 함 

 

 

알찬 가르침을 주신 태백님께 압도적 감사를,,

KoLLAVA KOVA 레츠고~