newhaneul

[Seoul National Univ: Computer Vision] Lecture 12. Attention & Transformers 1 본문

2. Artificial Intelligence/Seoul National Univ. Computer Vision

[Seoul National Univ: Computer Vision] Lecture 12. Attention & Transformers 1

뉴하늘 2025. 6. 6. 16:26
728x90

본 포스팅은 서울대학교 이준석 교수님의 M3224.000100 Machine Learning for Visual Understanding을 수강하고 공부한 내용을 정리하기 위한 포스팅입니다.

 

https://youtu.be/p1fdYbs9W0c?si=4d87BJ3pcIUCCgV5

 

 

1. Attention Mechanism

 Attention Mechanism은 입력 시퀀스 중에서 중요한 부분에 집중(attend)하도록 학습하는 메커니즘이다. 즉, 모든 입력 요소 간의 상호작용을 계산하고, 중요한 정보에 더 많은 가중치를 부여한다.

 

  • Query: Decoder hidden state
  • Key, Value: Encoder hidden state
  • Attention Value: Weighted average of encoder hidden states

Dot-Product Attention

  • Attention score: Query(Decoder hidden state)와 Key(Encoder hidden state)의 내적값(Query와 Key의 Similarity)
  • Attention coefficients: Attention score에 Softmax를 적용
  • Attention value: Attention coefficient와 Value(Encoder hidden state)의 weight sum

 보통 Query와 Key의 Dimension은 동일하고, Value와 Attention value의 Dimension은 무조건 같아야한다. 그렇지만 대부분의 경우에 Query, Key, Value, Attention value의 Dimension을 모두 동일하게 설정한다.

 

  • QK: 각 Query와 Key의 유사도 (Dot-product)
  • sqrt(d): 정규화를 위한 scaling factor
  • softmax: 유사도를 확률 분포처럼 정규화
  • 곱하기 : 유사도 기반으로 Value 가중합

 

Other Attention Methods

 거의 대부분의 Attention은 similarity를 계산하는 방법으로 Dot-product를 사용한다. 그렇지만 Dot-product 이외에도 학습 가능한 가중치를 사용한다거나 추가적인 Layer를 사용하는 등 다양한 방법이 존재한다.

Example: Visual Attention

 Spatial Attention은 이미지나 영상에서 공간적인 위치마다 어디에 집중할 것인지를 학습하는 Attention 메커니즘이다.

  • Query: last LSTM's hidden state
  • Key: Input Image에 대한 last Convolution Layer의 Spatial Feature
  • Value: Input Image에 대한 last Convolution Layer의 Spatial Feature

Input Image가 Convolution Layer를 거치면 K x K x D의 고정된 크기의 Dimension을 갖게 된다. 이때 K x K regional features를 Key와 Value로 사용하고, Query를 이전 LSTM의 hidden state로 사용한다. 

 

 정리하면 현재 시점까지의 시퀀스 정보(h)를 바탕으로, 현재 프레임(X)에서 어떤 spatial 영역이 중요한지를 판단하고, 가중합된 feature(x)를 LSTM에 입력하여 다음 상태로 넘긴다. 

 

 실제로 attention coefficients(I)를 시각화 시켜보면 현재 Attention이 어떤 pixel을 대상으로 classification을 진행하였는지 해석할 수 있다.

2. Introduction to Word Embeddings

 

Word Embedding

 Deep Learning은 단어 자체로 학습을 진행할 수 없기 때문에 단어를 벡터로 표현해야 한다. Word Embedding은 단어를 고정된 길이의 연속적인 실수 벡터(dense vector)로 표현하는 기술이다. 이는 단어 간 의미적 유사성을 벡터 공간 상의 거리로 표현할 수 있게 해준다.

Word2vec(2013)

  • CBOW(Continuous Bag of Words): 주변 단어로부터 중심 단어를 예측
  • Skip-Gram: 중심 단어로부터 주변 단어를 예측

Initial Approaches: GloVe(2014)

 GloVe는 통계 기반 방식의 Word Embedding 기법이다. 전체 corpus에서 단어 쌍의 동시 등장 빈도(co-occurrence)를 활용하여 embedding을 학습한다.

 

 GloVe의 Loss를 구하는 식은 아래와 같다. 

 

  • w_: 단어 i의 벡터
  • w~_j: 문맥 단어 jj의 벡터
  • b_i, b~_j: bias terms
  • X_ij: 동시 등장 횟수

 

위 식에서 GloVe는 다음 관계를 근사하고자 한다. 

 단어 i와 문맥 단어 j의 벡터들의 Dot-product similarity가 두 단어의 co-occurrence probabilities와 가까워질수록 Loss가 감소하는 구조이다. 따라서 GloVe는 위의 관계를 근사시키는 것을 목표로 학습을 진행한다.

3. Transformers

 

Transformers: Main Idea

 Transformer는 입력 데이터를 구성하는 각 요소(토큰)가 전체 시퀀스 내 다른 요소들과 상호작용함으로써, 각 요소의 표현에 문맥(Contextual Information)을 통합할 수 있다고 가정한다. 이를 위해 Self-Attention 메커니즘을 활용하며, 각 요소는 다른 요소들과의 유사도에 따라 가중합되어 표현된다.

 Transformer에서는 Query, Key, Value를 Input Sequence에 가중치를 적용하여 만들어낸다.  

 Self-Attention에서는 입력 시퀀스의 각 단어가 다른 모든 단어를 동시에 참고하여 자신을 표현한다. 시퀀스의 각 토큰들은 자기 자신을 query로 활용한 다음에 다른 embedding vector와 simliarity를 계산한다. 때문에 자기 자신의 attention coefficient가 클 수 밖에 없지만, 다른 embedding vector에 대한 정보도 같이 담겨져 있다.

4. More Details on Transformers

Token Aggregation

 Token Aggregation은 Transformer에서 여러 개의 토큰 표현을 하나의 벡터로 요약할 때 사용하는 방법이다. Transformer의 출력은 일반적으로 토큰 단위의 벡터 시퀀스이다.

 하지만 Classification, Regression 등과 같은 Task에서는 전체 시퀀스를 대표하는 하나의 벡터가 필요하다. 이때 사용하는 기법이 Token Aggregation이다.

 

Token Aggregation: Average Pooling

 Average Pooling은 가장 단순한 방법 중 하나로, 모든 토큰의 출력 벡터를 평균 내어 하나의 대표 벡터로 만드는 방식이다. 

 단순하고 간단한 장점이 있지만, 모든 토큰을 동등하게 취급하기 때문에 토큰의 중요도가 반영되지 않는다는 닩머이 있다. 또한 평균을 내버리기 때문에 문장의 구조 정보를 무시한다. 따라서 Average Pooling은 보통 시퀀스의 길이가 짧거나, 토큰의 중요도가 모두 비슷할 경우 효과적인 방법이다.

Token Aggregation: Classification Token

 Classification Token은 Transformer 기반 모델에서 시퀀스 전체를 대표하는 특별한 토큰을 사용한다. 입력 시퀀스 앞에 [CLS]라는 학습 가능한 벡터를 삽입한다. Transformer는 이 [CLS] 토큰을 다른 토큰들과 함께 Self-Attention을 진행하게 되고, 이 [CLS]는 임의의 랜덤 값이였기 때문에 자기 자신보다는 시퀀스의 Context를 잘 담게 된다.

Training Transformers

 Transformer의 마지막 output에는 문제의 Task에 따라 여러 모델을 적용할 수 있다. Classification task인 경우에는 Classifier를 연결할 수 있고, Regression task인 경우에는 Regressor를 연결할 수 있다. 또한 문제가 Sequence 수준인지, Token 수준인지에 따라 어느 output에 연결할 지가 달라지게 된다.

5. Transformer Architecture

 

Transformer(Encoder): Input Embedding

 Input Embedding에서는 시퀀스를 입력으로 받은 뒤 고정된 크기의 벡터 토큰들로 변환한다. 

 입력으로 받는 시퀀스의 각 토큰들은 아래와 같이 Embedding Vector로 변환된다.

Transformer(Encoder/Decoder): Positional Encoding

 Transformer는 RNN과는 다르게 시퀀스 자체를 입력으로 받기 때문에 순서 정보가 없다. 따라서 위치 정보를 별도로 더해줘야 하는데, 이때 Positional Encoding 기법을 사용한다. 위치마다 서로 다른 주파수의 sin, cos을 사용하여 위치 차이를 인코딩한다.

Positional Encoding의 속성

 

1. 주파수 차별화

 

  • 작은 i (앞쪽 차원) → 높은 주파수 → 빠르게 진동
  • i (뒷쪽 차원) → 낮은 주파수 → 느리게 진동

→ 이로 인해 각 위치 pos는 고유한 벡터로 표현되므로 다른 위치들과 같은 값을 갖지 않게 된다.

 

2. 근처 위치끼리는 비슷한 encoding을 가진다.

 

  • 예: pos=5pos=6의 PE는 값이 매우 유사하다. →  자연스럽게 단어의 순서 구조를 모델이 학습할 수 있다.

 

 

Transformer(Encoder): Multi-Head Attention

 Multi-Head Attention은 입력 시퀀스 내에서 각 토큰이 다른 모든 토큰과 유연하게 상호작용할 수 있도록 설계된 메커니즘이다. 이때 단일 attention만 사용하는 대신, 여러 개의 head를 병렬로 사용하여 풍부한 문맥 표현을 학습할 수 있다. 즉, 단어 간의 의미적 관계를 다양한 관점(head)에서 동시 학습한다.

 각 head는 독립적인 projection을 갖는다. head를 concat한 뒤에는 원래 Input size로 조절해주기 위해 선형 변환을 진행한다.

 

Transformer(Encoder): Feed Forward Layer & Residual connection & Layer Normalization

1. Feed Forward Layer(FFN)

 각 토큰 위치별로 독립적으로 적용되는 MLP 구조이다. 독립적으로 적용되므로 토큰 간 정보 교환이 없다.

2. Residual Connection

 각 층의 입력을 해당 층의 출력에 해준다. 깊은 네트워크에서도 gradient가 안정적으로 흐를 수 있게 된다.

3. Layer Normalization

 각 토큰의 벡터에 대해 특징 차원별로 정규화를 수행한다. Batch Normalization과는 다르게 배치 사이즈에 영향 없이 동작하고, 학습 안정성이 향상된다.

 

  • μ: 입력 벡터의 평균
  • σ: 분산
  • γ, β: 학습 가능한 scale, shift 파라미터

 

Transformer(Encoder): Stacked Self-Attention Blocks

 Transformer Encoder는 단일 레이어로 구성되는 것이 아니라, 동일한 구조의 Self-Attention 블록을 여러 층으로 반복(stacked)해서 구성된다. 이를 통해 모델은 심층적인 문맥 정보를 점진적으로 학습할 수 있다.

 

Transformer(Decoder): Decoder Input

 Transformer에서 Decoder는 입력 시퀀스를 바탕으로 출력 시퀀스를 생성하는 역할을 한다. 이때 Decoder Input은 Decoder가 생성 작업을 시작할 수 있도록 준비된 입력이다.

 

 일반적으로 학습 시에는 <sos> 토큰을 삽입하여 시작함을 알린 뒤 정답 시퀀스를 일부 보여주면서 훈련한다. 추론 시에는 <sos> 토큰만 넣고, Decoder의 output을 붙여가면서 autoregressive하게 진행한다. 

Transformer(Decoder): Masked Multi-Head Self-Attention

 Decoder에서의 Multi-Head Self-Attention은 Encoder의 구조와 거의 동일하지만, 미래 정보의 참조를 방지하기 위해 Masking을 적용한다. Transformer는 시퀀스를 입력으로 받기 때문에 Decoder에서 예측해야 할 정답까지도 같이 받게 된다. 따라서 예측을 올바르게 진행하기 위해서는 현재 위치보다 이후 위치의 정보는 attention하지 못하도록 masking 해야 한다.

 

 기존 Attention 수식에 미래 위치에 해당하는 score를 ∞로 만드는 M을 더해 softmax 후 0이 되도록 한다. 즉, i번째 토큰은 j > i인 미래 토큰을 볼 수 없음

Transformer(Decoder): Encoder-Decoder Attention

 

 Decoder의 Encoder-Decoder Attention은 Encoder output과 Decoder input 사이의 상호작용을 담당하는 부분이다. 정리하면Decoder가 자신이 생성 중인 시퀀스를 바탕으로, Encoder의 출력(입력 문장의 정보)을 참조(lookup)하여 다음 토큰을 생성하는 데 필요한 정보를 얻는 과정이다.  

  • Query: Decoder의 이전 Layer output
  • Key, Value: Encoder의 최종 output

 Decoder는 생성 중인 문맥을 담고 있는 Query를 사용해, Encoder의 Key/Value로부터 의미 있는 정보를 찾아낸다.

Transformer(Decoder):Feed Forward Layer & Residual connection & Layer Normalization

Encoder와 동일

Transformer(Decoder):Softmax Layer

 Softmax Layer는 모델이 최종적으로 다음에 생성할 토큰을 예측하는 단계이다. Linear Layer의 output을 입력으로 받은 뒤 score로 변환한다. 그 다음 가장 확률 높은 단어가 최종 예측 결과가 된다. 손실 함수로는 Cross Entropy Loss를 사용해 실제 정답 label과 비교하여 softmax 확률을 최대화하는 방향으로 학습한다.

 

 

 

728x90