NL-029, Maximum-Likelihood Augmented Discrete Generative Adversarial Networks (2018-Arixv)

이 논문은 개인적으로 SeqGAN보다 더욱 더 어려웠고 이해를 못한 부분 몇 개 있다.
전체적인 방법은 SeqGAN과 비슷하나 추가적인 기술들이 들어간 정도이다.
이 논문 뒤에 연구된 논문들을 확인해 봐야겠지만, 대표적 NLG논문들이 SeqGAN 확장의 한 버전이고 MaliGAN 방식을 이용한 것은 아니다.
따라서 세세하게 완벽히 이해할 필요는 없다고 생각한다..
하지만 필요하면 다시 와서 이해못한 부분을 이해해 봐야겠다 ㅜ

0. Abstract

  • GAN을 natural language(discrete settings)을 적용하는 것에는 아직 한계가 있다.
  • 근본적으로 어려운 이유는 discrete random variables을 GAN obj function으로 학습하는데 안정적인 BP전달이 안된다.
  • 따라서 우리는(MaliGAN) novel and low-variance obj을 제시한다.

1. Introduction

  • NLG는 데이터 분포, 통계 등을 알아내는 것이라 볼 수 있는데 이는 번역, 대화 시스템등의 LM 모델들의 기본이 된다.
  • 이전 까지 문제점으로는
    1. lack of consistency in long-term semantics
    2. have less coherence in high-level topics and syntactic
    • 지금 근데 GPT2와 같은 경우는 transformer을 사용했는데 이러한 문제점이 해결되는 거 같은데..결국 과거 LSTM 방법을 고수할 필요가 있을까? 
  • discrete sequence을 생성하기 위해서 auto-regressive model을 teacher forcing을 통하여 적용하는게 일반적이다.
  • 이러한 teacher forcing으로 학습하는데 몇 가지 문제점이 있는데...
    • exposure bias의 문제가 발생한다.
      • Ground truth에 너무 노출되는 문제.(training 데이터의 분포에 오버피팅 느낌)
      • training과 inference의 간극 때문에...
    • RNN 계열말고 더 좋은 모델의 다른 auto-regressive 모델(latent random variables을 이용하는)에는 teacher forcing을 적용하기 어려움.
  • 따라서 GAN을 이용한 autoregressive model이 대안.
    • 전체 생성된 문장을 학습시에 고려하면 위 문제를 예방 가능(D 모델을 이용하자!)
  • 하지만 GAN을 discrete data에 적용하는 건 매우 어려운데...
    • 생성된 분포를 real data 분포로
    • 즉, 생성된 문장을 고차원 discrete state space의 real sentence로 대응시키는 것은 매우 어렵다.
  • 따라서 이러한 discrete setting에서 BP로 학습 대신, 강화학습을 사용하자.
    • Discriminator 출력을 reward로
  • 불행히도..pre-training을 조심스럽게 해도 policy가 안정적인 reward를 D로부터 얻기 어렵다.(따라서 D를 학습하는데 G보다 더 많은 step을 사용하여 학습했음 from SeqGAN)
  • RL에서 reward를 D의 출력으로 안정적으로 쓰기 위하여 MaliGAN이 나왔는데 다음의 두 가지 기술을 사용함.
    • Importance sampling
    • several variance reduction techniques

2. Preliminaries and Overview

  • 이 논문에서는 generate discrete data에 초점을 맞추기 위해 GAN을 어떻게 다룰 것인가? 에 초점이 맞춰져 있음
  • 목표는 generator data 분포 를 real data 분포 를 맞추는 것이다.
    • noise z로부터 generation한 p(z)의 sample G(z)을 만든다.
    • D 모델은 와  어디 분포에 따르는 것인지 구별하는 것으로 사용
  • GAN을 학습할 때, 일반적인 BP을 통한 generator update를 하면 잘 작동하지 않는다.
    • D or logD을 reward를 사용한 RL을 이용한 학습을 이용한다.
  • D는 (=generator 분포, 앞에서는 )와 간의 차이를 구분하도록 학습하고나서(이는 일반적으로 classification 학습 하듯이) G는 다음과 같이 학습을 한다.
    • 학습은 maximize  을 하는 것이다.
    • GAN에서 G로 생성된 x를 D가 봤을 때 가짜라고 생각하도록 즉 D(x)=1이 되도록, max[logD]로 만들려는 G의 속셈으로 볼 수 있다.
    • SeqGAN을 생각하면 log(D)=reward을 최대화 하는 것이라 생각할 수도 있는 듯.
    • 다시 쓰면 obj function은 다음과 같고

      obj function을 최소화 하는 것이다.
  • 여기서 RL학습을 좀 더 잘하기 위해서 을 정의하는데 이는 D의 normalized probability distribution이다.
    • 참고로 D가 잘 학습된다면, D는 /(p+) 로 근사됨.(GAN 내용)
    • 은 maximum-entropy regularizer로 diversity을 추가해줌으로써 obj function을 다음과 같이 바꿈.
    • 여기서 generator loss는 KL divergence을 보면 (generator 분포)와 q'(normalized discriminator 분포)을 비슷하게 하자는 것이다!
    • 사실 이는 이상한 느낌이 있는게 정확히는 와 real data pd와의 데이터 분포를 근사하는 방향으로 가야함.
    • 그래서 이렇게 하면 학습이 잘 안되는 것인가 싶음. 아무튼 나는 여기서 KL divergence 관점에서는 이상함을 느꼈음. 즉 seqGAN처럼 저렇게 정의하면 학습에 불안한 점이 있는 것 같음.
    • 그래서 여기서 인사이트를 얻은 것 같고 이것을 해결하기 위해 section 3에서 KL loss 정의를 다르게 함)
    • c(D)은 D에 의존적인 함수임.
    • 윗 식은 정의대로 풀어보면 비슷하게 나옴
    • 한 가지 큰 문제는 stability와 convergence에 대한 보장이다.
    • 왜냐하면 p는 초기에 매우 나쁜 문장들을 생성하기 때문에 제대로 된 reward을 받을 수 없다.
    • pre-training을 통하여 이러한 variance을 줄일 수는 있지만 RL 알고리즘이 불안정하다.
  • 따라서 우리는 discriminator의 정보를 이용하여 importance sampling을 이용해서 일반 적인 RL을 적용하는 것 보다 variance을 줄였다고 함

3. Maximum-Likelihood Augemented Discrete Generative Adversarial Networks

  • 학습 시 variance을 줄이는게 핵심!

3.1 Basic Model of MaliGAN

  • 일반 GAN하고 다른 것은 generator을 학습시키기 위해 importance sampling을 사용하여 novel obj func을 제안한다.
  • 이렇게 정의하고 나면 MLE를 학습하는 과정 처럼 진행이 되는데 이 방법은 more stable하고 less variance하다고 함.
  • GAN에서 D의 최적의 결과는 임을 알려져 있음.
    • pd는 real data 분포 / p'는 generator 모델 parameter 의 delay version
    • Delay version을 사용하는 것 은 updated가 덜 된 상태로 학습의 안전을 위해서라고 함.
  • 이를 좌변 우변 넘겨서 pd로 정리하면 으로 바뀜.
  • 따라서 우리의 target distribution q(x)은 가 되도록 학습을 시키자.
    • 즉 을 pd와 비슷하도록 바로 학습하지 않고(일반 GAN처럼)
    • D가 제대로 학습이 되었다고 가정을 하면, D와 p'을 이용하여 pd을 알 수 있는데
    • 실제 D는 제대로 학습이 안되었지만, D를 여러 번 학습 하여 정확히 한 후, 이러한 트릭을 이용하여 target distribution을 근사한 후 이것에 맞도록 generator을 학습하자는 방식임!
  • 으로 정의하고 q(x)을 normalizing 하는 Z을(뒤에서 설명) 이용하여 다음과 같이 정의한다.
    • q가 고정되어 있는 확률 분포에 관하여, 우리는 다음과 같이 obj func을 정의하고 이를 최소화 하는 학습을 하면 된다.
      • 이 obj가 (1)식과 살짝 다른 점은 (1)에서 q'은 D로부터 나온 분포이고 여기서의 q는 D와 p'으로부터 구해지는 target 분포이다.
      • 즉 target 분포와 모델 분포와의 KL divergence로 충분히 리즈너블하다고 생각함.
      • 즉 D가 충분히 학습되어 있으면 q는 pd에 가깝게 근사가 될 것이다.
  • 이젠 는 다음과 같이 전개를 할 수 있다.
    •  
    • 와 같이 KL 정의와 IS을 이용하여 전개할 수 있다.
    • 논문에서는 -가 빠져 있는데 오타인지는 모르겠지만, 업데이트할 때, -를 붙여주냐 안주냐의 차이라 그렇게 중요하진 않은 듯
  • 여기에다 Z의 정의를 rD의 sampling의 총합으로 정의하고 average REINFORCEMENT 개념처럼 bias을 빼줘서 variance을 줄여주는 식으로 만든다.
    •  (2)
    • bias b는 0부터 1까지 천천히 증가시키면서 정해준다고 한다.
  • 알고리즘은 다음과 같다.
    • 즉 k step으로 D을 좀 더 정확히 학습한 후, D가 좀 정확해졌다 싶으면 을 이용하여 sampling한 후, KL divergence의 gradient값을 이용하여 generator을 update 하는 식!

3.2 Analysis

  • 식 (2)가 이론적으로 적절한 obj인지 증명을 할 수가 있다고 한다. 즉 (2)식을 optimize하는 것이 을 optimize하는 것인지 보인다.
    • 내가 알기론 강화학습에서 Advantage REINFORCEMENT 알고리즘 같은 개념인 거 같아서 그쪽 방향으로 직관적으로 그런가 보다 했음(아닐수도).
    • 어찌 되었든 논문에서는 수학적으로 접근을 해서 말하는 거 같은데.. 어려워서 패스 ㅜ
  • 식 (2)가 좋은 이유에 대해서는 다른 reference 논문에서도 다룬 부분이 있다고 하니 궁금하신 분들은 참고하시길...
  • 기본적인 식(1)은 RL 관점에서 D or logD의 reward을 받아서 RL exploring을 진행하는 것이다.
  • 하지만 이는 D 모델의 출력이 너무 작아 제대로 된 gradient가 전달이 안되서 학습이 잘 진행이 안된다.
  • 이는 baseline 등을 잘 선택한다 해도 해결이 안된다.(왜인지는..)
  • MaliGAN에서는 minibatch로 부터 samples을 사용한 학습을 통해 이를 해결하려고 한다.
  • 예를 들어, b=1로 선택하면 the sum of the weights on the generated paths = 0가 된다고 하는데 b=1/m일 때 0이 되는게 아닌가..? 무슨 뜻인지 잘 모르겠음
  • 중략..
  • teacher forcing에서 생기는 exposure bias문제를 baseline이 해결해 주는거 같음
  • b>0으로 하면 m개의 samples 중 나쁜 behavior은 억제하고 best behavior은 강화하려는 성질을 띈다고 한다.(알고리즘의 8번줄을 보면 그럴거 같기도 하고..)
  • 분석 부분은 좀 다루기 어려워서 나중의 후속 논문에서도 계속 이런 관점이 필요하면 제대로 봐볼 필요는 있을 듯. 하지만 MaliGAN 컨셉을 이해하는데는 자세히 몰라도 큰 지장은 없을 것이라 생각 됨.

3.3 Variance Reduction in MaliGAN

  • MaliGAN이 일반적인 RL GAN보다 안정적인 학습을 보여주나, long sequences 생성은 다음에서 설명할 advanced 기술을 사용하면 더 좋다.

3.3.1 Monte Carlo Tree Search

  • 하나의 sample에서 모든 steps에서 같은 weight을 사용하는 대신 RL의 기법을 사용한다.
    • Q는 expected total reward이고 이는 을 사용함.
    • 그 뒤에 p(a|s)을 곱하는게 위에서 말한 step에서 같은 weight을 안 사용한다는 뜻인듯. (MCTS 기법)
  • 이를 다음과 같이 식 변형을 할 수가 있다.
    • 논문의 정리 3.1번 땜에 그렇다는데.. 쉽게 이해해보자면 그냥 normalizing하는 term을 위와 같이 추가한 것이다.
    • 여기서 m은 mini-batch size이고 이를 사용하면 다음과 같은 장점이 있다.
      1. 다른 step에서 다른 weights을 generated sample하는데 사용 가능. 이 말은 t가(=state를 표시하는 것) Li개(=sample sequence 길이) 가능한데 이에 따라 다른 weight들이(=log p를 미분한 것) Q에 곱해진다는 것 같다.
      2. 좀 더 안전한 estimator of the partition function Z을 얻을 수 있다고 함.
  • 즉 결론은 그냥 MCTS을 쓴다는 것인데 이 말은 한 샘플에서 각 state에서의 policy gradient을 함께 가져가겠다인 듯(수식적으로)

3.3.2 Mixed MLE-Mali Training

  • 이 파트가 결국 핵심임. 3.3.1(seqGAN도 이렇게 했는데..?) + seqGAN의 rollouot 개념인 듯. seqGAN rollout과 다른 느낌은 각각의 simulation 결과가 하나의 샘플로 이용하는 거 같음.(seqGAN에서는 한 state에서의 rollout similuation의 D의 결과를 하나의 reward로 가져옴)
  • seqGAN과 비교하면 이미 앞 생성되는 부분을 MLE loss를 추가한 게 다른 거 같음..
  • 긴 문장이면 variance가 축적이 되므로 이것에 대한 문제를 줄이기 위해서 N time steps은 입력으로 넣어주고 T-N time steps을 생성하여 학습 과정을 진행한다.
    • 이 때 N은 T에서 시작하여 0으로 점점 보내주는 식으로 함
  • q에 대한 obj function
    • 즉 target distribution q를 사용하여 (x0,...,xN)개의 token이 주어지고 N+1~L 부분에 해당하는 것을 생성하는 것 = x0~xL 생성하는 것이랑 같기를 원한다
  • D을 학습할 때 real sample과 fake sample이 필요한데, fake sample 만드는 과정
    • x0~xN은 주어지고 generator p(theta)로 생성하는 것이 fake sample로 사용
  • sample x에서 N token까지는 MLE 식으로 loss가 정의되고(first term) N+1~L 부분은(second term) policy gradient 기반으로 loss가 정의됨.
  1. mini-batch로 확장 시키면, xi(i=1~m) 총 m개의 sample을 뽑는다.
  2. 각 sample xi에서 앞에 N개를 고정시키고 N+1~end 까지 부분은 generator로 생성시킨다. 이것을 n번한다(표기는 for j)
  3. 그러면 총 sample은 m x n개가 생기고 이거에 해당하는 estimator은 다음과 같다.(이 식이 partition function Z 인듯)
    • 여기서 생각해 볼점이  이 왜 하나의 sample xi에 대해서 정의를 하는가? 왜  으로 normalizing 안하냐 이거인 듯. 3.3.3에서 다루자..

3.3.3 Single Real Data Based Renormalization

  • 다음의 알고리즘 2가 최종 학습 과정이다.(결국 이것만 이해하면 됨)
    1. 처음에 k-steps만큼 D을 학습시킨다.
      • real data yi(i=1~m) 총 m개를 sampling 한다.
      • yi의 각 앞의 N step은 그대로 두고 뒷 부분 N+1~end까지 generation을 하여 xi라 한다.
      • yi는 real, xi는 fake로 D를 학습한다.
    2. real data xi(i=1~m) 총 m개를 sampling 하여 mini-batch로 사용한다.
      • 각 xi의 앞부분 N step은 그대로 두고 N+1~end까지 generate하여 생성하는데 총 n번(도식에서 m이라 써있는데 오타인듯) 진행하여 각각을 xi,j라고 한다. (즉 총 m x n개 생성)
      • 각각을 식 (4)처럼 MLE loss(N step이하)와 RL loss(N step 이상)을 더하여 MLE-Mali update을 진행한다.
    3. N을 바꿔가면서 실험을 진행한다
  • Single real sample을 기반으로 renormalizatino하는 장점으로 여기서 두 가지를 언급한다.
    1. S(<=N)이 주어지면 없는 것보다 훨씬 간단하다. 즉 처음부터 전체의 real data를 생성하는 것보다 N개의 step이 주어지고 뒤를 생성하는게 간단함. 이것을 "modes라고 부르는데 이것은 결국 모델이 simpler conditional distributions으속에서 stable gradients을 얻을 수 있도록 해준다. (이건 single real sample에서 앞의 N을 왜 조건으로 주는 장점에 대한 것인 듯)
    2. 직관적으로 으로 batch normalizing을 하면 나누는 값이 매우 커져서 gradient가 너무 작아 잘 학습이 안된다는 것이다. 하지만 single sample renormalization은 every real sample S가 강한 학습 시그널을 얻을 수 있도록 해준다.

4. Experiments

4.1 Discrete MNIST

  • DCGAN을 이용하여 generator이 binomial distribution을 생성하도록 함.
    • Discrete-MNIST을 어떤 식으로 적용하는지에 대해서는 논문에서는 안나와있고 https://arxiv.org/pdf/1702.08431.pdf와 비슷하게 했다고 함.
    • DCGAN에 알고리즘1을 적용함.
    • ref 논문도 상당히 복잡해보여 자세한 건 패스
    • MaliGAN이 visual quality가 좋다고 함. 눈으로 보기에 그렇다는 것임. 어떠한 척도로 비교하진 않음.

4.2 Poem Generation

  • Chinese poem generation task로 poem-5와 poem-7을 적용했다고 함.(SeqGAN에서 한건 poem-5 임)
  • Generator은 one-layer LSTM
    • poem-5: 32 hidden units
    • poem-7: 100 hidden units
  • Discriminator은 BiLSTM with 32 hidden neurons
  • 알고리즘
    • MaliGAN-basic: Algorithm1 적용
    • MaliGAN-full: Algorithm2 적용
  • MLE과 SeqGAN과 비교

4.3 Sentence-Level Language Modeling

  • Fundamental task에 적용하고자 Penn Tree-Bank(PTB)에 적용해 보았다.
  • Generator은 1-layer GRU (간단하고 효율적이게 적용해 보았다고 함.)
  • Discrimnator은 BiGRU을 사용함.
  • 학습 시, teacher forcing으로 pre-training 함.
  • MCTS 적용시, N=30, K=5로 적용
  • max words은 35개로 그 뒤는 없앰.
  • (더욱 자세한 건 논문 참조)
  • 이러한 실험들로 식(2)가 효과적임을 보였다.

5. Related Work

  • 생략

6. Discussions and Future Work

  • GAN이 continuous 데이터, 이미지 쪽에서는 잘 작동하나 아직까지는 natural language의 discrete domain에서는 잘 안된다.
  • 근본적인 이유는 GAN에서 D모델은 진짜와 가짜를 매우 잘 구별하지만, 이것을 G모델에 잘 전달하기 힘들다는 점이다.
  • 왜냐하면 discrete computation과 inherent instability of RL을 dynamic environments with sparse reward에 적용하는게 쉽지 않기 때문임.
    • 즉 우리가 원하는 출력들은 discrete 공간인데 실제 GAN은 continuous 공간이고 이것의 공간에서 발생하는 gap이 문제!
  • 다시 history를 간단히 정리해보자.
    • MLE teacher forcing 방법으로 G만 학습하는 식으로 하면, 위에서 언급한 domain 갭차이 문제와 exposure bias 문제가 발생.
    • 전체 문장을 평가하는 D모델을 이용한 GAN 방식으로 exposure bias 해결할 수 있다. 하지만 아직도 domain 갭차이가 존재
    • 강화학습을 적용하여 D모델의 출력을 reward로 사용하자. 그러면 D 출력을 G에 잘 전달할 수 있을 것이다!
    • 하지만 D가 제대로 학습이 되어야 가능한 방법인데?? 즉 D도 학습되는 상대이기 때문에 reward가 불안정한 dynamic 환경이란 뜻이다.
      • 간단한 방법으론 D를 많은 step을 학습할 수 있겠다
      • MLE pre-training
      • SeqGAN의 rollout 처럼 simulation을 많이 하여 정확한 D를 얻을 수도!
      • MaliGAN처럼 MLE+RL을 한꺼번에 할 수도
    • 아직도 generation하는데 variance가 큰 점, state step(생성 중간 단계)도 고려해야한다.
      • SeqGAN/MaliGAN처럼 매 step을 고려하여 많은 generation한 simulation 한 것을 이용
      • MaliGAN처럼 Importance sampling을 하여 variance을 줄여줄 수도 있겠다.
        • importance sampling을 함으로써 pd에서 sampling할 것을 generator에서 sampling 함으로써 domain의 gap을 줄여 줄 수 있다.
      • MaliGAN에서 bias을 추가여 normalizing의 기법을 제시함!
      • SeqGAN과 MaliGAN처럼 condition N step token을 주어지고 이를 이용한다.
        • 이를 통하여 전체 문장을 예측하는 것보다 simple한 상황을 만들어 줄 수 있기 때문!
  • MaliGAN은 결국 teacher forcing에서 발생하는 overfitting을 줄여줄 수 있다.
    • D의 역할이 real과 generated을 구별할 수 있기 때문에 많은 noise가 낀 출력을 생성할 수 없기 때문이다.

Reference

댓글