hojeomi blog
Day 18. Seq2Seq Model with attention, Beam Search and BLEU 본문
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 셀에서 출력 벡터가 나오면, 해당 벡터는 소프트맥스 함수를 통해 출력 시퀀스의 각 단어별 확률값을 반환하고, 디코더는 출력 단어를 결정함
'AI > Course' 카테고리의 다른 글
Day 21. 그래프 이론 기초 & 패턴 (0) | 2021.02.22 |
---|---|
Day 19-1. 어텐션(attention), seq2seq with attention (0) | 2021.02.19 |
Day 16-2. Word Embedding: Word2Vec, GloVe (0) | 2021.02.15 |
Day 16-1. Intro to NLP, Bag-of-Words (0) | 2021.02.15 |
Day 14-2. Transfomer (0) | 2021.02.05 |
Comments