Transformer Decoder
: 트렌스포머 모델의 디코더(Decoder)는 인코더(Encoder)와 다르게 Masked Attention 이 들어간다.
Masked Multi-head Attention
Mask(마스크) 란?
Masked 혹은 Masking 이라는 용어 차제는 포토샵에서 많이 접할 수 있지만 무언가로 가린다는 의미이다.
디코더(Decoder)에서의 Self-Attention Layer 는 반드시 자기 자신 보다 앞쪽에 포지션에 해당하는 토큰들의 어텐션 스코어만 볼수있다. 아웃풋들이 주어졌을 때 뒤에 나오는 단어들은 볼 수 없다. ( 기본적인 seq2seq 모델의 학습 개념 transformer 도 동일함.)
Masking을 수학적으로 구현할 때는 포지션에 해당하는 Score 값을 -inf ( 마이너스 무한대 ) 값으로 표기함으로써 구현할 수 있다.
Decoder 부분에서 현재 내가 알고있는 정보까지만 self-Attention이 가능하다.
그렇다고 순차적으로 계산하는 것은 아니다.
순차적으로 계산하는 방식(RNN 계열)을 없애고 성능을 올린 기법(Attention is All You Need)인 만큼
말 그대로 'Masking' -> '가린다' 라는 의미처럼
값을 미리 구해놓고 사용할 때 가리는 것이다.
여기서 softmax 를 취하면 -inf 에 해당하는 부분은 0으로 바뀌게 된다.
디코더(Decoder)에서는 마스킹(Masking)이 되어야 하기 때문에 시퀀셜하게 데이터가 들어감.
디코더 파트의 구동은 어느정도 알아보았고,
인코더에서 디코더로 값은 어떻게 전달 될까?
이때도 어텐션 기법이 사용된다.
인코더를 지나온 값들이 해당하는 Key , Value 를 가지고 각각의 디코더(Decoder)의 영향을 미쳐서 결과로 나오게 됨
즉 , 인코더(Encoder)가 가지고 있는 Key , Value 값들이 디코더(Decoder)의 어텐션 스코어(Attention Scoer)를 계산하는 것에 있어서 영향을 미친다.
위 그림에서 어텐션은 총 3번 일어나게됨.
1. 인코더 내부에 있는 셀프어텐션
2. 디코더 내부에 있는 마스크드 셀프 어텐션
3. 인코더의 아웃풋과 디코더 사이에서의 어텐션
최종 단어 결정
Final Linear and softmax Layer
Linear layer(fully connected layer) 를 거쳐 Softmax를 거치게되면 최종적으로 우리가 찾아야하는 단어가 무엇인지
확률값(Softmax score)을 가지게 되고(vocab_size 만큼에 대한 각각의 확률값)
여기서 argmax로 뽑아낸(확률값이 제일 높은) 단어를 최종 단어로 선정함.
이미지 출처 : wikidocs.net/22893 , https://jalammar.github.io/
참고 영상 : https://www.youtube.com/watch?v=Yk1tV_cXMMU (고려대학교 산업경영공학과 강필성 교수님 강의)
'Machine learning > NLP' 카테고리의 다른 글
[NLP] BERT - (1).구조와 개념 (0) | 2021.09.04 |
---|---|
[NLP] . OOV 를 해결하는 방법 - 1. BPE(Byte Pair Encoding) (1) | 2021.08.22 |
[NLP] Transformer : Self-Attention ( Multi-head-Attention ) - part2 (0) | 2021.08.19 |
[NLP]. Transformer : Structure - part1 (0) | 2021.08.19 |
[NLP] Sequence to Sequence(시퀀스 투 시퀀스) 코드 (0) | 2021.08.19 |