-
[HandsOn] 16. RNN과 어텐션을 사용한 자연어 처리 - 내용 정리3[도서완독]Hands On Machine Learning 2022. 8. 19. 22:02
16.4 어텐션 매커니즘
인코더-디코더 네트워크에서 한 단어가 다른 단어로 번역되기까지의 과정은 매우 김...경로를 더 짧게 만들 수는 없을까?
각 타임 스텝에서 적절한 단어에 디코더가 초점을 맞추도록 하는 기술이 나옴. lait를 출력해야 하는 타임 스텝에서, milk에 주의를 집중하는 것. 입력-> 번역까지 경로가 훨씬 짧아지므로 RNN의 단기 기억의 제한성에 훨씬 적은 영향을 받게 됨.
특히 긴 문장에 대해서 성능이 크게 향상됨!!
1. 인코더의 모든 출력을 디코더로 전송함.
2. 각 타임 스텝에서 디코더의 메모리 셀은 이런 모든 인코더 출력의 가중치 합 계산. 이 단계에서 주의를 집중할 단어를 결정.
3. 디코더는 타임 스텝마다 메모리 셀이 앞서 언급한 입력, 이전 타임 스텝의 은닉 상태를 받음 . 또한 이전 타임 스텝에서 타깃 단어를 받음. (훈련시에)여기서 가중치 a(t,i)은 어디서 오는 것일까?
정렬 모델(또는 어텐션 층)이라 부르는 작은 신경망에 의해 생성됨.
Dense 층에서 인코더의 모든 출력을 입력으로 받고, 디코더의 이전 은닉 상태를 연결.
이 층은 각 인코더 출력에 대한 점수 e(t,i)를 출력(각 출력이 디코더의 은닉 상태와 얼마나 잘 맞는지를 측정)
얘는 소프트맥스 층을 통과해서 최종 가중치a를 얻음.
이 어텐션 매커니즘은 바흐다나우 어텐션 또는 연결 어텐션이라고 함!
(넘어려움ㅡㅜ)
하지만 루옹 어텐션(곱셈 어텐션), 일반 점곱 방법이 나오면서 연결 어텐션은 많이 사용되지 않는다고 함...
- 루옹 어텐션: 인코더의 출력과 디코더의 이전 히든 스테이트간에 similarity를 측정하는 것
연결 어텐션은 concat 하지만 얘는 dot product를 함
16.4.1 비주얼 어텐션
비주얼 어텐션을 이용해 사진에 캡션을 달 수 있음!
공원에서 여자가 프리스비를 던지는 사진에 'A woman is throwing a frisbee in a park' 으로 캡션을 달 수 있음.
또한 디코더가 frisbee를 출력할 때 입력 이미지의 어떤 부분에 초점을 맞추고 있는지 볼수 있음.
이런 것을 설명가능성(explainability)라고 함.
16.4.2 트랜스포머 구조: 어텐션이 필요한 전부다
트랜스포머는 순환 층, 합성곱 층을 전혀 사용하지 않고 어텐션 매커니즘만 사용해 기계 번역 문제에서 최고 수준 성능을 크게 향상함....
- 왼쪽 부분은 인코더. 단어 id의 시퀀스로 포현된 문장의 배치를 입력으로 받음.인코더는 각 단어를 512차원의 표현으로 인코딩.인코더의 윗 부분은 N번 반복되어 쌓아 올림(?)
- 오른쪽은 디코더. 훈련하는 동안 타깃 문장을 입력으로 받음. 또한 인코더의 출력을 받음. 얘도 N번 반복되어 쌓아 올림(?) 인코더의 최종 출력이 N번의 인코더에 모두 주입됨. 타임 스텝마다 디코더는 가능한 다음 단어에 대한 확률을 출력.
- 추론 시에는 디코더에 타깃을 주입할 수 없으므로, 이전 타임 스텝에서 출력된 단어를 주입함. 이 모델이 반복적으로 실행되어 매번 하나의 단어를 예측.
- 다른 구성 요소는 이미 알고 있는 것들임.
새로운 구성 요소가 있음.
인코더의 멀티-헤드 어텐션
관련이 많은 단어에 더 많은 주의를 기울이면서 각 단어와 동일한 문장에 있는 다른 단어의 관계를 인코딩.
They welcomed the Queen of the United Kingdom 에 있는 단어 Queen 에 때해 이 층의 출력은 United 와 Kingdom에 대해 더 주의를 것일 것임. 이러한 어텐션 메커니즘을 셀프- 어텐션 이라고 함. (문장 자기 자신에게 주의를 기울임)
'[도서완독]Hands On Machine Learning' 카테고리의 다른 글
[HandsOn] 17. 오토인코더와 GAN을 사용한 표현 학습과 생성적 학습- 내용 정리2 (0) 2022.08.26 [HandsOn] 17. 오토인코더와 GAN을 사용한 표현 학습과 생성적 학습- 내용 정리1 (0) 2022.08.23 [HandsOn] 16. RNN과 어텐션을 사용한 자연어 처리 - 내용 정리2 (0) 2022.08.18 [HandsOn] 16. RNN과 어텐션을 사용한 자연어 처리 - 내용 정리1 (0) 2022.08.16 [HandsOn]15. RNN과 CNN을 사용해 시퀀스 처리하기 - 내용 정리2 (0) 2022.08.13 - 루옹 어텐션: 인코더의 출력과 디코더의 이전 히든 스테이트간에 similarity를 측정하는 것