Seq2Seq 모델

AI Scientist를 목표로!·2022년 8월 6일
0

NLP

목록 보기
4/5

Seq2Seq 개요

Seq2Seq는 기계번역의 성능을 높여준 모델입니다.
Seq2Seq 이전의 기계번역의 경우 영어를 프랑스어로 변경할 때 각 언어의 문장 길이(단어의 수)가 일치하지 않는 다는 문제점이 있었습니다.

[English] the black cat drank milk (5 words) 
[French] le chat noir a bu du lait (7 words)

이전 RNN 모델은 하나의 입력값에는 하나의 은닉층과 하나의 출력값만 존재했기 때문에 입력값과 출력값의 길이가 동일할 수 밖에 없었습니다.

이러한 한계점을 해결하기 위해 등장한 것이 Seq2Seq 입니다.

Seq2Seq는 두 개의 순환 신경망(recurrent neural network)로 이루어진 end-to-end model입니다.
Seq2Seq를 이루는 두 개의 순환 신경망은 다음과 같습니다.

encoder: 입력값을 받아 이를 고정된 크기의 문맥 벡터(context vector)로 변환한다.

decoder: 문맥 벡터를 seed로서 사용해 출력값을 만든다.

인코더와 디코더로 구성되어 있기 때문에, Seq2Seq 모델은 종종 encoder-decoder model이라고도 불립니다.


Encoder

인코더는 입력한 시퀀스의 정보를 어떻게 압축하여 처리할지를 담당하고, 다시말하면 인코더는 각각의 요소들을 컴파일(Compile)하여 하나의 벡터 즉, 문맥(context)벡터로 표현합니다.

문맥 벡터에는 문장에 대한 정보가 응축되어 있습니다.

여기서 인코더는 특이한 특징을 가지게 됩니다.
그것은 바로 입력된 시퀀스를 역전된 순서로 처리하는 것 입니다.

만약 "나는 딸기잼을 샀다."라는 문장이 있다면, 인코더는 이 문장을 "샀다 딸기잼을 나는"의 순서로 읽어들이게 됩니다.

이렇게할 경우 인코더가 보는 마지막 입력값인 "나는"이 모델의 첫 번째 출력값 "i"에 대응하게 됩니다.
이 방법은 디코더가 출력값을 생성하기 시작하는 것을 조금 더 쉽게 만들어 주며, 적합한 출력값을 생성하는 것에도 도움을 줍니다.


Decoder

디코더는 인코더가 압축하여 넘겨준 정보를 어떤식으로 변환(반환)할지를 담당합니다.
이 역시, 인코더의 문맥 벡터를 넘겨받아 새로운 아이템 시퀀스를 출력합니다.

디코더의 hidden state가 인코더에서 생성한 문맥 벡터로 초기화 됩니다.

디코더가 초기화되고 나면, 출력값 생성을 시작하는 <EOS> 토큰이 등장하게 됩니다. 이후 각각의 레이어와 softmax 함수를 거쳐 첫 번째 단어를 출력하게 됩니다.

출력된 첫 번째 당너는 다시 첫 번째 레이어의 입력값이 되어 위 과정을 반복하게 됩니다.

아래의 영상은 Encoder - Decodner 과정을 잘 보여주는 영상입니다.



Attention

위의 Seq2Seq 모델은 인코더에서 입력 시퀀스를 문맥(context)벡터라는 하나의 고정된 크기의 벡터 표현으로 압축하고, 디코더는 문맥(context)벡터를 통해 출력 시퀀스를 생성하였습니다.

하지만 이런 RNN 기반의 Seq2Seq모델에는 크게 2가지의 문제점이 존재합니다.

  • 하나의 고정돤 크기의 벡터에 모든 정보를 압축하기 때문에 정보 손실이 발생하게 된다.
  • RNN의 고질적인 문제인 기울기 소실(Vanishing Gradient)문제가 존재한다

위와 같은 문제점으로 인해 기계 번역 분야에 있어 입력 문장이 길어지면 번역 품질이 떨어지는 현상이 나타나게 됩니다.

이런 문제점에 대한 대안으로 등장한 것이 Attention입니다.

Attention은 디코더에서 출력 단어를 예측하는 매 시점(time-step마다, 인코더에서 전체 입력 문장을 다시 한번 참고하는 것 입니다.
문장을 참고하는 과정에서 전체 입력 문장을 동일한 비율로 참고하는 것이 아닌, 각 시점에서 예측해야할 단어와 연관이 있는 입력 단어 부분을 더 집중적으로 보는 것 입니다.

이와 관련된 조금 더 자세한 내용은 다음 포스팅에서 다루도록 하겠습니다.

profile
딥러닝 지식의 백지에서 깜지까지

0개의 댓글