hojeomi blog

Day 18. Seq2Seq Model with attention, Beam Search and BLEU 본문

AI/Course

Day 18. Seq2Seq Model with attention, Beam Search and BLEU

호저미 2021. 2. 18. 03:14

출처: wikidocs.net/24996

 

1. Seq2Seq: many-to-many

  • 예) 챗봇, 번역기
  • 크게 두 개로 구성된 아키텍처 - 인코더, 디코더
  • 인코더는 입력 문장의 모든 단어들을 순차적으로 입력받은 뒤에 마지막에 이 모든 단어 정보들을 압축해서 하나의 벡턱로 만듦 → 컨텍스트 벡터(context vector)
  • 입력 문장의 정보가 하나의 컨텍스트 벡터로 모두 압축되면 인코더는 컨텍스트 벡터를 디코더로 전송함
  • 디코더는 컨텍스트 벡터를 받아서 번역된 단어를 한 개씩 순차적으로 출력함
  • 인코더 아키텍처와 디코더 아키덱처의 내부는 각각 RNN 아키텍처
  • 입력 문장을 받는 RNN 셀을 인코더, 출력 문장을 출력하는 RNN 셀을 디코더
  • 실제로는 성능문제로 바닐라RNN이 아닌 LSTM, 또는 GRU 셀로 구성됨

 

 

 

2. 인코더

  • 입력 문장은 단어 토큰화를 통해서 단어 단위로 쪼개지고 단어 토큰 각각은 RNN 셀의 각 시점의 입력
  • 인코더 RNN 셀은 모든 단어를 입력받은 뒤에 인코더 RNN 셀의 마지막 시점의 은닉 상태를 디코더 RNBN 셀로 넘겨주는데 이를 컨텍스트 벡터라고 함
  • 컨텍스트 벡터는 디코더 RNN 셀의 첫번째 은닉 상태로 사용됨

 

 

3. 디코더

  • 기본적으로 RNNNL(RNN Language Model)
  • 디코더는 초기 입력으로 문장의 시작을 의미하는 심볼 <SOS>가 들어감
  • <SOS>가 입력되면 다음에 등장할 확률이 높은 단어 예측함
  • 첫 번째 시점(time step)의 디코더 RNN 셀은 다음에 등장할 단어로 je를 예측, 그리고 두 번째 시점의 디코더 RNN 셀은 입력된 단어 je로부터 다시 다음에 올 단어인 suis를 예측, 또 다시 이것을 다음 시점의 RNN 셀의 입력으로 보냄
  • 디코더는 이런 식으로 기본적으로 다음에 올 단어를 예측하고, 그 예측한 단어를 다음 시점의 RNN 셀의 입력으로 넣는 행위 반복
  • 이 행위는 문장의 끝을 의미하는 심볼인 <SOS>가 다음 단어로 예측될 때까지 반복
  • ~테스트 과정
  • seq2seq는 훈련 과정과 테스트 과정(또는 실제 번역기를 쓸 때)의 작동 방식이 다름
  • 훈련 과정에서는 디코더에게 인코더가 보낸 컨텍스트 벡터와 실제 정답인 상황인 <sos> je suis étudiant를 입력 받았을 때, je suis étudiant <eos>가 나와야 된다고 정답을 알려주면서 훈련 → 교사 강요(teacher forcing)반면 테스트 과정에서는 디코더는 오직 컨텍스트 벡터와 <sos>만을 입력으로 받은 후에 다음에 올 단어를 예측하고, 그 단어를 다음 시점의 RNN 셀의 입력으로 넣은 행위를 반복함

 

 

3. 입, 출력의 토큰들에 대해

  • 출력 단어로 나올 수 있는 단어들은 다양함. seq2seq 모델은 선택될 수 있는 모든 단어들로부터 하나의 단어를 골라서 예측해야함
  • 이를 위해 소프트맥스 함수를 함께 씀
  • 디코더에서 각 시점(time step)의 RNN 셀에서 출력 벡터가 나오면, 해당 벡터는 소프트맥스 함수를 통해 출력 시퀀스의 각 단어별 확률값을 반환하고, 디코더는 출력 단어를 결정함

 

Comments