-
기존 RNN 단점
- 단어가 순차적으로 들어온다.
- 처리해야 하는 시퀀스가 길수록 연산 시간이 길어진다.
-
Transformer 장점
모든 토큰을 동시에 입력받아 병렬 처리
하기 때문에 GPU 연산에 최적화
되어 있다.(시퀀스의 길이가 길어지더라도 연산 시간에 큰 변화가 없다)
-
Transformer 구조
- 인코더, 디코더 6개씩 존재
- 인코더 블록 (2개 서브 레이어): Multi-Head (Self) Attention, Feed Forward
- 디코더 블록 (3개 서브 레이어): Masked Multi-Head (Self) Attention, Multi-Head (Encoder-Decoder) Attention, Feed Forward
- Positional Encoding (위치 인코딩) : 단어의 상대적인 위치 정보를 담고 있다.
- 모든 단어 동시 입력 -> 컴퓨터가 단어 위치를 알 수 없다.
-
인코더
- Self-Attention (셀프-어텐션)
- 트랜스포머 주요 매커니즘
- 쿼리 - 분석하고자 하는 단어에 대한 가중치 벡터
- 키 - 쿼리에 해당하는 단어와 얼마나 연관있는지 비교를 위한 가중치 벡터
- 벨류 - 단어의 의미를 살려주기 위한 가중치 벡터
- 단어 행렬과 준비된 가중치 행렬을 내적하여 쿼리, 키, 밸류 행렬을 만들어냅니다.
- 쿼리 행렬과 키 행렬을 내적합니다.
- 계산하여 나온 값을 (쿼리, 키, 밸류) 벡터 차원의 제곱근에 해당하는 값으로 나누어줍니다.
- 계산하여 나온 값에 소프트맥스 함수를 취해줍니다.
- 계산하여 나온 값과 밸류 행렬을 곱해줍니다.
-
문장 내부 요소의 관계를 잘 파악하기 위해서 문장 자신에 대해 어텐션 메커니즘을 적용
-
Multi-Head Attention(앙상블과 유사한 효과)
- 여러 개의 Attention 메커니즘을 동시에 병렬적으로 실행
-
Layer Normalization
-
Skip Connection
-
FFNN(Feed forward neural network)
- 은닉층의 차원이 늘어났다가 다시 원래 차원으로 줄어드는 단순한 2층 신경망
-
Masked Self-Attention
- 트랜스포머에서는 타깃 문장 역시 한 번에 입력되기 때문에
해당 위치 타깃 단어 뒤에 위치한 단어는 Self-Attention에 영향을 주지 않도록 마스킹(Masking)을 해주게된다.
-
Encoder-Decoder Attention
- 번역할 문장과 번역되는 문장의 정보 관계를 엮어주는 부분
- Q : 디코더 벡터
- K, V : 인코더 벡터