일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 차원 축소
- 리액트
- docker
- 쿠버네티스
- 프론트엔드
- 심층신경망
- do it
- ADP
- React
- DBSCAN
- 캐글
- 대감집
- TooBigToInnovate
- 최적화
- r
- bigquery
- Kaggle
- ADP 실기
- 타입스크립트
- python
- 구글
- 머신러닝
- 대감집 체험기
- Machine Learning
- Kubernetes
- 빅쿼리
- 파이썬
- frontend
- LDA
- 클러스터링
- Today
- Total
No Story, No Ecstasy
Attention 메커니즘 본문
Attention 메커니즘이란?
. 딥러닝 모델이 특정 벡터에 주목하게 만들어 모델의 성능을 높이는 기법
. RNN에서 인코더가 입력을 벡터로 압축시 일부 정보가 손실되는 것을 보정하는 용도로 활용
. Transformer에서는 인코더와 디코더를 만드는데 직접적으로 사용됨
Attention 개발 동기
. 기계번역을 위한 Sequence-to-sequence 모델에서, 모델의 정확도를 높이기 위해 제안됨
. 소스 랭귀지와 타겟 랭귀지의 길이가 길어질수록 모델의 성능이 나빠진다.
. 모델로 하여금 '중요한 부분만 집중하게 만들자'가 어텐션 메커니즘의 핵심 아이디어
Attention 핵심 아이디어
. 기본 가정: 인코더가 만든 벡터와 디코더가 예측시 사용하는 벡터가 유사할 것이다.
. Q (query), K (key), V (value) 3개의 벡터를 입력으로 받아 query와 key-value 쌍을 출력에 맵핑한다.
. 각 값에 할당된 가중치는 해당 key에 대응되는 query에 대한 유사도로 계산된다.
. 자주 사용되는 유사도 계산 함수에는 dot product, splice, detector 등이 있다.
. 얻은 가중치는 softmax 함수를 통해 정규화되고, V에 대응하는 가중치들에 가중을 더해 최종 attention을 얻는다.
. Self-attention 모델에서는 Q=K=V
. Encoder-decoder-attention 모델에서는 Q = decoder hidden state, K, V = encoder hidden state
Self-Attention
. 입력 문장 내 다른 위치에 있는 단어들을 보고 거기서 힌트를 받아 현재 타겟 위치의 단어를 더 잘 encoding한다.
. 과정
1. 입력된 벡터에게서부터 3개의 벡터를 만들어낸다. Q, K, V
2. 입력 문장 속의 다른 모든 단어들에 대해서 각각 점수를 계산한다.
. 현재 단어의 query vector와 다른 위치의 단어의 key vector의 내적으로 계산된다.
3. 각 단어들의 value 벡터에 softmax 함수를 적용한 점수를 곱한다.
4. 나온 결과 벡터를 feed-forward 신경망으로 보낸다.
Multi-head Attention
. Attention head를 여러 개를 갖는 것을 뜻한다.
. 각 Attention head는 다른 Q, K, V 가중치 행렬들을 갖고, Q, K, V 행렬들을 결과로 갖는 어텐션을 계산한다.
. 계산된 Z를 모두 모아서(concat) 가중치 행렬과 곱해서 레이어의 최종 출력 값을 만든다.
. 하나의 위치에만 크게 집중하는 것이 아니라, 그 집중을 분산시켜서 2, 3번째 중요한 위치를 효과적으로 학습한다.
1. 입력된 벡터에게서부터 3개의 벡터를 만들어낸다. Q, K, V
Transformer에서 Attention의 사용
. Encoder Self-Attention
1. Multi-head Attention
2. Query = Key = Value
- 모든 K, V는 이전 레이어의 출력에서 가져온다.
. Decoder Self-Attention
1. Masked Multi-head Attention
2. Query = Key = Value
- Auto-regressive 속성을 유지하기 위해서 디코더에서 왼쪽으로 흐르는 정보를 막는다.
- 허용되지 않은 연결에 대응하는 softmax 입력에서 모든 값을 마스킹 아웃하여 scaled dot-product 어텐션 구현
- Masked인 이유: Decoder에서는 이전 값은 출력이 아닌 정답으로부터 가져오도록 하기 때문
. Encoder-decoder Attention
1. Multi-head Attention
2. Encoder Self Attention = Key = Value
3. Decoder Self Attention = Query
- Q는 이전 디코더 레이어에서, K, V는 인코더 출력에서 오므로, 디코더의 모든 위치가 입력의 모든 위치를 Attend
. Positional Encoding
. RNN 구조가 아니기에 position 정보를 이해하기 위한 새로운 개념이 필요하다.
. 이를 위해 encoder-decoder 맨 아래 input embedding에 positional encoding을 추가한다.
. The Residuals
. Encoder의 각 sub-layer는 residual connection으로 연결되었고, 그 후에는 layer-normalization 과정을 거친다.
'Data Science Series' 카테고리의 다른 글
Beta, Gamma, Dirichlet 분포 (0) | 2021.09.07 |
---|---|
Ad Segments beyond Look-alike Audience Model (0) | 2021.09.07 |
자연어 처리 - Transformer, Bert, GPT-3 (0) | 2021.05.30 |
오토인코더 (Autoencoder) (0) | 2021.05.30 |
심층 신경망 (DNN) 훈련 (0) | 2021.05.29 |