NL-030, MaskGAN: Better Text Generation via Filling in the ______ (2018-ICLR)

Ian Goodfellow가 2저자로 속해있고 언어 GAN에서 2018 ICLR로 채택된 것 중 나름 인용도 많이 되고 핫한 것으로 속해 있어서 언어 GAN history을 차근차근 읽기 전에 먼저 읽어봄.


0. Abstract

  • NTG(Neural text generation)는 주로 autoregressive language model 혹은 seq2seq로 나뉜다.
  • 이러한 모델들은 previous word을 조건으로 sampling words를 기반으로 text을 생성하게 되고 현재까지 번역, 요약 benchmark의 SOTA들이 이 기법이다.
  • 이러한 benchmark들을 평가할 때는 validation perplexity을 이용한다.
  • 일반적으로 학습은 MLE와 teacher forcing 기법으로 많이 하게 된다. 이러한 방법들이 perplexity을 optimizing하는데 좋은 결과를 뽑아내나 exposure bias 문제가 발생한다.
  • 이 논문에서는 GAN 기법을 이용하였고 일반적으로 discrete에서는 GAN을 적용하기 어려운 상황이다. (그래서 여러 기술들을 적용)
  • Validation perplexity만이 생성 품질을 말하지는 않는다. (따로 새로운 걸 제시하는 듯)
  • Actor-critic conditional GAN을 사용하고 이 방법은 MLE 모델보다 좀 더 현실적임을 보여준다.

1. Introduction

  • 일반적으로 NTG는 teacher forcing으로 MLE 학습 기법으로 하지만 (과거 word을 조건으로 하는) training과 inference의 간극 문제 발생
  • 따라서 Professor Forcing과 Scheduled Sampling이 제안이 되어 왔다.
    • 이러한 방법은 하지만 RNN 출력에 대해 cost function을 구체화 하지 않는다.
    • 아마 말하고 싶은 것은 RNN 출력이 teacher forcing / free-running 기반인지 에 따른 것에 상관없이 같은 cost function을 쓴다는 말이지 않을 까?
    • 이 방법에서는 이것을 처리했다고 하니 자세한 건 뒤를 살펴보자.
  • GAN을 text generation 하는데 문제점이 있으니 G학습에는 RL 사용하고 D학습에는 RMLE+SGD을 사용하였다. (기존에서도 이렇게 했으니 특별한 건 아닌 듯)
  • GAN은 일반적으로 training instability와 mode dropping(collapse) 문제가 존재한다.
    • GAN 학습에 어려운 문제점에 대한 것은 다음 포스팅에서 언급한 링크들을 참고하길 바람!
    • Text generation에서는 D가 문장이 다 생성이되고 판별이 가능하기 때문에 long sentence일 수록 문제점이 커진다고 볼 수 있다.
  • 이 논문에서는 fill-in-the-blank or in-filling task로 이 문제들을 해결하려고 한다.
  • Timestep별 error은 언어 GAN 연구에서 매우 중요하다.
    • 예를 들어, ~t-1 timestep 까지 제대로 token을 생성했고 t번쨰 token은 outlier로 이상하게 생성했다고 하면, D 모델이 t-token에 대해선 high loss를, 그 외에는 low loss를 G에게 전달하는게 유의미한 정보를 전달할 것이다.
  • 이 연구는 다음의 섹션을 따라서 써있다.
    • In-filling을 통한 NLG모델 학습
    • Large-action space을 고려한 actor-critic 방법
    • Synthetic training data의 생성과 new evaluation metric 소개

2. Related Work

  • 생략(related work가 너무 나도 많은 논문들이 있음.. 다 읽어봐야 하나 싶기도 하고..)
  • 이 논문에서 사용한 in-filling 방법은 mode-collapse의 문제를 해결해준다고 믿는다.
    • 이것에 대한 이유는 정확히 없고..어떻게 보면 가설이다.
    • (논문을 끝까지 보고 생각을 정리해 보자면..)
    • 빈칸 채우기 task는 짧은 문장을 핸들링하는 것이라 학습하는 것이기 때문에 더 쉽다. 무슨 말이냐면 →
      • 또 하나의 가설로 mode collapse는 문장의 tail 부분에 일어난다고 가정을 한다. (왜 이런 가설을 했는지는 5.4 참고)
      • 그렇다면 일반적으로 긴 문장을 학습하는데에 있어서 mode collapse가 일어날 확률이 높다는 것이다.
      • 하지만 in-filling task로 학습을 한다면, 비교적 짧은 문장을 다루는 것이기 때문에 mode collapse가 줄어들 것이라는 것이다.
    • 또한 주변 단어가 condition으로 주어진 상태에서 in-filling을 하는 것이기 때문에 다양한 단어들을 생성할 수 있게 한다. → mode collapse 감소시킬 것이다.

3. MaskGAN

3.1 Notation

  • () = (input, output)
  • <m>: masked token
  • : filled-in token (G에서 생성되는 것이라 보면 됨)
  • : D에 전달되는 filled-in token으로 real일수도 fake일 수도 있음.

3.2 Architecture

  • MaskGAN의 기본 구조는 seq2seq을 따른다. 그러므로 past와 future의 정보를 둘 다 사용하는 구조
  • Discrete sequence:  입력 문장이라 보면 됨
  • Mask:  
  • x와 m이 만나서 m(x)을 만들게 되는데, mi=1이면 xi가 mi=0이면 <m> token을 집어넣어 m(x)가 생성이 된다.
    • 이 때 mi는 deterministically or stochastically로 결정 됨. (정확히 어떻게 하는지 언급은 안됨)
  • G의 구조
    • (1)식처럼 generator을 정의하는데, 즉 auto-regressively하게 와 m(x)을 이용하여 을 생성하게 된다.
    • 여기서 기억해야할 것은 free-run 방식이다. (no teacher forcing)
  • D의 구조
    • 기본적으로 G와 구조는 똑같으나, each time point에서 뽑아내는 것이 scalar 확률로 G와 다르다.
      • G의 출력은 각 token이 나올 확률로 vocab size의 크기의 vector이다.
    • G에서 생성된 sequence가 D에 전달이 되나 이 때 real context m(x) 전달도 필수다!
    • 이 논문에서는 이를 예시를 들어서 설명한다.
      • 만약 "the director director guided the series." 이라는 문장이 G에서 생성되어 D에 들어오면 "director director" bigram이 진짜인지 가짜인지 알기가 어렵다.
      • 왜냐하면 실제로 "the associate director guided the series", "the director expertly guided the series" 두 문장 모두 가능하기 때문이다. 그렇기 때문에 두 director word에 대해서 real/fake 구별을 하기가 애매모하다는 것이다.
      • 따라서 이를 알려면 D의 입력에 m(x) "the ___ ___ guided the series"와 같이 true text을 넣어줘야 한다.
    • 따라서 각 step에서 각 token이 나올 확률식은 다음과 같이 된다.
    • reward 또한 D를 통해 정의 되는데 단순히 log취한 것으로 다음과 같이 된다.
  • Critic network 구조
    • 여기서는 G와 D network말고도 3번째 네트워크가 존재한다.
    • 이전 논문들의 강화학습에서 policy를 담당하는 G만을 이용했지만, 이 논문에서는 actor-critic 이므로 critic을 담당하는 value function 네트워크가 존재한다.
    • Value function을 평가하는데 막 새롭게 구조가 존재하는 것은 아니고 discounted reward 합으로 다음과 같이 표시한다.
    •  여기서 는 discounted factor가 된다.
    • 이렇게 value function을 정의할 수 있는 이유가 애초에 D모델에서 각 output이 real일 확률 자체가 reward로 설정하였기 때문이다.
    • 그것을 다 더했으므로 전체 생성 문장에 대한 expected return이라고 생각할 수 있는 것 같다. 즉 D모델의 출력을 이용하는 것이 critic의 개념이 된다.
    • SeqGAN과 같은 경우는, 전체 문장이 real or fake에 대한 단순 판별이기 때문에 전체 문장 sample에 대한 return의 개념이다.
    • 대신 SeqGAN에서는 rollout을 사용함으로써 많은 sample에 대한 reward의 합을 이용했기 때문에 expected 효과가 난다.
    • 다시말하면, MaskGAN의 reward를 각 token이 나올 확률로 정의를 바꾸면서 expected라는 개념을 만들 수 있고 이것이 value function 자체가 된다고 볼 수 있으며 이를 이용한 actor-critic 방법이라고 명명한 것인듯!

3.3 Training

  • 미분 불가능하므로(sampling next token) 강화학습을 사용 (SeqGAN에서 처음으로 시도)
  • Total reward인 을 maximize 하는 방향으로 REINFORCEMENT 알고리즘으로 gradient ascent 방식으로 학습
  • Unbiased estimator: 

    • Unbiased라는 것은 보통 강화학습에서 sample을 사용한다는 것이다. 즉 MC 기법으로 사용할 때 보통 쓰는 말임...(maybe)
  • 하지만 이는 variance가 크기 때문에 average actor-critic 방법으로 baseline을 설정해준다. 따라서 다음과 같이 generator gradient가 바뀜 
    • baseline은 로 설정함. (이것의 목적은 value(사실 정확히는 Q function)의 큰 값에 일정한 값을 빼줘서 variance을 줄이려는 목적)
    • 여기서 살짝 의문인건 timestep t에서 value는 t~T에 해당하는 discounted reward의 합이고 baseline은 1~t에 해당하는 value로 설정하는 것임.
    • 원래 baseline은 state에만 의존하는 함수로 설정해야되서 이론적으론 됨.
    • MaliGAN에서는 b를 0~1로 변경해가면서 실험으로 설정하였음
    • SeqGAN에서는 baseline이 존재하진 않았음.
    • 논문에서는 기존 강화학습 표기랑 비교를 해보았다.
    • 와 baseline = critic
  • 최종 G모델 학습 수식은 다음과 같다.
  • 최종 D모델 학습 수식은 다음과 같다.
    • 수식보면 gradient ascent 방식임.(G또한)

3.4 Alternative Approaches For Long Sequences and Large Vocabularies

  • 이렇게 task을 수행할 때, 크게 두 가지 문제가 있는데 그것을 해결하기 위한 방법을 optional로 제시한다.
  • 첫 번째로는 long sequences와 large vocab에 대해 처리하기 어렵다는 것이다.

3.5 Method Details

  1. MLE 방법으로 Pretrain LM (SeqGAN 처럼)
  2. 이 학습 모델로 seq2seq NLG 모델의 encoder/decoder 초기화 (즉 초기화는 encoder와 decoder가 같은 것)
  3. In-filling task를 MLE 방법으로 pretrain seq2seq 모델
    • 이 때 attention 메커니즘을 사용(내가 알고있는 2번째 attention 방법)
  4. 500번 모델을 학습하면서(앞서 설명한 GAN 학습) lowest validation perplexity을 가지는 model을 선택
    • 논문에서는 정확히 안써있지만, 3번 step까지는 고정시키고 4번째 fine-tunning만 500번 했을 것이라 생각함

3.6 Evaluation

  • BLEU score에서 영감을 받아서 다음과 같은 metric을 제안한다.
    • we compute the number of unique n-grams produced by the generator that occur in the validation corpus for small n.
    • we compute the geometric average over these metrics to get a unified view of the performance of the generator.
    • 이해한 바로는, 생성된 sentence에서 unique은 n-grams을 계산한다.
    • n이 small number 여러 경우(n=2,3,4 등)에 따라 unique n-grams을 구하고 이의 기하 평균을 취한다.
    • 예시) 나는 약간 집에 가고 나는 약간 회사에 나는 약간 놀이동산에 가고 싶다.
    • 2-gram은 <나는, 약간> <약간, 집에> ... <가고, 싶다> 총 11개이다.
    • 하지만 <나는, 약간>은 3번이나 등장하므로 unique 2-gram은 9개이다.
    • unique 3-gram은 10개이다.
    • n=2,3만을 사용했다고 하면 기하평균은 root(9*10)이 score가 것이다.
    • 즉 mode collapse가 일어나는 model은 이 metric 값이 작을 것이다.
      • 반대로 말하면 unique n-gram이 큰 방향인, mode collapse가 안 일어나는 모델을 만들고 싶다.
  • 학습할 때, MLE benchmark을 위해 GAN hyperparameter을 validation perplexity을 최소화를 하는 방향으로 학습시켜보았지만, 이것이 생성 문장의 품질을 높여주지 않았다.
    • 따라서 이러한 validation perplexity을 줄이는 구조를 찾는 방향으로 집중하지 않고, heuristic evaluation metric(위에서 언급한 것)을 향상시키는 쪽으로 구조를 search하였다.
    • 논문의 글은 정확히 이해를 못했다. 
      • 내가 이해한 바로는, 학습은 Model details에 설명되어 있는 것처럼 진행을 하고 모델 선택은 validation PPL이 가장 낮은 모델을 선택하였다.
      • 하지만 G가 free-running 모드에서 off-manifold을 탐색하는 것이라 문장 생성 품질 향상에는 큰 효과가 없다?
      • 따라서 작은 PPL 자체를 줄여서 얻는 이득에 집중하지 않았다...?
      • 대신 논문에서 제시한 방법은 mode collapse을 고려한 heuristic metric울 향상시키는 것이 차라리 낫다는 거 같은데...
      • 즉 내가 이해한 것은) validation PPL가 적은 모델을 선택할 때, small한 차이에 대해서는 heuristic metric을 이용해서 모델을 선택한 느낌!!

5. Experiments

  • PTB와 IMDB 데이터 세트에서 Conditional과 Unconditional smaples에 대해 실험을 했다.
  • MaskGAN: GAN-trained variant
  • MaskMLE: MLE trained variant

5.1 The Penn Treebank (PTB)

  1. Pretrain commonly-used variational LSTM LM을 MaskGAN에 적용한다.
    • (이 때 이 논문을 따른다고 하는데 못 본 논문이라..Dropout을 그냥 적용시킨거 같은데..) MaskMLE을 했단 거 같음.
    • 이 때 D는 MaskMLE로 학습된 G로 D를 pretrain 했단 거겠지? (SeqGAN처럼, 2번이 말이 되려면, Method details의 3번 step까지를 의미하는 듯)
    • 이 때 validation PPL은 78
  2. MaskGAN G학습
    • 1에서 학습된 G의 weight으로 초기화하고 masking rate을 0.5로 학습시킨다.
    • 이 때 validation PPL은 55.3
  3. MaskGAN D학습
    • 2에서 pretrain된 G가 current G
    • Pretrain D on current G and real data

5.1.1 Conditional Samples  & 5.1.2 Language Model (Uncoditional) Samples

  • Condition은 밑줄 친 부분만을 채워넣는 task이고 Uncondition은 전체를 밑줄 쳐서 채워넣는 식이다. 이때 length는 20으로만 하고 실험을 하였다고 한다.
  • Apeendix 예시
  • Unconditional Samples
  • 결과가 썩... 잘 나오는 것 같지는 않다.

5.2 IMDB Movie Dataset

  • PTB처럼 LM을 pretrain 하였더니 validation PPL 105.6의 값을 가졌다.
  • G모델을 이 값으로 초기화 시켜서 masking rate을 0.5로 pretrain 하였더니 validation PPL 87.1의 값을 가짐.
  • 마지막으로 D모델을 앞서 학습한 G모델과 real text로 학습시켰다.

5.2.1 Conditional Samples  & 5.2.2 Language Model (Uncoditional) Samples

  • 여기서 Unconditional samples은 positive인지 negative인지 조건을 주지 않는데 그냥 만들어 낸 것인가? 싶음

5.3 Perplexity of Generation Samples

  • PTB데이터 세트에서 SOTA는 아니다.
  • GAN이 PPL에서 SOTA는 아니지만, sample generation quality 측면에서는 더 좋다.( 사람이 평가한 것은 뒤에 나옴)
  • 기존 방법은 Teacher-forced의 근본적인 문제가 있다.
  • BLEU가 샘플 품질과 꼭 관련이 있지도 않다는 연구가 있다.
  • In-filling task는 품질에 도움이 줄 것이라 믿는다..
    • 근본없는 믿음은 아니지만, 사실 이것도 수학적으로 증명하거나 그럴수는 없음
  • Autoregressively하게 MaskMLE/MaskGAN으로 실험하였다. 두 모델 모두 free-running 모드로 생성하였다.
  • MaskMLE은 teacher forcing 학습 동안 본적 없는 이상한 결과를 생성하지만, MaskGAN은 제대로 된 샘플링을 한다.(robust to sampling perturbations)
    • MaskGAN은 학습이 no teacher forcing이기 때문에 MaskGAN이 더 강하다는 것임

5.4 Mode Collapse

  • Evaluation에서 언급한 n-gram 을 계산함으로써 mode collapse을 측정한다.
  • 결과를 보면, 오히려 MaskGAN이 %가 낮다. 즉 mode collapse가 있음을 보여준다..(머지..?)
    • 하지만 전체 완성된 문장은 unique하다.(같은 것만 생성하거나 그렇다는 것은 아닌듯)
  • RL학습 과정에서 PPL은 초기에 떨어지고 그 다음에 계속 증가한다. 하지만 품질은 일정하다(나빠지지 않는다).
  • 여기서 가정을 하나 하는데, mode dropping은 문장 끝에서 발생할 것이라는 점이다.
    • 이유로는 문장이 길어질수록 점점 오차가 누적?되는 점으로 (생성된 것이 완벽하지 않은 것이 쌓이므로) tail 부분에서 발생할 것이다.
  • 또한 PPL이 문장 생성 품질과 꼭 연관성이 없단 ref도 있다.

5.5 Human Evaluation

  • Amazone Mechanical Turk 이용
  • 두 문장을 주고, grammaticality, topicality, overall quality에 대해서 질문을 함.
  • 두 문장 중 어느 것이 품질이 좋은지 혹은 둘다 아닌지에(=둘다 좋은지, 둘다 나쁜지) 대해 요청을 한다.
  • MaskGAN이 SeqGAN보다 사람이 봤을 때 좋다.
    • 왜 다른 알고리즘들에 대해선 비교를 안해봤을까?
    • 돈? 구현의 문제? 일수도

6. Discussion

  • 랜덤 Mask는 일반적으로 짧은 문장에서 빈 칸을 채워넣기 때문에 GAN에서는 long sequence을 만들어내는데 큰 효과는 없었다.
  • 하지만 free-running mode는 longer sequence을 탐색하는데 좋을 것이라 예측한다.
  • Policy gradient는 learend critic과 함께 사용하는 것이 더욱 효과적이다.
  • Conditioned input context에서 in-filled work 하는 것에서 attention 은 상당히 중요하다는 것을 알았다.
    • attention을 안하면 이상하게 생성 되더라..
  • 따라서 attention GAN 모델이 매우 좋을 것이라 예상한다.
    • OpenAI GPT-2처럼 Transformer로 하는게 현재로써 가장 효과적일 거 같은데...?
  • 일반적으로 in-filling task는 mode collapse을 줄여주고 GAN을 안정적으로 학습하는데 좋은 방법이라고 생각한다.
  • Ground truth test 데이터의 PPL은 MaskGAN이 높을지라도 품질면에서 좋다는 것을 보여주었다.

Appendix

C. Failure Modes

C.1 Mode Collpase

  • 다양한 N-gram levels에서 GAN 학습이 mode collapse가 발생하는 일반적인 실패도 발생한다.
  • 물론 1-gram level은 상당히 망한거지만... 다음과 같이 문법적으로 이상하지 않은 mode collapse가 발생을 한다.
  • It is a very funny film that is very funny It s a very funny movie and it s charming It 
  • 물론 D모델은 이러한 sample이 Out-of-distribution이라고 판단하지만, 이것은 failure mode이다.

C.2 Matching Syntax at Boundaries

  • 사람에게도 syntax하게 옳바른 문장을 생성하는건 쉽지 않다.
  • 왜냐하면, contextual 뿐만아니라 blank와 text사이의 고정된 숫자의 단어만으로 syntactically한 boundary을 매칭시켜야 하기 때문이다.
  • Cartoon is one of those films me when I first saw it back in 2000
  • 위의 예시는, failure mode로 문법적으로 틀렸다.

C.3 Loss of Global Context

  • Image처럼 locally하게는 괜찮은데, global coherence는 잃어버리는 측면이 있다.
  • 우리는 larger capacity model이 이를 해결할 수 있을 것이라 믿는다.
    • 실제로 OpenAI GPT-2는 많은 capa의 모델일 수록 잘 만들어내는 식 이였다.
  • This movie is terrible The plot is ludicrous The title is not more interesting and original This is a great movie
  • Lord of the Rings was a great movie John Travolta is brilliant

C.4 n-GRAM Metrics may be Misleading Proxies

  • 즉 4-gram의 정확도가 올라가더라도 PPL또한 올라간다.
  • 아래 예시는, improved 4-gram metric을 했지만 다양성을 잃어버린 예시이다.
  • It is a great movie It s just a tragic story of a man who has been working on a home
  • It s a great film that has a great premise but it s not funny It s just a silly film It s not the best movie I have seen in the series The story is simple and very clever but it
  • 즉 n-gram, PPL등의 metric만으로 natural language의 복잡성을 판단하는 것은 불충분하다.

Reference

댓글