8.1 어텐션(Attention) 구조
7장에서 다룬 seq2seq 모델의 문제점을 개선하기 위해두 가지 방법 1) 입력 데이터 반전(Reverse) 과 2) 엿보기(Peeky)을 사용했다.
- 입력 데이터 반전(Reverse)
: 입력 데이터의 순서를 반전 시키는 것만으로도 학습 속도와 정확도가 향상된다. 직관적으로는 기울기 전파가 원할해지기 때문이라고 생각할 수 있다.
( 7장을 리딩했던 스터디원의 의견으로는 입력 데이터를 반전하면 decoder하는 과정에서 해당 단어와 짧게 매칭되므로, "첫 단추를 잘 꼈기 때문"이라고 해석하였다. 언어별 어순마다 다르기 때문에, 모든 언어에 적용되는 해석은 아니겠지만 나름 설득력있는 해석 같다! ) - 엿보기(Peeky)
: 중요한 정보가 담긴 Encoder의 출력값 h를 Decoder에 전파할 때 첫 번째 LSTM에만 전파하는 것이 아니라, 다른 계층(LSTM 계층, Affine 계층)에도 h를 공유하는 방법이다.
7장에서는 이처럼 seq2seq 모델의 개선 방안을 소개했지만, 근본적인 한계점을 극복할 수 있는 더 강려크(?)한 방법 '어텐션 매커니즘'을 8장에서 소개한다.
8.1.1 seq2seq의 문제점
seq2seq에서 Encoder가 인코딩할 때 '고정 길이' 벡터로 출력하였다. 아무리 긴 문장이라고 하더라도 Encoder는 고정 길이 벡터로 변환해야 한다. 따라서, 중요한 정보들이 미처 담기지 못하는 한계점이 발생한다.
"나는 고양이로소이다" vs. "아무튼 어두컴컴하고 축축한 데서 야옹야옹 울고 있었던 것만은 분명히 기억한다."
두 문장의 길이는 확연히 다르지만, '고정 길이'의 벡터로 밀어 넣어야 한다.
8.1.2 Encoder 개선: "Encoder이 출력 길이를 입력 문장의 길이에 따라 바꿔준다"
'고정 길이 벡터' 문제를 해결하기 위해, 단어*별 LSTM 계층의 은닉 상태 벡터를 모두 이용한다. 이럴 경우, 입력된 단어와 같은 수의 은닉 벡터(hs)를 얻을 수 있다.
* 책에서는 '시각별'이라는 표현을 사용했지만, 주관적인 이해를 돕기 위해 '단어별'이라고 표현하였다.
Encoder가 출력하는 hs 행렬은 각 단어에 해당하는 벡터들의 집합이다. 즉, 단어 수만큼 벡터를 포함하며, 각각의 벡터는 해당 단어에 대한 정보를 많이 포함하게 된다.
8.1.3 Decoder 개선 (1) 필요한 정보에만 주목할 수 있도록 시계열 변환을 수행하는 어텐션
하... 너무 어렵다 패스패스
8.1.4 Decoder 개선 (2)
ㅇㅇㅇ
8.1.5 Decoder 개선 (3) Attention Weight 계층과 Weigth Sum 계층의 결합
'20. 인공지능과 딥러닝' 카테고리의 다른 글
밑바닥부터 시작하는 딥러닝 2 :: Ch 08 어탠션 (3) seq2seq2 심층 + skip 연결 (0) | 2019.07.14 |
---|---|
밑바닥부터 시작하는 딥러닝2 :: Ch 08 어텐션 (2) 양방향 LSTM (0) | 2019.07.14 |
Deep Learning Cookbook :: 06 (0) | 2019.05.01 |
Deep Learning Cookbook :: 04 위키피디아 외부 링크를 이용한 추천 시스템 구축 (0) | 2019.04.06 |
Deep Learning Cookbook :: Chapter 03 단어 임베딩을 사용하여 텍스트 유사성 계산하기 (2) (feat. SVM) (0) | 2019.03.10 |
댓글