Natural Language Processing with PyTorch
  • 소개글
  • 서문
  • Index
  • 딥러닝을 활용한 자연어 처리 개요
    • 자연어 처리란 무엇일까?
    • 딥러닝 소개
    • 왜 자연어 처리는 어려울까?
    • 무엇이 한국어 자연어 처리를 더욱 어렵게 만들까?
    • 자연어 처리의 최근 추세
  • 기초 수학
    • 서문
    • 랜덤 변수와 확률 분포
    • 쉬어가기: 몬티 홀 문제
    • 기대값과 샘플링
    • Maximum Likelihood Estimation
    • 정보 이론
    • 쉬어가기: MSE 손실 함수와 확률 분포 함수
    • 마치며
  • Hello 파이토치
    • 딥러닝을 시작하기 전에
    • 설치 방법
    • 짧은 튜토리얼
    • 쉬어가기: 윈도우즈 개발 환경 구축
  • 전처리
    • 전처리란
    • 코퍼스 수집
    • 코퍼스 정제
    • 분절
    • 병렬 코퍼스 정렬
    • 서브워드 분절
    • 분절 복원
    • 토치텍스트
  • 유사성과 모호성
    • 단어의 의미
    • One-hot 인코딩
    • 시소러스를 활용한 단어 의미 파악
    • 특징
    • 특징 추출하기: TF-IDF
    • 특징 벡터 만들기
    • 특징 유사도 구하기
    • 단어 중의성 해소
    • Selectional Preference
    • 마치며
  • 단어 임베딩
    • 들어가며
    • 차원 축소
    • 흔한 오해 1
    • Word2Vec
    • GloVe
    • Word2Vec 예제
    • 마치며
  • 시퀀스 모델링
    • 들어가며
    • Recurrent Neural Network
    • Long Short Term Memory
    • Gated Recurrent Unit
    • 그래디언트 클리핑
    • 마치며
  • 텍스트 분류
    • 들어가기
    • 나이브 베이즈를 활용하기
    • 흔한 오해 2
    • RNN을 활용하기
    • CNN을 활용하기
    • 쉬어가기: 멀티 레이블 분류
    • 마치며
  • 언어 모델링
    • 들어가며
    • n-gram
    • 언어 모델의 평가 방법
    • SRILM을 활용한 n-gram 실습
    • NNLM
    • 언어 모델의 활용
    • 마치며
  • 신경망 기계번역
    • 들어가며
    • Sequence-to-Sequence
    • Attention
    • Input Feeding
    • 자기회귀 속성과 Teacher Forcing 훈련 방법
    • 탐색(추론)
    • 성능 평가
    • 마치며
  • 신경망 기계번역 심화 주제
    • 다국어 신경망 번역
    • 단일 언어 코퍼스를 활용하기
    • 트랜스포머
    • 마치며
  • 강화학습을 활용한 자연어 생성
    • 들어가며
    • 강화학습 기초
    • 정책 기반 강화학습
    • 자연어 생성에 강화학습 적용하기
    • 강화학습을 활용한 지도학습
    • 강화학습을 활용한 비지도학습
    • 마치며
  • 듀얼리티 활용
    • 들어가며
    • 듀얼리티를 활용한 지도학습
    • 듀얼리티를 활용한 비지도학습
    • 쉬어가기: Back-translation을 재해석하기
    • 마치며
  • NMT 시스템 구축
    • 파이프라인
    • 구글의 NMT
    • 에딘버러 대학의 NMT
    • MS의 NMT
  • 전이학습
    • 전이학습이란?
    • 기존의 사전 훈련 방식
    • ELMo
    • BERT
    • GPT-2
    • XLNet
    • 마치며
  • 이 책을 마치며
  • 참고문헌
Powered by GitBook
On this page
  1. 강화학습을 활용한 자연어 생성

마치며

이번 12장에서는 강화학습에 대해 이야기하고, 강화학습을 통해 자연어 생성 문제를 해결하는 방법을 다루었습니다. 다양한 강화학습 알고리즘을 사용해 자연어 생성 문제의 성능을 높일 수 있겠지만, 이 책에서는 그 중에서도 폴리시 그래디언트를 사용해 자연어 생성에 적용하는 방법을 설명했습니다.

강화학습은 이 책에서 온전히 전부 다루기에는 매우 방대하고 깊은 학문입니다.

폴리시 그래디언트 방법을 자연어 생성에 적용해 얻을 수 있는 이점은 크게 두 가지입니다. 첫째, 자기회귀 속성으로 인해 실제 추론 방식과 다르게 훈련해야 하는 teacher-forcing 훈련 방법을 탈피하여, 실제 추론 방식과 같은 샘플링을 통해서 문장 생성 능력을 높일 수 있습니다. 둘째, 더 정확한 목적 함수를 훈련할 수 있습니다. 기존의 PPL은 번역 품질 또는 문장의 생성 품질을 정확하게 반영할 수 없는 단점을 갖고 있었고, 때문에 BLEU 또는 기타 여러 가지 매트릭을 사용해 모델에 대한 성능을 측정할 수 있었습니다. 하지만 BLEU와 같은 평가 함수는 미분을 할 수가 없었으므로, PPL과 동일한 교차 엔트로피를 활용하여 신경망을 훈련해야 했습니다. 폴리시 그래디언트는 보상 함수에 미분을 할 필요가 없기 때문에, 이 점을 활용하면 어떤 보상 함수든지 활용하여 신경망을 훈련할 수 있는 것입니다.

하지만 폴리시 그래디언트에도 단점이 있습니다. 일단 샘플링을 기반으로 훈련하므로 많은 반복 시행이 필요합니다. 따라서 훈련에 훨씬 많은 시간이 소요되어 더 비효율적인 학습이 진행됩니다. 또한 보상함수는 방향이 없는 스칼라값을 리턴하므로, 보상함수를 최대화하는 방향을 정확하게 알 수 없습니다. 이는 기존의 MLE 방식에서 손실 함수를 신경망 파라미터 $\theta$ 에 대해 미분하여 얻은 그래디언트를 통해 손실 함수 자체를 최소화하는 방향으로 업데이트하던 것과 차이가 있습니다. 결국, 이 또한 기존의 MLE 방식보다 훨씬 비효율적인 학습 진행으로 이어집니다.

Previous강화학습을 활용한 비지도학습Next듀얼리티 활용

Last updated 5 years ago