시퀀스-투-시퀀스(Sequence-to-Sequence, seq2seq)
- 입력된 시퀀스를 다른 시퀀스로 변환하는 작업을 수행하는 딥러닝 모델
- 주로 자연어 처리(NLP) 분야에서 활용
- ex) 챗봇, 기계 번역, 요약, STT
아래 그림은 seq2seq 모델을 간략하게 표현한 그림

ex)
- 'I am a student'라는 영어 문장을 입력
- 'je suis étudiant'라는 프랑스 문장을 출력
seq2seq 구조
-> 인코더와 디코더로 구성됨
인코더
- 입력 문장의 모든 단어들을 순차적으로 입력받음
- 입력받은 뒤에 마지막에 모든 단어 정보들을 압축해서 하나의 벡터로 만듦 -> 컨텍스트 벡터(context vector)
디코더
- 컨텍스트 벡터를 받아서 번역된 단어를 한 개씩 순차적으로 출력
인코더 -> RNN 구조를 사용하여 입력 시퀀스를 컨텍스트 벡터로 변환하는 역할
디코더 -> RNN 구조를 사용하여 컨텍스트 벡터를 기반으로 원하는 출력 시퀀스를 생성하는 역할

위 사진은 인코더와 디코더 내부를 확대한 사진
인코더와 디코더는 RNN 구조로 이루어진 RNN 아키텍처임
그림에서는 LSTM이지만, GRU와 바닐라 RNN도 사용 가능
문장이 인코더에 입력되면
- 단어 단위로 토큰화
- 단어 토큰 각각은 RNN 셀의 각 시점의 입력
- 인코더 RNN 셀의 마지막 시점의 은닉 상태 : 컨텍스트 벡터 -> 디코더 RNN 셀의 첫번째 은닉 상태
컨텍스트 벡터
- 인코더에서의 마지막 RNN 셀의 은닉 상태
- 입력 문장의 모든 단어 토큰들의 정보를 요약해서 담고 있음
컨텍스트 벡터가 디코더에 입력되면
- 초기 입력으로 심볼 <sos>가 함께 입력됨
- 디코더는 <sos>가 입력되면 다음에 등장할 확률이 높은 단어를 예측
ex)
첫번째 시점의 디코더 RNN 셀은 다음에 등장할 단어로 je 예측 -> je를 다음 시점의 입력으로 사용
두번째 시점의 디코더 RNN 셀은 다음에 등장할 단어로 suis 예측 -> suis를 다음 시점의 입력으로 사용
...
문장의 끝을 의미하는 심볼인 <eos>가 다음 단어로 예측될 때까지 반복
-> 테스트 과정
아래 사진은 테스트 과정이 이루어지는 디코더 부분, 전체 과정


seq2seq는 선택 가능한 모든 단어들로부터 하나의 단어를 예측해야함
-> 소프트맥스 함수 사용
-> 각 시점의 RNN 셀에서 출력 벡터가 나오면, 소프트맥스 함수를 통해 각 단어별 확률값을 반환
교사 강요(teacher forcing)
- 훈련 과정 : 컨텍스트 벡터와 실제 정답인 <sos> je suis étudiant 을 입력 받았을 때, je suis étudiant <eos>가 나와야 된다고 정답을 알려주면서 훈련
- 테스트 과정 : 디코더는 오직 컨텍스트 벡터와 <sos>만을 입력으로 받은 후에 다음에 올 단어를 예측하고, 그 단어를 다음 시점의 RNN 셀의 입력으로 넣는 행위를 반복
교사 강요에 대한 자세한 설명은 아래 글 참고
RNN 언어 모델(RNNLM)
피드 포워드 신경망 언어 모델(NNLM) (tistory.com) 피드 포워드 신경망 언어 모델(NNLM) 피드 포워드 신경망 언어 모델(Feed Forward Neural Network Language Model) - 신경망 언어 모델의 시초 피드 포워드 신경망(
tgwon.tistory.com
한계점
- 고정된 길이의 컨텍스트 벡터로 압축하는 과정에서 정보 손실이 발생할 수 있음
-> 시퀀스 길이가 길수록 정보 손실 위험
- RNN의 고질적인 문제인 기울기 소실 or 폭발 문제 존재
-> 이를 극복하기 위해 제안된 방법이 어텐션 매커니즘
'Python > NLP' 카테고리의 다른 글
| 트랜스포머(Transformer) - 입력(포지셔널인코딩) (0) | 2023.07.15 |
|---|---|
| 어텐션(인코더-디코더 Attention, Dot-Product Attention) (0) | 2023.06.27 |
| 장단기 메모리(Long Short-Term Memory, LSTM) (0) | 2023.03.26 |
| 워드투벡터(Word2Vec) (0) | 2023.03.20 |
| 워드 임베딩이란 (0) | 2023.03.20 |