본 글은 Attention Is All You Need [NIPS-2017] 논문에 대한 저의 개인적인 이해를 정리한 글입니다. 실제 논문의 구성 및 내용과 약간의 차이가 있을 수 있습니다.
- 기존 시퀀스 변환 방식들은 CNN이나 RNN에 기반으로 한 구조를 가지고 있음
- 본 논문에서는 오직
attention매커니즘에만 기반으로 하는Transformer라는 아키텍처를 제안함- 실험을 통해 해당 방식이 translation task에서 매우 효과적임을 확인함
NLP 연구에서는 언어모델(Language Model)을 통해 sequence modeling과 transduction problems을 해결하고자 함
- Language Model: 단어 시퀀스에 확률을 할당하는 모델
- Language Modeling: 주어진 단어들을 이용하여 아직 모르는 단어를 예측하는 작업
- Machine Translation: 컴퓨터를 통해 인간이 사용하는 자연어를 다른 언어로 번역
[word word]로 대응하여 번역하는 방식
문제 1: 언어별 어순이 다르다. (ex: I love you 나 사랑해 너)문제 2: 언어별 단어 수가 다르다. (ex: How are you? 잘 지내?) [Seq Seq]로 대응하여 번역하는 방식이며 encoder-decoder 구조를 가짐
Encoder: 시퀀스를 순차적으로 받아 context vector를 생성Decoder: context vector를 바탕으로 task (e.g., language modeling, machine translation) 수행RNN 기반 모델
- Encoder에서 "I am a student"라는 문장의 정보를 순차적으로 받아서 context vector에 담으면, decoder에서 이를 기반으로 번역된 단어를 순차적으로 출력함
- 위의 encoder-decoder 구조에서는 encoder의 정보를 받아 하나의 context vector를 생성한 후 decoder에서 이를 기반으로 생성 작업을 수행하는데, 이 구조를 이용하면 [word word]의
문제 1을 해결 가능- RNN은 input과 output의 sequence 길이의 제한이 없다는 특징이 있는데, 이 특성을 이용하면 [word word]의
문제 2를 해결 가능단점: 문장 sequence가 길어지게 되면 context vector에 문장 속의 모든 정보를 담기 어렵다는 한계가 있음 (고정된 길이의 context vector의 한계)
RNN + Attention 모델
- RNN 기반 모델의 가장 큰 문제는
context vector이슈이며 이를 위의 구조를 통해 개선하고자 함- Decoder에서 출력 단어를 예측하는 매 시점마다 encoder를 참고하도록 함
- 이때, input 시퀀스의 모든 state 결과를 이용하여 다음 단어를 예측하는데, 모든 state 결과 중 특정 state 결과에 집중하여 예측 수행 (attention 매커니즘)
Attention이란, 쉽게 말해서 말 그대로 "특정 state에집중하자"는 방식단점: RNN 기반의 방식을 이용하기 때문에 RNN 고유의 문제 (ex: 병렬화 불가능) 를 여전히 가지고 있음
Transformer 모델 (Attention 매커니즘만 이용)
- RNN을 제거하여 병렬적 처리를 통해 속도와 성능을 향상시키고자 함
Transformer의 encoder-decoder는 attention layer로 구성됨
Attention이 무엇인지, 어떻게 동작하는지에 대한 원리 확인
Attention의 목적
- [A,B,C,D]의 단어 시퀀스가 주어진 상황에서 특정 단어 A가 시퀀스 내의 단어 A, B, C, D와의 연관성을 계산
Attention의 요소
- Attention의 input 요소: Query, Key, Value matrix
- ex: "I am a student"
Query: 물어보는 주체 ["I"], ["am"], ["a"], ["student"]
Key: 연산의 대상 ["I", "am", "a", "student"]
Value: Key에 해당하는 값 ["I", "am", "a", "student"]- 이때 Key의 각 요소들은 Query와 유사할수록 높은 attention score를 가짐
Attention 과정
1. , , 얻기
2. 로 attention score 구하기 단어간 유사도 점수
3. 로 나눠주기 Scaling 실시
4. Softmax 함수 적용 Attention score를 [0,1]의 확률 개념으로 바꿈
5. Softmax 결과에 를 곱하여 attention matrix를 얻음
Attention vs Self-attention
- Attention: Query와 Key, Value의 출처가 다름
- Self-attention: Query, Key, Value의 출처가 모두 같음
Multi-Head Attention
- Attention layer를 병렬로 처리하여 동시에 수행
- 다양한 문맥적 해석이 가능함 모호한 문장 처리 능력 향상
Masked Multi-Head Attention
- 모델이 특정 시점까지의 출력값에만 집중하여 attention을 수행하도록 함
- Decoder에서 사용되며, 이로 인해서 autoregressive한 성질을 가지게 됨

본 논문에 대해서 Transformer의 등장 배경 및 모델 아키텍처를 이해하기 위한 Attention에 집중하여 정리를 했는데, 추후에 추가할 내용이 있다면 수정하도록 하겠습니다.