일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- prompt engineering
- deque
- 코딩테스트
- BFS
- LeetCode
- 머신러닝
- rnn
- 프롬프트
- Linear Regression
- 기계학습
- Django
- Python
- 코테
- Linear Model
- 부스트캠프
- attention
- 프로그래머스
- machinelearning
- GPT
- 파이썬
- ChatGPT
- Deeplearning
- 일기
- NLP
- 알고리즘
- dl
- gradient descent
- LLM
- transformer
- Programmers
- Today
- Total
크크루쿠쿠
Transformer (2) 본문
Multi-head Attention
동일한 V,K,Q에 대해서 여러 버전의 W 를 적용시켜 h개의 attention을 수행한다.
왜 필요한가?
-> 특정한 쿼리에서 다양한 측면에서 정보를 뽑을 필요가 있다.
Self-Attention -> 행렬의 계산을 한번에 하기 때문에 O(1) 로 가능 (GPU가 받쳐준다는 가정 하에)
Recurrent -> 매 time step 마다 따로 계산해줘야 하기 때문에 O(n), 병렬화가 불가능하다.
하지만 메모리 관점에서는 Self-Attention이 더 많이 차지함.
Transformer: Block based model
Add & Norm 에서 Residual Connection이라 부르는 Add 와 Layer Noramlization을 거침
Add 과정을 통해 학습을 안정화 시키고 Gradient Vanishing 문제도 해결 해준다.
Layer Normalization
Layer에서 평균을 0 분산을 1로 만들어주는 Normalization 과정을 거친다.
그 이후에 Affine transformation을 거친다.
Affine transformation의 변수들도 network의 학습에 따라 달라지는 parameter가 된다.
Positional Embedding
Attention 연산은 순서를 고려하지 않기 때문에 위치를 알아야 한다.
벡터에 위치를 반영해줘야 한다.
순서를 특정지을 수 있는 상수 벡터를 더해줘야함.
그 벡터를 어떻게 정하나? -> 위에 그림의 식으로 구해준다.
위 그래프를 Position(y축) 마다 더해줌으로써 구분해준다.
Warm-up Learning Rate Scheduler
학습 도중에 learning rate를 계속 변경시켜줌으로써 더 좋은 결과를 얻게끔 한다.
초반에는 global optima를 찾기 위해 learning rate를 증가시킨다음에 점점 낮추는 모양을 띈다.
Transformer : Decoder
V,K는 Encoder에서 가져오고 Q는 1단에서 출력하는 벡터를 사용한다.
ground truth를 이용해 backpropagation 진행
Masked Self-Attention
기존 학습시에는 모든 정보 접근을 허용했었다.
예측 과정에서는 뒤의 단어를 제외해주어야 한다.
그 뒤에 row 별로 합이 1이 되도록 normalize 해줘야 한다.
즉 후처리로 mask 처리를 해주는 것이다.
'DeepLearning > 부스트캠프 AI Tech' 카테고리의 다른 글
[데이터 제작] 2. 자연어처리 데이터 기초 (0) | 2021.11.08 |
---|---|
[데이터 제작] 1. 데이터 제작의 A to Z (0) | 2021.11.08 |
Transformer (1) (0) | 2021.09.14 |
Beam Search and BLEU score (0) | 2021.09.13 |
Sequence to Sequence with Attention (0) | 2021.09.13 |