1. 개요
- LSTM(+ Seq2Seq)의 경우 많은 개선점이 있었음에도 long-term dependency에 취약하다는 단점
- 어텐션을 RNN의 보정을 위한 용도가 아닌 어텐션만으로 인코더와 디코더를 만듦
- RNN을 사용하지 않기 때문에 입력을 순차적으로 받지 않고 한 번에 사용
2. 입력 - 포지셔널 인코딩
- RNN이 자연어 처리에서 유용했던 이유는 단어의 위치에 따라 단어를 순차적으로 입력받아서 처리하기 때문
- 트랜스포머는 단어의 위치 정보를 얻기 위해서 각 단어의 임베딩 벡터에 위치 정보들을 더하여 모델의 입력으로 사용
- 짝수 인덱스에는 사인 함수, 홀수 인덱스에는 코사인 함수를 적용하여 위치 정보 저장
3. 인코딩
3-1. Multi-Head Attention
- 하나의 word를 아래와 같은 구조로 계산
- Self-attention 사용
- 기존 seq2seq에서의 attention은 서로 다른 문장들의 단어들을 가지고 연관성을 찾아냈기 때문에
it이 animal을 가르킨다는 것을 알 수 없었음.- Self-attention 에서는 이 관계를 찾기 가능
- Output을 순차적으로 구하는 Seq2Seq와 다르게 입력 문장의 모든 단어 벡터들로 한번에 연산 가능
- Scaled dot-product Attention: Seq2Seq에서 본 것과 다르게 단순한 내적이 아닌 특정 값 √d (d=dimension)으로 나눠줌
-
- key를 통해서는 각 단어와 연관성의 확률을 계산하고 value는 그 확률을 사용해서 attention 값을 계산하는 용도
- 위 Self-attention을 여러 개 사용 (512차원보다 64*8차원이 더 좋음)
3-2. Position-wise FFNN(Feed-forward Neural netweork)
3-3. Add & Norm(residual connection과 layer normalization)
- residual connection
- 입력과 출력을 더한 것을 새로운 입력으로 사용
- layer normalization: Training 할 때 layer들의 평균과 분산으로 normalize gradient 값이 안정적인 값을 가져 더 빨리 학습
4. 디코더
- 기본적으로는 인코더와 같은 구조
- masking
- 인코더와 달리 자신의 position이전의 position까지만 결과를 만들어내야 하기 때문에 self-attention을 변형
- Output을 일부분만 사용 (마스킹 부분은 마이너스 무한대로 설정)
'AI' 카테고리의 다른 글
Universal Transformer (2018) (0) | 2022.09.04 |
---|---|
Attention Mechanism (Dot-Product Attention) (2015) (0) | 2022.09.04 |
Seq2Seq (Encoder-Decoder Model) (2014) (0) | 2022.09.04 |
LSTM (Long Short-Term Memory) (0) | 2022.09.04 |
RNN (Recurrent Neural Network) (0) | 2022.01.12 |