본문 바로가기

7. ML | DL | NLP

7/6(목) IT K-DT(86일차) / 6.Seq2Seq

 

6. Seq2Seq

 

6-3. Seq2Seq의 배경

 

6-3-2. Sqe2Seq 모델 구조

* Seq2Seq는 한 문장을 다른 문장으로 변환하는 모델을 의미.
* 가변길이의 입/출력을 처리하기 위해 인코더, 디코더 구조를 채택.
* 인코더와 디코더는 모두 여러 개의 LSTM 또는 GRU 셀로 되어있음.
* 바닐라 RNN 대신 LSTM과 GRU셀을 사용하는 이유는 LSTM과 GRU 모델이 RNN이 갖는 또다른 한계점인 Long-term dependency를 해결하기 위해서임.

 

 

6-3-3. 인코더

* 입력 문장을 컨텍스트 벡터에 인코딩(압축)하는 역할을 함.
* 인코더의 LSTM은 입력문장을 단어순서대로 처리하여 고정된 크기의 컨텍스트 벡터를 반환
* 컨텍스트 벡터는 인코더의 마지막 스텝에서 출력된 hidden state와 같음
* 컨텍스트 벡터는 입력문장의 정보를 함축하는 벡터이므로, 해당 벡터를 입력문장에 대한 문장수준의 벡터로 활용할 수 있음.

 

6-3-4. 디코더

* 입력 문장의 정보가 압축된 컨텍스트 벡터를 사용하여 출력 문장을 디코딩하는 역할
* 디코더의 LSTM은 인코더로부터 전달받은 컨텍스트 벡터와 문장의 시작을 뜻하는 <sos>토큰을 입력으로 받아서, 문장의 끝을 뜻하는 <eos>토큰이 나올 때 까지 문장을 생성함.
* LSTM의 첫 셀에서는 <sos>토큰과 컨텍스트 벡터를 입력받아서 그 다음에 등장할 확률이 가장 높은 단어를 예측하고, 다음 스탭에서 예측한 단어를 입력으로 받아서, 그 다음에 등장할 확률이 가장 높은 단어를 예측함.
* 위 과정을 재귀적으로 반복하다가 다음에 등장할 확률이 가장 높은 단어로 <eos>토큰이 나오면 생성을 종료함.

 

6-3-5. 학습 과정

* 모델을 학습할 때 Teacher Forcing이라는 기법을 사용
* 모델 학습 과정에서는 이전 셀에서 예측한 단어를 다음 셀의 입력으로 넣어주는 대신 실제 정답 단어를 다음 셀의 입력으로 넣음
* 만약 위 방법으로 학습하지 않으면 이전 셀에서의 오류가 다음 셀로 계속 전파될 것이고 그러면 학습이 제대로 되지 않음.

 

6-3-6. 한계점

* 가변적인 길이의 입/출력을 처리하는데 효과적인 모델구조이며, 실제로 기계 번역 작업에서 성능 향상을 거뒀으나 여전히 한계를 가짐.
* 인코더가 출력하는 벡터 사이즈가 고정되어있기 때문에, 입력으로 들어오는 단어의 수가 매우 많아지면 성능이 떨어짐.
* RNN 구조의 모델에서는 hidden state를 통해 이전 셀의 정보를 다음 셀로 계속 전달하는데 문장의 길이가 길어지면 초기 셀에서 전달했던 정보들이 점차 흐려지게 됨.
* LSTM, GRU 같은 모델들이 제안되긴 했으나 여전히 이전 정보를 계속 압축하는 한계가 있음.

 

 

6-4. Attention Mechanism

* 기본적으로 Seq2Seq 모델의 한계를 해결하기 위해 2014년도에 제안한 논문.
* 입력 시퀀스가 길어지면 출력 시퀀스의 정확도가 떨어지는 것을 보정해주기위해 등장한 기법.

 

6-4-1. 어텐션 아이디어

* 디코더에서 출력 단어를 예측하는 매 시점(time step)마다, 인코더에서의 전체 입력문장을 다시 한번 참고한다는 점.
* 단, 전체 입력 문장을 전부 다 동일한 비율로 참고하는 것이 아니라, 해당 시점에서 예측해야 할 단어와 연관이 있는 입력 단어 부분을 좀더 집중해서 보게함.

 

6-4-2. 어텐션 함수

* 어텐션을 함수로 표현
  - Attention(Q, K, V) = Attention Value
* 어텐션 함수는 주어진 쿼리에 대해서 모든 키와의 유사도를 각각 계산
* 계산된 유사도를 키와 맵핑되어있는 각각의 값에 반영한 뒤 유사도가 반영된 값을 모두 더해서 반환(어텐션 값)

 

6-4-3. 어텐션과 Seq2Seq

* 어텐션 메커니즘은 Seq2Seq 모델이 가지는 한계를 해결하기위해 제안되었기때문에 논문에서는 Seq2Seq 모델에 어텐션 메커니즘을 적용한 모델을 제안함.

 

6-4-4. 어텐션 작동 원리

* 디코더의 첫번째, 두번째 LSTM셀은 어텐션 메커니즘을 통해 단어를 예측하는 과정을 거쳤다고 가정하고 디코더의 세번째 LSTM셀은 출력 단어를 예측하기 위해 인코드의 모든 입력단어들의 정보를 다시 참고함.
* 인코더의 시점을 각각 1, 2, ...N 이라고 했을 때, 인코더의 각 셀에 대한 hidden state를 각각 h1, h2, ...hn이라고 하고 디코더의 현재 시점 t에서 해당 셀의 hidden state를 St라고 함
* 어텐션 스코어는 hidden state 벡터 간 dot product를 사용하여 계산함.