728x90
Sequence-to-Sequence(이하 Seq2Seq) 모델은 기존의 모델(RNN, LSTM, GRU)가 입출력 크기가 고정되어 자연어 처리의 가변적인 길이의 입출력을 처리하지 못함에 따라 이 문제를 해결하고자 등장하였다.
RNN 모델은 각 시간 단계마다 이전 시간 단계의 출력을 현재 시간 단계의 입력으로 전달한다. 그런데 시퀀스가 길어질수록 이전 정보를 잘 유지하지 못하는 문제가 발생한다. => 장기 의존성 문제(Long-term dependency problem)
2014년에 Seq2Seq가 등장하면서 기계 번역의 돌파구가 되었다. Seq2Seq는 Transformer(2017)가 발표되기 전까지 SOTA(state-of-the-art)로 사용되었다.
Seq2Seq 모델의 학습 과정과 추론 과정에는 차이점이 있다.
<학습 과정>
- 인코더(Encoder):
입력 시퀀스를 처리하는 인코더 부분은 각 시간 단계에서 입력 토큰을 임베딩하고 순환 셀(일반적으로 LSTM이나 GRU)을 통해 은닉 상태를 계산한다. 마지막 시간 단계의 은닉 상태가 디코더의 초기 상태로 사용된다. - 디코더(Decoder):
디코더는 시작 토큰을 입력으로 받아 출력 시퀀스를 생성한다. 디코더의 각 시간 단계에서는 이전 시간 단계의 출력과 은닉 상태를 사용하여 다음 토큰을 예측한다. Teacher forcing이라는 기법을 사용하여 디코더의 입력으로 '실제 시퀀스'의 이전 토큰을 사용한다. 이렇게 함으로써 모델이 정확한 시퀀스를 생성하도록 돕는다.
<추론 과정>
- 인코더(Encoder):
학습과 마찬가지로 입력 시퀀스를 인코더에 통과시켜 마지막 은닉 상태를 얻는다. - 디코더(Decoder):
추론 과정에서는 디코더의 시작 토큰을 입력으로 사용하여 시퀀스를 생성한다. 디코더는 이전 시간 단계의 출력과 은닉 상태를 사용하여 다음 토큰을 예측한다. 다음 토큰은 확률 분포로써 선택되며, 빔서치와 같은 탐색 알고리즘이 사용된다. 이렇게 예측된 토큰은 다음 시간 단계의 입력으로 사용된다.
다시 말해, 학습 과정에서는 디코더가 목표 시퀀스의 실제 값으로부터 훈련되지만, 추론 과정에서는 디코더가 생성한 토큰을 이용하여 시퀀스를 생성한다.
728x90
'자연어 처리(NLP) 공부' 카테고리의 다른 글
| Cell state and 4 Gates of LSTM (0) | 2023.09.02 |
|---|---|
| RNN의 한계점과 해결 방안 - LSTM, GRU (0) | 2023.09.02 |
| KoNLPy 형태소 분석기별 품사태그(PoS) 비교 (0) | 2023.08.23 |
| TF-IDF 계산해 보기 (0) | 2023.08.19 |
| 뉴스 기사 전처리 시 고려할 것들? (0) | 2023.08.19 |