DL

[NLP] 자연어처리 기초부터 Attention까지: seq2seq

gomduribo 2023. 8. 19. 16:25

*사이토 고키의 밑바닥부터 시작하는 딥러닝2를 공부하고 정리하는 내용입니다. 정리하는 과정에서 혹여나 잘못된 내용이 들어가 있을수 있습니다.

 

기계번역, 음성인식 과 같이 시계열데이터를 또 다른 시계열 데이터로 변환해야하는 task들이 있습니다. 책에서는 이처럼입력과 출력이 시계열데이터인 문제를 해결하는 모델로 seq2seq(sequence to sequence)를 소개하고 있습니다.

 

seq2seq

seq2seq은 Encoder-Decoder 모델로 불리기도합니다.

 

 

예를 들어 위와 같이 '나는 고양이로소이다'라는 문장을 'I am a cat'이라는 문장으로 번역을 한다고 했을때, Encoder는 밑의 그림과 같이 LSTM(뿐만아니라 다른 모델로도 가능)으로 시계열데이터인 '나는 고양이로소이다'라는 문장을 h라는 은닉상태벡터로 변환합니다.

 

 

사진에서 볼수 있듯, Encoder가 생성하는 h는 이어진 LSTM계층중 마지막 계층에서 출력한 은닉상태입니다. 즉, 여기서 알수 있듯이 어떤 시계열 데이터를 인코딩한다는것은 임의의 길이의 문장을 '고정길이' 벡터로 변환하는것입니다.

 

Decoder는 위의 Encoder에서 쓰인 신경망과 비슷하지만 첫 LSTM계층이 Encoder에서 생성된 은닉벡터인 h를 입력받습니다.

 

은닉벡터 h를 입력받은 Decoder는 문장생성의 시작을 알리는 <eos>를 입력받게 되면 학습된 문장을 생성하게 됩니다. 

 

이렇게 Encoder와 Decoder를 연결하게 되면 다음과 같을 것입니다.

 

 

위와같은 구조에서 Encoder에서 인코딩된 정보가 LSTM의 은닉벡터를 통해 Decoder로 전달되고(순전파), 역전파 시에는 이 은닉벡터를 통해 기울기가 Decoder에서 Encoder로 전달되게 됩니다.