RNN
Transformer
- 등장 년도: 2017
- 등장 배경: RNN에서 발생하는 병렬처리 불가 문제를 해결하고자 transformer 등장 --> Transformer는 모든 입력을 한 번에 전달할 수 있음을 의미
- High-level architecture
- 여러 인코더, 디코더 레이어가 있음
- 인코더의 최종 출력은 모든 디코더의 입력으로 들어감
- 인코더 구조
- 인코더 간에 가중치를 공유하지 않음(각각의 가중치를 학습)
- 인코더 = Self-Attention + Feed forward neural network
- self-attention 출력이 feed forward neural network의 입력으로 들어감
- 입력은 동시에 인코더로 전달됨
- self-attention 계층에서는 dependencies(종속성)를 파악하는 것이 목적(입력 간의 관계 파악)
- dependency: context 정보 때문에 x1이 어떤 방식이든 x2에 의존하는 것, x2는 x3에 의존하며, x3와 x1은 비교적 관계가 낮음
- feed forward에서는 종속성 없이 바로 병렬 처리(입력 사이의 유사성이나 관계 파악X)
예시처럼 self-attention에서는 단어 간의 종속성을 파악하기 위해 한 번에 같이 처리한다면 feed forward는 관계 파악이 주 목적이 아니므로 병렬처리로 진행한다.
Self-Attention
- 각 단어를 처리
- 이 단어에 대한 더 나은 인코딩을 구축하기 위한 단서를 얻기 위해 시퀀스의 다른 위치 파악
- 준비물
(1) Query: 우리가 찾고자 하는 것
(2) Key: 쿼리에 대한 잠재적 솔루션
(3) Value: 키 뒤에 있는 실제 솔루션
출처: https://fastcampus.co.kr/data_online_transformer
FaceCampus Transformer 강의