일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- GAN
- dl
- web
- Python
- SSL
- 머신러닝
- Torch
- pytorch
- cs
- Depth estimation
- Vision
- nerf
- REACT
- CV
- 딥러닝
- PRML
- Meta Learning
- FineGrained
- FGVC
- 자료구조
- computervision
- clean code
- classification
- math
- algorithm
- Front
- 3d
- ML
- nlp
- 알고리즘
- Today
- Total
KalelPark's LAB
[ Computer Vision ] Attention, Transformer 이해하기 본문
Attention 이란?
- Attention의 사전적 의미는 "집중"이다.
이러한 의미는 Decoder에서 출력을 하고자 할때, 어떤 Encoder 정보에 집중해야 하는지 알 수 있도록 하여
출력하는데, 도움을 주겠다는 의미이다.
Attention 용어
- Query : 찾고자 하는 대상
- Key : 저장된 데이터를 찾고자 할 때 참조하는 값
- Value : 저장되는 데이터
- Dictionary : Key-Value 쌍으로 이루어진 집합
- Attention에서는 Query에 대해서 어떤 Key와 유사한지 비교를 하고, 유사도를 반영하여,
Key에 대응하는 Value를 합성하는 것이 Attention Value가 된다.
즉, Query는 하나이고, Query에 해당하는 Dictionary : Key값들이 Query와 얼마나 유사한지 계산한다는 점이다.
Query는 Decoder의 hidden state가 되고, Decoder의 RNN에 입력되는 하나 앞선 time-step의 hidden state입니다.
Attention의 Key와 Value는 Encoder의 hidden state를 key와 value로 사용한다.
즉, Key와 Value는 같고, 단어의 갯수 만큼 Key값을 가진다.
Attention 관련은 위 메커니즘을 따릅니다. Decoder에서 Si라는 Query가 입력되고, Query와 모든 Key 값인 hi와
Comparison연산을 통하여, 유사도 계산을 한후, Softmax를 거칩니다.
이후, hi와 곱한 후 최종적으로 Attention의 Value를 출력합니다.
Transformer란?
- RNN과 CNN을 사용하지 않고, Attention과 Fully Connected와 같은 기본 연산을 이용하여, SOTA를 달성합니다.
Scaled Dot-Product Attention과 Multi-Head Attention을 사용한 것이 알고리즘의 핵심이다.
Transformer와 Seq2Seq의 차이점
- Seq2Seq와 Transformer의 가장 큰 차이점은, Seq2Seq에 입력되어야 할 모든 Input이 처리된 후, Decoder연산이 시작되나
Transformer에서는 Encoder의 계산과 Decoder의 계산이 동시에 일어나는 차이점이 존재합니다.
- 입력과 다르게 출력은 2가지의 Output으로 표시됩니다. Seq2Seq에서도 그림에서 위쪽에 있는
Output은 Transformer 모델을 통해 출력되는 실제 출력이고,
아래쪽에 있는 Output은 Transformer에서 만들어낸 Output을 다시 입력으로 사용됩니다.
Positional Encoding부분을 사용하여, 얻은 값과 Embedding을 활용하여 더해줍니다.
기존의 Seq2Seq와 다르게, Transformer에서는 시간적 위치 정보를 추가합니다.
Scaled Dot-Product Attention
- Attention에서는 사용되는 입력은 Q(Query), K(Key), V(Value)이다. 따라서, Scaled Dot-Product Attention에서도,
Query, Key, Value 구조를 띕니다.
- Q와 K의 비교함수는 Dot-Product와 Scale로 이루어져 있습니다. Dot-Product는 MatMul에 해당하고
inner Product(내적)과 같습니다.
- Multi-Head Attention은 Scaled Dot-Product Attention을 h개 모아,
Attention Layer를 병렬적으로 사용하는 것을 말합니다.
즉, 한번에 전체 Scaled Dot-Product Attention을 연산하기 보다는 여러 개 작은 Scale Dot-Product Attention으로 분할하고,
병렬적으로 연산한 다음에 다시 Concat하는 방식이다.
- Transformer 전체 구조에서는 Multi-Head Attention이 어떻게 사용되는지를 알 수 있습니다.
파란색으로 표시된 부분은 Self-Attention 구조가 들어가 있습니다. Self-Attention에서는 Key, Value, Query가
모두 같음을 의미합니다. Encoder의 파란색 부분은 Mask 없이 Key, Value, Query가 들어가게 됩니다.
왜냐하면, Key와 Value가 Query로 하고자 하는 것보다 더 앞서서 등장할 수 없기 때문이다.
이와 같이 Self-Attention을 통해서 Attention이 강조되어 있는 feature를 추출할 수 있습니다.
- 빨간색으로 표시된 Multi-Head Attention은 Encoder로부터 Key와 Value를 받고, Decoder로부터 Query를 받습니다.
이를 통해 Seq2Seq의 Attention과 동일한 구조를 가지게 됩니다.
참조
https://gaussian37.github.io/dl-concept-attention/
'Data Science > Common' 카테고리의 다른 글
[ Computer Vision ] Batchsize에 따른 loss의 변화율 (0) | 2023.03.19 |
---|---|
[ Computer Vision ] PSNR, SSIM이란? (0) | 2023.01.28 |
[ Computer Vision ] Siamese-ennead CNN이란? (0) | 2023.01.03 |
[ Computer Vision ] All about Activation Function (0) | 2023.01.01 |
[ Computer Vision ] All about Classification Metrics (0) | 2022.12.30 |