본문 바로가기
  • 기술을 이야기하지만 사람을 생각합니다.
20. 인공지능과 딥러닝

밑바닥부터 시작하는 딥러닝2 :: Ch 08. 어텐션 (1) 어텐션 구조

by WE DONE IT. 2019. 7. 14.

8.1 어텐션(Attention) 구조

7장에서 다룬 seq2seq 모델의 문제점을 개선하기 위해두 가지 방법 1) 입력 데이터 반전(Reverse) 과  2) 엿보기(Peeky)을 사용했다. 

  1. 입력 데이터 반전(Reverse)
    : 입력 데이터의 순서를 반전 시키는 것만으로도 학습 속도와 정확도가 향상된다. 직관적으로는 기울기 전파가 원할해지기 때문이라고 생각할 수 있다.
    ( 7장을 리딩했던 스터디원의 의견으로는 입력 데이터를 반전하면 decoder하는 과정에서 해당 단어와 짧게 매칭되므로, "첫 단추를 잘 꼈기 때문"이라고 해석하였다. 언어별 어순마다 다르기 때문에, 모든 언어에 적용되는 해석은 아니겠지만 나름 설득력있는 해석 같다! )
  2. 엿보기(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 계층의 결합

 

 

 

 

댓글