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. 듀얼리티 활용

들어가며

Previous듀얼리티 활용Next듀얼리티를 활용한 지도학습

Last updated 5 years ago

듀얼리티duality란 무엇일까요? 우리는 보통 머신러닝을 통해 특정 도메인의 데이터 $X$ 를 받아서, 다른 도메인의 데이터 $Y$ 로 맵핑하는 함수를 근사하는 법을 학습합니다. 따라서 대부분의 머신러닝에 쓰이는 데이터셋은 두 도메인 사이의 데이터로 구성되기 마련입니다.

다음과 같이 두 도메인 사이의 데이터 관계를 배우는 방향에 따라 음성 인식이 되기도 하고, 음성 합성이 되기도 합니다. 이러한 두 도메인 사이의 관계를 듀얼리티라고 정의합니다. 대부분의 머신러닝 문제는 이처럼 듀얼리티 속성을 가지는데, 특히 기계번역은 각 도메인의 데이터 사이에 정보량의 차이가 거의 없다는 점이 가장 큰 특징이자 장점입니다. 따라서 듀얼리티를 적극적으로 활용하면 기계번역을 고도화할 수 있습니다.

$D_1$ 도메인

$D_1 \rightarrow D_2$

$D_1 \leftarrow D_2$

$D_2$ 도메인

문장

기계번역

기계번역

문장

음성 신호

음성 인식

음성 합성

문장

이미지

이미지 분류

이미지 합성

클래스

문서

요약

본문 생성

문장

문장

텍스트 분류

문장 생성

클래스

데이터에 따른 듀얼리티 사례

CycleGAN

번역 이외의 분야에도 듀얼리티를 활용할 수 있습니다. 듀얼리티를 활용하는 또 다른 예로, 영상 처리computer vision에 관한 논문[63]에서 소개한 CycleGAN에 대해 이야기해볼까 합니다.

CycleGAN이란 다음과 같이 짝지어지지 않은 두 도메인의 이미지들이 있을 때, $X$ 도메인의 이미지를 $Y$ 도메인의 이미지로 변환하는 방법입니다. 사진의 전체 구조는 유지하되 유명한 화가인 모네의 그림 풍으로 바꾸어주기도 하고, 말을 얼룩말 또는 민무늬로 바꾸어 주기도 합니다. 물론 겨울 풍경을 여름 풍경으로 바꿀 수도 있습니다.

$X\rightarrow{Y}$ 와 $Y\rightarrow{X}$ 모두 각각 생성자 $G, F$ 와 판별자 $D_x, D_y$ 를 가지고 있어서 최소/최대화 게임 을 수행합니다.

$G$ 는 $x$ 를 입력으로 받아 $\hat{y}$ 으로 변환합니다. 그리고 $D_Y$ 는 $\hat{y}$ 또는 $y$ 를 입력으로 받아 합성한 이미지인지 원래 $Y$ 도메인의 이미지인지 예측합니다. 마찬가지로 $F$ 는 $y$ 를 입력으로 받아 $\hat{x}$ 으로 변환합니다. 그리고 $D_x$ 는 $\hat{x}$ 또는 $x$ 를 입력으로 받아 합성 유부를 판단합니다.

이 방식의 핵심은 $\hat{x}$ 나 $\hat{y}$ 를 합성할 때 기존의 도메인 $X, Y$ 에 실제로 속하는 이미지처럼 만들어 내야 한다는 것입니다. 그리고 각각의 $\hat{x}$ 와 $\hat{y}$ 로부터 원래 데이터로 돌아올 수 있어야 한다는 것입니다. 이것을 기계번역에 적용하면 어떻게 될까요?

https://junyanz.github.io/CycleGAN/
듀얼리티의 예
CycleGAN이 성공적으로 적용된 예제
CycleGAN의 동작 개요[63]