[NLP] Sequence-to-Sequence (Seq2Seq, 시퀀스 투 시퀀스)

2021. 2. 8. 01:25·NLP
반응형

1. 개요

- 입력된 시퀀스로부터 다른 도메인의 시퀀스를 출력하는 모델
- 챗봇, 번역, 요약, STT 등에 쓰일 수 있음

 


2. 구성  

- RNNLM (RNN Language Model) 임

출처 : https://ratsgo.github.io/natural%20language%20processing/2017/03/09/rnnlstm/

RNN의 기본 구조 : 현재시점(time step)을 t라고 할 때, RNN셀은 t-1에서의 은닉상태와 t에서의 입력 벡터를 input으로 받음. 그리고 t에서 은닉상태 ht를 만들고, t+1시점의 입력으로 이를 보냄 

 

출처 : https://wikidocs.net/24996

- 기본적으로 인코더(Encoder)와 디코더(Decoder)로 구성됨
- Context Vector(컨텍스트 벡터)에 인코더에서 입력받은 단어의 정보가 압축됨
  이 Context Vector를 디코더로 전송함 (현업에서는 수백차원임)

출처 : https://wikidocs.net/24996

- 인코더, 디코더 아키텍쳐는 두개의 RNN 아키텍쳐
  물론 RNN은 Gradient Vanishing으로 앞 정보가 뒤로 온전히 전달되지 못하고, 
  아주 단순한 단일 tanh 레이어 구조이기 때문에 주로 LSTM이나 GRU 등을 사용함

- Context Vector(컨텍스트 벡터) : 인코더 RNN 셀의 마지막 시점의 은닉상태로 작용 (모든 인코더 셀의 과거 정보를 담고 있을 것)

  → 이는 디코더 RNN셀의 첫번째 은닉상태로 작용하게 됨
  → 단 하나의 고정된 Context Vector에 모든 인코더의 정보를 함축시킴
  → Sequence Length가 훨씬 길어진다면 과거 정보가 묻힌다는 문제가 발생할 것 (Catastrophic Forgetting 현상)
  → 결국 처음에 등장했던 단어를 번역해내는데에 실패할 가능성이 높음

- 모든 토큰화된 단어는 임베딩 layer를 거침

출처 : https://wikidocs.net/24996

- 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
'NLP' 카테고리의 다른 글
  • [TIL] LLM as reward models/evaluators (#RLHF, #Self-improvement)
  • [NLP] LORA : Low-Rank Adaptation of Large Language Models 논문 리뷰
  • [NLP] Transformer(트랜스포머, Attention is all you need)
  • [NLP] Attention Mechanism (어텐션 메커니즘)
당니이
당니이
씩씩하게 공부하기 📚💻
  • 당니이
    다은이의 컴퓨터 공부
    당니이
  • 전체
    오늘
    어제
    • 분류 전체보기 (136)
      • Achieved 👩🏻 (14)
        • 생각들 (2)
        • TIL (6)
        • Trial and Error (1)
        • Inspiration ✨ (0)
        • 미국 박사 준비 🎓 (1)
      • Computer Vision💖 (39)
        • Basic (9)
        • Video (5)
        • Continual Learning (7)
        • Generative model (2)
        • Domain (DA & DG) (5)
        • Multimodal (8)
        • Multitask Learning (1)
        • Segmentation (1)
        • Colorization (1)
      • RL 🤖 (1)
      • Autonomous Driving 🚙 (11)
        • Geometry (4)
        • LiDAR 3D Detection (1)
        • Trajectory prediction (2)
        • Lane Detection (1)
        • HDmap (3)
      • Linux (15)
      • PyTorch👩🏻‍💻 (10)
      • Linear Algebra (2)
      • Python (5)
      • NLP (10)
        • Article 📑 (1)
      • Algorithms 💻 (22)
        • Basic (8)
        • BAEKJOON (8)
        • Programmers (2)
      • ML (1)
        • 통계적 머신러닝(20-2) (1)
      • SQL (3)
      • 기초금융 💵 (1)
  • 블로그 메뉴

    • 홈
    • About me
  • 링크

    • 나의 소박한 github
    • Naver 블로그
  • 공지사항

  • 인기 글

  • 태그

    코딩테스트
    백준
    CL
    dfs
    continual learning
    리눅스
    CV
    알고리즘
    Python
    LLM
    자료구조
    Linux
    domain adaptation
    domain generalization
    백트래킹
    NLP
    conda
    Incremental Learning
    pytorch
    til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
당니이
[NLP] Sequence-to-Sequence (Seq2Seq, 시퀀스 투 시퀀스)
상단으로

티스토리툴바