구성요소
-
Encoder
- Self-Attention
- Layer Normalization
- Skip Connection
- Feed-Forward Networks
- Multi-Head Attention
-
Decoder
- Auto-regressive
- TeacherForcing
- Masked Self-Attention(차별점)
- Encoder-Decoder Attention
-
- 입력 데이터를 고차원 벡터로 변환하는 과정
- Transformer가 입력 데이터를 처리할 수 있도록, Vocabulary를 연속적인 벡터 형태로 변환
- 학습 가능한 파라미터들로 구성됨
-
Positional Encoding
- 단어의 위치 정보를 반영(sequence적인 RNN 과 CNN의 특성을 모두 제거하였기 때문에 병렬계산을 위한 정보가 필요?)
- sin함수와 cos함수를 통해 입력마다 다른 위치의 정보값 부여
-
Self-Attention
- 기존 Seq2seq
- 입력문장과 타겟 문장 사이의 Attention Score만 계산
- Transformer에서의 Self_Attention
- 단계
- Embedding(512)
- 3개의 Query, Key, Value 벡터 구성
- Query와 Key를 곱하여 Dot Product Attention Score 계산
- Scale 작업을 진행. Key 벡터사이즈인 64의 제곱근인 8로 나누어 줌
- Softmax진행(실제로 attention distribution으로 만들어줘야 하기 때문에)
- 현재 위치의 단어의 encoding에 있어서 얼마나 각 단어들의 표현이 들어가는지에 대한 일종의 확률로 변환
- '어디에 얼마나 집중해야 하는가?'를 보는 것
- Softmax를 통과한 확률 값을 Value 벡터의 각각 원소에 곱하여 새로운 벡터를 얻음
- 이전까지의 과정 == Scaled Dot Product Attention이라 명명
- 결과로 나온 벡터를 다 더하여 Self Attention의 출력을 구성
-
Multi-Head Attention
- Self-Attention 계산 과정을 8개의 다른 weight행렬들에 대해 Head 갯수 만큼 수행
- Transformer 논문에서는 Head를 8개로 나누어서 계산
- 다양한 표현을 학습함으로 더 잘 표현 가능
- 여러 self-attention의 앙상블이라 생각하면 쉬움
- 단계
- 문장 X가 입력, Input Embedding 및 Position Encoding을 거쳐 입력벡터 계산
- 입력 벡터를 통해 Self-Attention을 Head #0 ~ #7까지 모두 계산
- 계산된 Self-Attention값들을 가지는 모든 HEAD들을 연결
- HEAD#0 ~ HEAD#7의 출력인 Z_0 ~ Z_7값들을 연결
- 연결된 Z_0 ~ Z_7의 값을 최종 Output Matrix인 Wo 왁 곱하여 최종 벡터 Z를 계산
-
Addition & Layer Normalization
- Addition
- 두 개 이상의 텐서를 요소별로 더하는 연산
- Transformer 모델에서는 각 계층의 입력과 출력을 더하는 Residual Connection 기법을 Addition으로 사용
- 모델의 깊이가 깊어질수록 발생할 수 있는 Over-fittiong 문제를 완화하는 데 도움을 줌
- Layer Normalization
- 각 layer의 출력을 정규화하는 방법
- 각 샘플의 특성 값들을 평균 0, 분산 1로 정규화
- Batch Normalization#
- 기존에 많이 사용하던 정규화방식
- 각 데이터의 배치를 독립적으로 정규화함
- Layer Normalization#
- transformer 이후 주로 사용
- 입력 데이터의 sequence 길이에 영향을 받지 않음
특징