1. 개요
- 입력된 시퀀스로부터 다른 도메인의 시퀀스를 출력하는 모델
- 챗봇, 번역, 요약, STT 등에 쓰일 수 있음
2. 구성
- RNNLM (RNN Language Model) 임
RNN의 기본 구조 : 현재시점(time step)을 t라고 할 때, RNN셀은 t-1에서의 은닉상태와 t에서의 입력 벡터를 input으로 받음. 그리고 t에서 은닉상태 ht를 만들고, t+1시점의 입력으로 이를 보냄
- 기본적으로 인코더(Encoder)와 디코더(Decoder)로 구성됨
- Context Vector(컨텍스트 벡터)에 인코더에서 입력받은 단어의 정보가 압축됨
이 Context Vector를 디코더로 전송함 (현업에서는 수백차원임)
- 인코더, 디코더 아키텍쳐는 두개의 RNN 아키텍쳐
물론 RNN은 Gradient Vanishing으로 앞 정보가 뒤로 온전히 전달되지 못하고,
아주 단순한 단일 tanh 레이어 구조이기 때문에 주로 LSTM이나 GRU 등을 사용함
- Context Vector(컨텍스트 벡터) : 인코더 RNN 셀의 마지막 시점의 은닉상태로 작용 (모든 인코더 셀의 과거 정보를 담고 있을 것)
→ 이는 디코더 RNN셀의 첫번째 은닉상태로 작용하게 됨
→ 단 하나의 고정된 Context Vector에 모든 인코더의 정보를 함축시킴
→ Sequence Length가 훨씬 길어진다면 과거 정보가 묻힌다는 문제가 발생할 것 (Catastrophic Forgetting 현상)
→ 결국 처음에 등장했던 단어를 번역해내는데에 실패할 가능성이 높음
- 모든 토큰화된 단어는 임베딩 layer를 거침
- Softmax 함수 : 각 시점(time step)의 RNN셀에서 나오는 출력 벡터를 softmax 함수에 넣어 각 단어별 확률값을 반환하고, 확률값이 가장 큰 것을 출력 단어로 최종 결정함
3. 훈련 상황
- 교사 강요(teacher forcing) : Catastrophic Forgetting 현상을 해결하기 위해 실제 정답을 알려주며 훈련
(첫번째 단어의 예측이 실패하면 그 뒤 예측도 제대로 될 수 없으므로)
but 테스트 상황에서는 오직 컨텍스트 벡터와 <sos>만을 입력으로 받은 상황에서 다음에 올 단어를 예측. 이 행위는 끝 심볼 <eos>가 다음 단어로 예측될 때까지 반복
'NLP' 카테고리의 다른 글
[TIL] In-context Learning with Long-context LLMs (0) | 2024.09.13 |
---|---|
[TIL] LLM as reward models/evaluators (#RLHF, #Self-improvement) (0) | 2024.08.30 |
[NLP] LORA : Low-Rank Adaptation of Large Language Models 논문 리뷰 (0) | 2023.04.04 |
[NLP] Transformer(트랜스포머, Attention is all you need) (0) | 2021.02.09 |
[NLP] Attention Mechanism (어텐션 메커니즘) (0) | 2021.02.09 |