728x90
오늘은 Transformer 논문 리뷰를 가져왔습니다.
해당 논문은 2017년에 발표된 논문입니다.
Attention Is All You Need
저자 : Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin
[1] Introduction
1-1. 기존 Seq2Seq 모델의 한계점
- 기존의 인코더 - 디코더 구조 : 인코더에서 고정된 크기의 context vector를 생성해 디코더의 입력으로 넣어주는 형식
- context vector를 만들다보니 인코더의 모든 소스 문장에 대한 정보가 압축되어 병목 현상이 발생하고 입력 문장 전체를 순서대로 받아야 하기 때문에 병렬 처리를 하기에도 어려움이 있었음
- 그래서 디코더가 매번 context vector를 참고하도록 방향성을 바꿔보았지만 인코더에서 context vector를 생성해야 하는 문제는 여전하기 때문에 병목 현상에 대한 해결 방안은 되지 않았음
- 그래서 차라리 context vector를 생성하지 않고 매번 소스 문장 전체를 입력으로 받으면 어떨까? 하는 아이디어가 나왔고 그 시초가 Attention 알고리즘
1-2. Attention
- Attention 출범 이후에는 Attention 기반으로 입력 시퀀스 전체에서 정보를 추출하는 방향으로 발전함
- 출력값을 모두 고려해서 성능 향상을 노리고 어텐션의 디코더 부분에서는 매번 인코더의 모든 출력 중 어떤 정보가 중요한!! 정보인지 계산 → 어텐션의 본질
- GPU의 병렬처리
- 어텐션에서 매번 소스 문장 전체를 입력으로 받기 때문에 입력 순서에 관해 Sequential하게 계산할 필요가 없어 GPU의 병렬 처리가 가능해진다! —> 성능과 학습 속도에 엄청난 발전
[2] Model Architecture
2-1. Encoder
- Input 및 Positional Encoding
- 소스 문장을 Embedding시키고 각 단어의 순서를 알 수 있도록 Positional Encoding 작업을 진행 후 concat 연산을 수행해 인코더에 입력
- Multi-head Attention, 잔여학습, FC Layer
- 임베딩된 Matrix는 Multi-head Attention에 각각 key, query, value로 입력되고 각각 서로의 단어에 대한 가중치를 부여하는 어텐션 계산을 수행
- 학습 난이도를 낮추기 위 Residual Learning도 수행
- 거기에 FC layer를 입히고 다시 잔여 학습을 진행하면 끝…이 아니라 이 과정을 총 N번 만큼 수행 (본 논문에서는 N = 6이라고 하네용)
2-2. Decoder
- Masked Attention
- 입력 단어보다 뒤에 있는 단어를 신경쓰거나 참고하지 못하도록 Masked Attention을 수행
- Multi-head Attention
- 인코더에서 받은 key와 value값을 참고해 디코더 부분에서 Multi-head Attention 계산을 수행
- 어텐션을 위한 세 가지 입력 요소
- Query : 물어보는 주체
- Key : 각각의 단어들
- Value : Attention Score
- 각각의 Key는 행렬곱, Scaling, Softmax(어떤 단어와 가장 유사한지 판별) 계산
- 그리고 똑같이 FC Layer를 거쳐 Softmax 함수를 통과한 후 출력
- dot-product attention을 수행하는 이유는 계산이 빠르고 공간 낭비를 줄일 수 있어서
- Why Self - Attention?
- 각 Layer마다 계산의 복잡도가 줄어든다는 장점
- 순서에 대한 순차적 입력 과정을 없앰으로서 GPU 차원의 병렬 처리 가능
- Long Range Dependency에도 잘 수행할 수 있음
[3] Training & Results
- WMT 2014의 영어 - 독일어 번역 데이터셋, 영어 - 불어 번역 데이터셋을 사용
- Hardware는 NVIDIA의 GPU P100을 8개 사용
- Label Smoothing 기법 사용 - 정규화 기법
- 8개의 Head를 사용하는 것이 성능이 좋았고 차원은 64차원이 가장 좋았음
- FC Layer와 Embedding 차원을 늘리면 성능이 더 향상됨
[4] Conclusion
- Transformer Architecture 제안
- Attention Machanism 만을 사용해서 recurrent한 특성을 모두 배제한 후 학습 진행
- 기계번역 분야 뿐만 아니라 다른 분야의 task에도 적용가능성이 높다는 점을 시사
[5] References
https://github.com/ndb796/Deep-Learning-Paper-Review-and-Practice/tree/master
728x90
'논문리뷰' 카테고리의 다른 글
[논문리뷰] CLIP 논문 리뷰 (0) | 2024.07.10 |
---|---|
[논문리뷰] XL-Net (0) | 2024.07.03 |
[논문리뷰] MT-DNN (0) | 2024.05.23 |
[논문리뷰] BART (2) | 2024.05.15 |
[논문리뷰] BERT (0) | 2024.04.30 |