TIL
  • Main
  • TIL : ML
    • AI News
      • AI-powered coding, free of charge with Colab
    • Paper
      • Retrieval-augmented generation for knowledge-intensive nlp tasks
        • reference 정리
      • Sequence to Sequence
    • Generative AI
      • LLM
        • 기본 개념
    • Boostcamp
      • Daily Report
        • 2021
          • 09
            • week4
            • week5
          • 10
            • week1
            • week2
            • week3
            • week4
          • 11
            • week1
            • week2
            • week3
            • week4
            • week5
          • 12
            • week1
            • week2
            • week3
      • Final Project
        • 프로젝트 기획
          • 🌟최종 프로젝트 기획
          • 최종 프로젝트 Version
          • 아이디어 수집
          • 욕설, 혐오발언 감지
          • 라이브 커머스 레포팅 프로젝트
        • 프로젝트 진행
          • week1
          • week2
          • week3
      • Competition
        • 1. [NLP] 문장 내 개체간 관계 추출
          • Day1 (9.27, 월)
          • Day2-3 (9.28~29, 화~수)
          • Day4 (9.30, 목)
          • Day5 (10.1, 금)
          • Day6~7 (10.2~3, 토~일)
          • Day8 (10.4, 월)
          • Day9 (10.5, 화)
          • Day10 (10.6, 수)
          • Day 11 (10.7 목)
        • 2. [NLP] MRC 프로젝트
          • Day1 (10.25, 월)
          • Day2 (10.26, 화)
          • Day3 (10.27, 수)
          • Day4-5 (10.28-29, 목-금)
          • Day6 (11.1, 월)
          • Day7 (11.2, 화)
          • Day8 (11.3, 수)
          • Day9 (11.4, 목)
        • 🔨3. [NLP] 데이터 제작
          • Day1
        • 🔨4. [공통] 모델 경량화
      • [U Stage] - DL basic
        • (01강) 딥러닝 기본 용어 설명 - Historical Review
        • (02강) 뉴럴 네트워크 - MLP (Multi-Layer Perceptron)
        • (03강) Optimization
        • 🔨(04강) Convolution은 무엇인가?
        • 🔨(05강) Modern CNN - 1x1 convolution의 중요성
        • 🔨(06강) Computer Vision Applications
        • (07강) Sequential Models - RNN
        • (08강) Sequential Models - Transformer
        • Page 2
      • [U Stage] - PyTorch
        • (01강) Introduction to PyTorch
        • (02강) PyTorch Basics
        • (03강) PyTorch 프로젝트 구조 이해하기
        • (04강) AutoGrad & Optimizer
        • (05강) Dataset & Dataloader
        • (06강) 모델 불러오기
        • (07강) Monitoring tools for PyTorch
        • (08강) Multi-GPU 학습
        • (09강) Hyperparameter Tuning
        • (10강) PyTorch Troubleshooting
      • [U Stage] - NLP
        • (01강) Introduction to NLP, Bag-of-Words
        • (02강) Word Embedding
        • (03강) Recurrent Neural Network and Language Modeling
        • (04강) LSTM and GRU
        • (05강) Sequence to Sequence with Attention
        • (06강) Beam Search and BLEU score
        • (07-08강) Transformer
        • (09강) Self-supervised Pre-training Models
      • [P Stage] - KLUE
        • (1강) 인공지능과 자연어 처리
        • (2강) 자연어의 전처리
        • (3강) BERT 언어모델 소개
        • (4강) 한국어 BERT 언어 모델 학습
        • (5강) BERT 기반 단일 문장 분류 모델 학습
        • (6강) BERT 기반 두 문장 관계 분류 모델 학습
        • (7강) BERT 언어모델 기반의 문장 토큰 분류
        • 오피스아워 (9.30, 목)
        • (8강) GPT 언어 모델
        • (9강) GPT 언어모델 기반의 자연어 생성
        • (10강) 최신 자연어처리 연구
      • [P Stage] - MRC
        • Before Study
        • (1강) MRC Intro & Python Basics
        • (2강) Extraction-based MRC
        • (3강) Generation-based MRC
        • (4강) Passage Retrieval - Sparse Embedding
        • (5강) Passage Retrieval - Dense Embedding
        • 오피스아워
        • (6강) Scaling up with FAISS
        • (7강) Linking MRC and Retrieval
        • (8강) Reducing Training Bias
        • (9강) Closed-book QA with T5
        • (10강) QA with Phrase Retrieval
        • 마스터클래스
      • [P Stage] - 데이터제작(NLP)
        • (1강) 데이터 제작의 A to Z
        • (2강) 자연어처리 데이터 기초
        • (3강) 자연어처리 데이터 소개 1
        • (4강) 자연어처리 데이터 소개 2
        • (5강) 원시 데이터의 수집과 가공
        • 오피스아워 (11.10, 수)
        • (6강) 데이터 구축 작업 설계
        • (7강) 데이터 구축 가이드라인 작성 기초
        • (8강) 관계 추출 과제의 이해
        • (9강) 관계 추출 관련 논문 읽기
        • (10강) 관계 추출 데이터 구축 실습
      • [P Stage] - 모델 최적화
        • (1강) 최적화 소개 및 강의 개요
        • (2강) 대회 및 데이터셋 소개
        • (3강) 작은 모델, 좋은 파라미터 찾기: AutoML 이론
        • 🔨(4강) 작은 모델, 좋은 파라미터 찾기: AutoML 실습
        • (5강) 작은 모델, 좋은 파라미터 찾기: Data Augmentation & AutoML 결과 분석
        • 🔨오피스아워 -Baseline 코드에 모듈 작성하기(신종선 멘토님)
      • [P Stage] - Product Serving
        • Part 1: Product Serving 개론
          • 1.1 강의 진행 방식
          • 1.2 MLOps 개론
          • 1.3 Model Serving
          • 1.4 머신러닝 프로젝트 라이프 사이클
        • Part 2: 프로토타입부터 점진적으로 개선하기
          • 2.1 프로토타이핑 - Notebook 베이스(Voila)
          • 2.2 프로토타이핑 - 웹 서비스 형태(Streamlit)
          • 2.3 Linux & Shell Command
          • 2.4 Cloud
          • 2.5 Github Action을 활용한 CI/CD
        • Part 3: 더 완성화된 제품으로
          • 3.1.1 FastAPI
          • 3.1.2 Fast API
          • 3.1.3 Fast API
          • 3.2 Docker
          • 3.3 Logging
          • 3.4 MLFlow
        • Part 4: 심화 소재
          • 4.1 BentoML
          • 4.2 Airflow
          • 4.3 머신러닝 디자인 패턴
          • 4.4 앞으로 더 공부하면 좋을 내용
      • 특강
        • (특강) 김상훈 - 캐글 그랜드마스터의 노하우 대방출
        • (특강) 이활석 - 서비스 향 AI 모델 개발하기
        • (특강) 구종만 - AI + ML과 Quant Trading
        • (특강) 문지형 - 내가 만든 AI 모델은 합법일까, 불법일까
        • (특강) 이준엽 - Full Stack ML Engineer
        • (특강) 박은정 - AI 시대의 커리어 빌딩
        • (특강) 오혜연 - AI Ethics
    • Competition
      • (DACON)한국어 문장 관계 분류 경진대회
        • Day1(2.14, 월)
        • Day2(2.15, 화)
        • Day3(2.16, 수)
        • Day4(2.17, 목)
      • 2021 인공지능 데이터 활용 경진대회
        • 역량평가
          • Day1 (9.28, 화)
          • Day2 (9.29, 수)
          • Day3 (9.30, 목)
        • 예선
          • Data 분석
          • NSML
          • What We Have Done?
    • ETC
      • 인터뷰 대비
        • Computer Science
        • ML/DL
      • Poetry로 dependency 관리
        • window에서 설치하기
      • code block
      • 공부할 것 임시보관
      • Transformer to T5
      • Hugging Face Tutorial
        • Ch1. Transformer models
        • Ch2. Using Transformers
        • Ch3. Fine-tuning a model with the Trainer API
      • KLUE
      • Pandas
  • TIL : Ops
    • AWS
      • SageMaker
  • TIL : Computer (CS)
    • Error
      • TextEncodeInput must be Union[TextInputSequence, Tuple[InputSequence, InputSequence]]
    • Algorithm
      • Theory
      • Programmers
        • 기능개발
    • ETC
      • Github 커밋 히스토리 삭제
Powered by GitBook
On this page
  • 1. Abstract & Introduction
  • 2. The Model
  • 3. Experiment
  • 4. Experimental Results
  • 다음으로 읽어볼 논문
  • Reference

Was this helpful?

  1. TIL : ML
  2. Paper

Sequence to Sequence

Sequence to Sequence Learning with Neural Networks (NIPS, 2014)

Previousreference 정리NextGenerative AI

Last updated 3 years ago

Was this helpful?

1. Abstract & Introduction

  1. Deep Neural Network(DNN)은 다양한 Task에서 훌륭한 성능을 내는 모델이지만 Seq to Seq Mapping은 할 수가 없었다.

  2. 본 논문에서는 LSTM을 사용한 Encoder와 Decoder를 구성함으로써 문제를 해소하고자 하였다.

  3. WMT-14 dataset에 대하여 영어를 불어로 변역하는 Task로 점수를 매겨본 결과 기존 기계번역에 사용하던 SMT 모델(33.3 BLEU Score) 보다 더 좋은 성능(34.8 BLEU Score)을 낼 수 있었다.

  4. LSTM을 활용하여 SMT 모델로 추론한 1000개의 가설을 재배열 하였더니 성능이 36.5까지 향상되었다. (현 최고점은 37점)

  5. 단어의 순서를 거꾸로 하였을 때 LSTM의 성능이 향상되었다. 단어의 순서를 거꾸로 함으로 만들어지는 많은 short term dependency는 source 와 target sentence의 최적화 문제를 쉽게 만들었기 때문이다.

기존 RNN 기반 모델의 경우 위와 같이 형성되어 하나의 input에 각각 결과하고 hidden state를 다음 layer로 전달하며 결과를 얻어낸다. 영어와 한글 사이의 문법으로 인해 x2,x3x_2, x_3x2​,x3​ 이 y3,y2y_3, y_2y3​,y2​로 매핑이 될 수 없는 한계를 가지고 있다. 이런 한계를 Encoder와 Decoder 두개의 RNN구조로 나누어서 학습할 수 있도록 한다.

즉, Input Data를 Encoder에 넣어 전체적인 문장의 의미를 가지는 Context Vector를 구하고, 이 구해진 Context Vector로 부터 Decoder가 번역결과를 추론합니다.

2. The Model

기존 RNN은 아래와 같이 입력값 (x1,...,xT)(x_1, ..., x_T)(x1​,...,xT​)에 대해서 출력값 (y1,...,yT)(y_1, ..., y_T)(y1​,...,yT​)을 가지는 수식을 갖는다.

ht=sigmoid(Whxxt+Whhht−1)h_t = sigmoid(W^{hx}x_t + W^{hh}h_{t-1})ht​=sigmoid(Whxxt​+Whhht−1​)

yt=Wyhht y_t =W^{yh}h_tyt​=Wyhht​

입력 문장의 크기와 출력 문장의 크기가 다르면 위와 같이 처리가 어렵다. check) RNN은 Long-Term Dependency를 처리하기 어렵다는 문제가 있어 LSTM 기법을 활용하였다.

p(y1,...,yT′∣x1,...,xT)=∏t=1T′p(yt∣v,y1,...,yt−1)p(y_1, ..., y_{{T}'}\mid x_1, ..., x_{{T}}) = \prod_{t=1}^{{T}'}p(y_t \mid v, y_1, ...,y_{t-1})p(y1​,...,yT′​∣x1​,...,xT​)=∏t=1T′​p(yt​∣v,y1​,...,yt−1​)

  • xtx_txt​: 현재까지의 입력단어

  • hth_tht​: 지금까지 입력된 문장에 대한 정보를 담은 벡터 표현

  • sts_tst​: 지금까지 출력된 문장에 대한 정보를 담은 벡터 표현

  • yty_tyt​: 현재의 출력 단어

  • v:x1,...,xTv: x_1, ..., x_{T}v:x1​,...,xT​ 에 대한 정보를 담은 벡터표현

※ 특징

  • Encoder 파트와 Decoder파트는 서로 다른 LSTM로 구성되어 있다.

    ⇒ 작은 계산 비용의 증가로 Parameter의 수를 증가시킬 수 있다.

  • 총 4개의 Layer를 가지는 LSTM을 사용한다.

    ⇒ 모델의 capacity가 커진다. 너무 깊게 쌓으면 비용이 증가할 수 있다.

  • 단어순서를 바꾸는 것이 성능을 향상시켰다.

3. Experiment

  • WMT’14의 English to French dataset으로 실험을 진행했다. source / target language 각각에 fixed size vocabulary를 사용했다 (source: 160,000 / target: 80,000). OOV는 “UNK” token으로 대체된다.

  • 일반적인 Decoding과 Rescoring

    • 1/∣S∣=∑(T,S)∈Slogp(T∣S)1/\left | S \right| = \sum_{(T,S)\in S}log{p(T \mid S)}1/∣S∣=∑(T,S)∈S​logp(T∣S), [S:S:S: Source Sentence, T:T:T: Target Sentence]

    • T^=argmaxT p(T∣S)\hat{T} = \underset{T}{arg max} \ p(T\mid S)T^=Targmax​ p(T∣S)

    • beam search 기법 사용

  • 문장의 입력을 Reverse함으로써 long sequence에서는 source sentence를 BLEU score가 25.9에서 30.6으로 증가했다.

  • 학습 Hyperparameters

    • deep LSTMs with 4-layers

    • embedding size : 1,000 dim

    • LSTM init : uniform distribution(-0.08 ~ 0.08)

    • SGD without momentum

    • learning rate : 0.7

    • After 5 epoch, halving(이등분) learning rate every half epoch until 7.5 epochs

    • batch size : 128

    check) 비슷한 길이의 문장끼리 묶음으로써 두배의 학습 속도 향상을 내었다.

4. Experimental Results

  • Baseline 모델보다 충분히 나은 성능을 확인할 수 있다.

  • LSTM과 SMT를 함께 사용했을 때 36.5로 준수한 성능을 확인할 수 있다.

  • 비슷한 내용끼리 분류된 것을 확인

다음으로 읽어볼 논문

Reference

LogoSequence to Sequence Learning with Neural NetworksarXiv.org
LogoNeural Machine Translation by Jointly Learning to Align and TranslatearXiv.org
LogoAttention Is All You NeedarXiv.org
Logo[NLP 논문 리뷰] Sequence To Sequence Learning With Neural Networks (Seq2Seq)Hansu Kim
LogoGitHub - ndb796/Deep-Learning-Paper-Review-and-Practice: 꼼꼼한 딥러닝 논문 리뷰와 코드 실습GitHub
Logo[논문리뷰] Sequence to sequence learning with neural networks코딩하는 신학생의 넋두리