sequence to sequnce

seq2seq의 input, output의 길이는 같을 필요는 없다.

 

encoder : 입력된 정보를 어떻게 처리해서 저장할 것이냐?

- context vector를 생성

- context vector를 decoder로 넘겨줌

decoder : 압축된 정보를 어떻게 풀어서 반환해줄것인가?

- output sequence를 item by item으로 넘겨줌

 

Encoder-Decoder with RNN

- RNN : input 값을 hidden state와 output값으로 처리해줌. 이 값들을 계속 전달해나가는 구조

- 가장 마지막의 hidden state인 context vector가 decoder로 전달 됨.

- docoder를 통해 다시 sequence가 추출됨(i, am, a, student)

- 특징 : context vector가 뒤쪽의 hidden state에 큰 영향을 받고, 앞쪽 hidden state들의 영향은 미미함

 

Attention

- long sentences에 대해서 context vector는 bottleneck(병목현상)이 발생할 수 있음.

- model이 각각 input sequence에 대해 중요한 부분을 가중치를 부여하여 attention 구조를 만듦.

2가지 Attention 구조

Bah~~ attention : 모델 학습을 통해 attention score를 만드는 구조

Luong attention : 모델 학습을 하지 않고 단순 곱셈 연산으로 attention score를 만드는 구조 (실용적)

 

attention is seq2seq learning

- encoder가 decoder로 더 많은 정보를 넘겨줌(final hidden state만 넘겨주는 것이 아니기 때문에)

- 모든 hidden state를 decoder로 넘겨줌

- 중요한 단어에 가중치를 부여할 수 있음

Attention 메커니즘 단계

1) input에 해당하는 hidden state 정보를 가져옴. decoder가 만드는 hidden state를 가져옴

2) attention score : decoder hidden state와 encoder hidden state를 내적한 값을 구함.

3) softmax score : decoder가 가져온 정보를 추론함

4) 각각의 벡터들을 concat해서 context vector를 만듦.

 

전체 메커니즘

attention score를 구한 후 context vector를 구함.

context vector와 hidden state를 concat한 후 ff-net을 거침

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기