본문 바로가기

Data Analysis/Natural Language Processing

sequence -to-sequence (seq-2-seq)

  • 기계 번역 분야(번역기)에서 대표적으로 사용되는 모델
  • 내부가 보이지 않는 커다란 블랙 박스에서 점차적으로 확대해가는 방식

 

RNN의 한계와 seq-2-seq의 등장 배경

일반적인 RNN에서는 입력 시퀀스와 출력 시퀀스의 크기는 고정되어 있었다. 입력 시퀀스의 크기는 가변적일 수 있었으나, padding을 통해 동일한 크기로 만들어서 사용했었다. 기계 번역 분야에서는 한 언어에서 다른 언어로 번역할 때 문장의 길이가 달라질 수 있기 때문에 가변적인 출력 시퀀스에 대한 처리가 필요할 것이다.

 

 

Sequence-to-Sequence

: RNN 계열의 모델을 활용한 새로운 구조

인코더 아키텍쳐와 디코더 아키텍쳐의 내부는 각각 두 개의 RNN 아키텍쳐이다. 입력 문장을 받는 RNN 셀을 인코더라고 하고, 출력 문장을 출력하는 RNN 셀을 디코더라고 한다. (성능 문제로 인해 RNN이 아닌 LSTM이나 GRU 셀들로 구성한다).

인코더 부분에서는 입력 시퀀스를 LSTM이나 GRU 셀을 이용해서 hidden state로 넘겨주면서, 마지막 단계의 hidden state를 디코더에게 전달한다. 마지막 단계의 hidden state를 컨텍스트 벡터(context vector)라고 하며, 이 정보를 입력 시퀀스, 즉 입력 문장에 대한 압축된 정보라고 생각할 수 있다.

seq2seq는 주어진 입력 시퀀스(x)를 아래 수식을 반복하여 출력 시퀀스(y)를 생성하는 것이다. 즉, 입력 문장이 들어왔을 때, 번역 문장이 생성될 조건부 확률이다. 

위 식에서 v는 컨텍스트 벡터이며,  t시점의 y 단어를 생성하기 위해 t시점 이전의 y와 컨텍스트 벡터가 input으로 들어가는 것을 의미한다. 그리고 p(yt|v, y1, . . . , yt−1) 확률은 softmax를 통해 단어가 나올 확률을 계산한다.

 

기계 번역 분야에서 입/출력 시퀀스가 가변적이기 때문에 토큰(token) 개념을 도입한다. 입력 시퀀스와 출력 시퀀스의 문장 끝부분에 EOS(End of Statement)를 사용한다. 

 

한계점

RNN을 사용했으므로, 문장 길이가 길어질 수록 기울기 소실 문제(Vanishing Gradient)가 발생한다. LSTM으로 이를 보정할 수 있지만, 완벽히 방지되는 것은 아니다. 인코더 부분에서 입력 시퀀스를 고정된 크기의 벡터로 만들기 때문에, 정보를 압축하는 과정에서 손실이 발생한다. 이러한 문제는 입력 시퀀스가 클수록 성능을 많이 저하시킨다. 

 

 

 

References

https://ays-tudio.tistory.com/12

https://blog.naver.com/winddori2002/222001331899

https://wikidocs.net/24996