NL-031, Toward Controlled Generation of Text (2017-ICML)

NLG(natural language generation), TG(text generation)의 논문 중, 무작위로 text을 생성하는 것이 아니라, 원하는 방향으로 생성하고 싶은 논문 중 첫 연구인 것 같다.


0. Abstract

  • Visual에 비해 TG는 아직 연구가 부족하다.
  • 이 논문은 그럴듯한 문장을, 속성을 controll하여 생성하는데, latent representation을 풀어내서 할 것이다.
  • VAE와 holistic attribute discriminator을 결합하는 방법을 사용한다.
  • Fake sample을 여분의 학습 데이터로 사용하며 Wake-sleep algorithm와 함께 VAE에 적용한다. (정확히 무슨 말 인지는 뒤에 보면 나오겠지?)
  • 제시한 모델은 learns interpretable representation from even only word annotations한다.
    • Word annotation?이 무엇을 의미하지?
    • 아무튼 이것을 이용하여 의미있는 latent space을 만든다는 것 같다.
  • 모델은 또한 원하는 속성을 가지는 (원하는 방향으로, 감정적으로) 문장을 생성할 것이다.

1. Introduction

  • 진짜 같은 문장을 생성하는데는 문장 속의 복잡한 semantic structure을 알아내야 한다.
  • Autoencdoer와 RNNLM을 이용한 것은 unsmoothness of effective hidden codes 때문에 임의의 hidden representation으로부터 일반적인 text generation에 적용하기 어렵다.
    • 아마도 hidden space가 어떻다는 것을 조건이 없이 학습하지 않기 때문에 representation이 제대로 일어나지 않는 다는 듯. (autoencoder vs VAE의 차이 느낌이랄까?)
  • VAE, GAN을 이용한 연구는 생성되는 text가 너무 많은 randomized와 uncotrollable한 성질을 가진다.
  • 이 논문에서는 controlled generation of text의 문제를 다룬다.
  • 하지만 이를 하기에 몇 가지 challenge가 있는데..
    1. Discrete nature of text samples
      • NTG 논문에서 맨날 언급하 듯이 언어 생성은 discrete space이기 때문에 미분이 불가능하고, BP가 G모델에 잘 인이루어진다
      • Policy을 이용하여 해결하려하나 high-variance 문제가 존재한다.
      • semi-supervised VAE을 이용하여 해결하려는 논문도 있으나, 이는 전체적인 문장의 속성을 잃어버릴 위험이 있다.
    2. Controllable generation relates to learning disentangled latent representations
      • 이전의 연구는, lack explicit enforcement of the independence property on the full latent representation 문제가 있어서
        • 즉 full latent representation의 속성이 독단성이 없다는 것 같다.
      • 따라서 varying individual code may result in unexpected variation of other unspecified attributes besides the desired one 문제가 있다.
        • 원하는 방향으로 latent space을 가지고 controllable을 할 수가 없다는 개념인 듯
  • 이 논문에서는 위 문제를 해결하기 위해 다음과 같이 한다.
    • permitting highly disentangled representations with designated semantic structure
      • 원하는 의미론적의 구조로 제대로 된 representation을 알자!
    • generating sentences with dynamically specified attributes
      • 다양한 속성을 가지는 문장을 생성!
    • VAE와 holistic discriminators of attributes을 사용
    • End-to-end 학습이 discrete case에 도움이 되고 빠르게 수렴할 것이다.(왜 그런지는?)
    • VAE의 확률적 encoder은 모델의 함축적 variations을 알 수 있고 G모델에 잘 가이드해줄 수 있을 것이다.
  • VAE는 wake-sleep 과정을 통하여 학습을 한다. 쉽게 생각해서 G와 D를 왔다 갔다 학습한다는 개념이라고 보면 될 것 같다.
  • 결과적으로! 이 논문의 모델은 과거 생성 모델모다 specified attribute을 가지는 생성 모델을 보여주며 생성 문장에 대해 classification을 할 수도 있다.

2. Related work

  • 생략

3. Controlled Generation of Text

  • 우리의 모델은 지정된 의미의 구조를 가지는 representation vector로 그럴듯한 문장을 생성하는데 집중한다.
    • 예를 들어) 긍부정의 문장을 다룬다고 하면, latent representation의 한 차원안에 positive와 negative 의미를 할당해둬서 sample을 이를 통하여 원하는 감정을 가지도록 생성할 수 있다.
  • 이전 연구와 다른 점은 다음과 같이 3가지가 있다. (정확히 이해를 못해서 원문과 같이 써두었음)
    1. facilitates effective imposition of latent code semantics by enabling global discriminators to guide the discrete text generator learning
      • Global D모델을 discrete text generator의 학습에 사용함으로써, latent code semantic을 효과적으로 이용한다?
    2. improves model interpretability by explicitly enforcing the constraints on independent attribute controls
      • independent 속성의 조건을 명쾌하게 강요하면서 모델의 해석능력을 향상시킨다.
    3. permits efficient semi-supervised learning and bootstrapping by synthesizing variational auto-encoders with a tailored wake-sleep approach.
      • VAE with wake-sleep 접근을 통하여 효과적인 semi-supervised learning과 bootstrapping을 사용한다.

3.1 Model Overview

  • VAE을 이용하여 text generation을 하는 모델이다.
  • 은 generated sentence을 의미하고 이를 생성할 때, condition은 latent code 이다.
    • 기본적인 VAE는 unstructured vector 을 적용한다.
  • 우리는 속성을 컨트롤 하기 위해, unstructured vector 와 함께 structured variables 을(targes a salient and independent semantic feature of sentences) 사용한다. 
  • 즉  combined vector ()을 condition으로 sentence을 geneartion한다.
    • 안에 특정짓는 속성들로 채워져 있다는 것
  • Conditional generation VAE는 종종 주어진 feature code의 예시를 재구성하는 방식이다. (무슨 말인지..)
    • 그러나 data space에서 element-wise distance를 계산하는 것 보다 feature space에서 거리를 계산하는 것이 더 좋은 invariance to distracting transformation이 가능하게 한다.
  • D가 G가 만든 sample이 얼마나 desired attributes을 맞췄는지를 판단하여 에 전달하고 이를 G에 전달한다.
    • 맨날 말하는 discrete token space 때문에 미분, BP의 어려움이 있다.
    • decreasing temperature softmax을 통한 continuous approximation 방법을 사용
  • 해석가능한 representation structured code control target feature을 한다.
  • 반대로 는 와 관련이 없게 분리되서 다룬다.
  • we reuse the VAE encoder as an additional discriminator for recognizing the attributes modeled in z, and train the generator so that these unstructured attributes can be recovered from the generated samples
    • (먼 말인지는 모델 구조를 봐야 알 듯)
    • 이 그림이 위에서 말한 것을 한 눈에 보게 하는 설명이다.
    • VAE with wake-sleep learning은 효과적으로 semi-supervised 학습이 가능하게 한다. (적은 supervision 만으로도 효과적!)

3.2 Model  Structure

3.2.1 Generator Learning

  • Generator G는 LSTM-RNN 구조를 사용하였다.
  • 은 conditioned on latent code ()에서 부터 생성된 토큰이다.
  • 다음과 같이 표현을 생성 문장을 표현할 수 있다.
    • 즉 z, c는 입력 문장에서 생성한 latent code이고 각 token을 auto-regressive하게 생성하는 식?
  • 결국 generation은 sequence of discrete decision masking이고 time step t에서 다음과 같은 식을 따른다.
    • temperature (>0)는 학습 과정에서 1에서 +0으로 점진적으로 감소하면서 진행을 한다.
    • 이렇게 하면 variance을 줄여주고 수렴 속도가 빨라지게 된다.
      • temperature softmax는 원래 자주 사용하던 기법으로 알고 있고 자료도 많으니 찾아보면 더 자세히 알 것이다.
      • 간단히 생각해보면, 가 작아진다는 것은 scaling을 크게 한다는 것이다.
      • 예를 들어) 출력이 [2^1, 2^2, 2^3]이 나온것을 [2^10, 2^20, 2^30]으로 크게 한다는 것이다. 그러면 양쪽다 3번째 항이 최대 확률로 나오는 것은 똑같으나, scaling을 크게 한 것이 더욱 큰 값을 가짐으로써 확실하는 느낌을 줄 것이다. 즉 분산을 줄이고 수렴을 빠르게 하는 효과를 보여준다!
    • Generation의 diversity는 보장이 될 것이다.
      • we use the approximation only for attribute modeling and the base sentence generation is learned through VAEs.
      • c를 이용한 것에 대해서는 근사를 하지만, 기본적인 문장 생성은 VAEs을 이용하기 때문이다. (즉 z에 대해서는 VAE의 sampling을 사용하니까 다양성이 보장될 것이라는 거 같다.)
  • Unstructured part 는 continuous variables with standard Gaussian 확률이고 (사실상 가정이긴 함) structured code 는 continuous + discrete variables to encode different 속성을 가지는 확률이라고 생각한다.
  • x가 주어지면, VAE는 다음과 같이 encoder을 통해 latent 을 생성한다.
  • 는 각각 generator G와 encoder E의 paratmer라고 표기한다.
  • VAE는 다음의 식 (4)와 같이 reconstruction error of observed real sentence을 하게 된다. 이 때 일반 VAE에 있는 것처럼 KL regularization이 추가된 loss이다.
    • 식에서 Expected 부분에 z와 c를 뽑아낼 때 는 다음과 같이 정의된다.
      • 즉 입력 문장 x에서 D모델을 통과한 값이 c가 되는 것?
  • 여기서는 간단하게 표기하기 위해, 하나의 structured variable c와 하나의 discriminator D로 표기를 했지만, 실제로는 여러 개가 가능하다.
    • 즉 우리가 주고 싶은? 하고 싶은 속성 개수에 따라 개수가 결정
  • D를 VAE loss에서 학습하지 않는다. (즉 D는 고정시키고 시작, 다음 섹션에서 D학습에 대해서 나옴)
  • G학습 시, D에서 extra learning signal을 주게 된다. 하지만 discrete samples을 통한 D의 gradient을 BP하는 것은 불가능하기 때문에 deterministic continuous approximation을 사용한다.
    • 사실, 그냥 softmax시켜서 classification 하는 것처럼 바꾼다는 것인 듯
    • 즉 각 step에서 approximate token xt(represented as a one-hot vector)의 확률을 뽑아내겠다는 것이다.
    • 문장을 하나 생성하는데, p(z)와 p(c)를 따르는 z,c를 G에 따르게 하여 "soft" generated sentence 를 생성한다.
      • 왜 "soft"가 붙었는 지는?? (optimal이 아니라 그런 것인가?)
      • 즉 z,c을 p(z), p(c) 분포를 따르는 것중 sampling해서 G에 넣어서 문장을 생성하는데 G의 출력 단에서 softamx를 취한 값이 [0.1, 0.2, 0.7]이면 3번째 vocab에 해당하는 word를 생성하는게 일반적일 것이다.
      • 즉 3번째 index에 해당하는 word를 생성하여 이를 다시 word_embedding을 통과한 값을 가져가게 될 것이다.
      • 하지만 여기서는 [0.1, 0.2, 0.7] 그대로 word_embedding matrix와 곱한 값을 사용하겠다는 것이다.
      • 즉 word1_embedding*0.1+word2_embedding*0.2+word3_embedding*0.7의 값을 가져가서 다음 입력 값으로 사용하는 개념이다.
  • 을 이용하여 새로운 loss를 식 (6)과 같이 정의한다.
    • 여기서 z,c는 p(z), p(c)를 따르는 것이고 즉 가우시안 분포(이것으로 restrict 했음)를 따르는 분포에서 샘플링하는 것임
  • 식 (6)을 통하여 생성 문장의 each structured attribute은 다른 latent representations와과는 독립적이게 될 것이다.
  • 하지만 여전히, c의 dimension이 변함으로써 다른 속성들과 얽힐 수가 있다.
    • 정확히 왜 그런지는 모르겠으나 속성의 개수가 달라지면, c의 dimension이 달라지고 그렇게 되면, c와 z가 독립적이지 않을 수 있다는 것 같음.
  • 이것을 해결하기 위해, 즉 속성 c가 unstructured part 와 분리시키기 위해 식(7) loss을 추가한다.
  • 식 (4), (6), (7)을 통합하여 최종 generator objective는 다음과 같이 된다.
    • Weighted averaged loss 형식
  • 예시로 한 번 이해를 해보자
    • 학습 데이터 x: "그 영화는 매우 재미있었다."
    • 속성으로 positive, negative가 있다고 하자.
    • D(x)는 얼마나 긍부정을 판단하는 학습된 네트워크인 상태
    • 식(4)는 x를 VAE로 재구성하는 학습에 대한 loss이다.
      • 즉 x가 인코딩되고 디코딩되어서 다시 x가 되는 것을 의미한다.
      • 이 때, VAE 방식을 적용한 것이고 생성할 땐, auto-regressive하게 하나씩 token이 생성 (식 (1)처럼)
      • 생성을 할 때, z와 c가 필요한데, z는 E(x)을 통해 얻을 수 있고 c는 D(x)을 통해 얻을 수 있다.
      • E와 G를 학습하는 것
    • 식 (6)은 이렇게 생성된 문장을 x^라 하면, D(x)=D(x^)에 대한 loss라고 생각.
      • 즉 x^: "그 영화가 꽤 재미있었다."라고 생성이 되었다고 하자.
      • 그러면 D(x)=D(x^)=positive로 얼추 비슷해질 것이다.
      • 이 때 D는 고정되어 있는 것이고 loss로써 BP가 G학습에 전달이 되는 것
    • 식 (7)은 E(x)=E(x^)일 loss이다. E는 encoder을 의미
      • 즉 x^는 x가 되도록 생성되어진 것이고, 그렇다면 enocder을 통과한 E(x)=E(x^)인 encoding feature또한 같을 것이다.
      • 이 때 E는 고정되어 있는 것이고 loss로써 BP가 G학습에 전달이 되는 것

3.2.2 Discriminator Learning

  • Discriminator D는 문장의 속성과 우리가 원하는 특징을 알아내는 데 error을 evaluate을 하는 방식으로 학습을 한다.
  • D는 VAE의 E와 다른 방식으로 학습이 된다. 왜냐하면 target atrribute는 discrete할 수 있고 VAE의 framework을 지원하지 않기 때문이다.
    • 그냥 일반적인 classification 하는 식으로 학습하면 된다는 듯
  • Uncstructured code 는 unsupervised 학습 방식이고 structured variables 는 labeld 데이터로 semantic을 이용하여 학습하는 식이다.
  • 이 학습데이터로 D를 다음의 objective function을 가진다.
  • 게다가 이 때는 G가 고정되어 있는 상태, 즉 학습이 되어있는 상태라고 생각
    • 따라서 G를 이용해서 생성된 데이터를 이용하여 추가적인 학습데이터로 사용하는 semi-supervised learning을 할 수가 있다.
    • 하지만 noisy data이기 때문에 이에 대한 문제점과 model 최적화를 강화하기 위해 regularization term을 추가하여 학습을 한다.
    • H가 empirical Shannon entropy라는 것인데, 의도는 알겠으나 정확히 어떤 개념인지는 논문의 reference을 봐야할 듯 싶다.
    • 여기서 식을 보면, p_G(x^|z,c)p(z)p(c) 이렇게 되어 있는데, 이건 결국 sampling을 3번 한다는 것이였다.
    • 코드를 보면, 생성 output이 [0.1, 0.2, 0.7]이면 이를 다시 sampling 함수에 넣어서 나온 결과를 가져 간다.(일반적으로는 가장 큰 값인 0.7에 해당하는 index을 가져가겠지만, 이를 한 번 더sampling하는 것이다. 웬만해서는 0.7의 index인 2가 나오겠지만 뭐 가끔은 0이나 1이 나올 수도 있겠지..)
  • 예시로 한 번 이해해보자!
    • x: "그 영화는 매우 재미있었다", c: positive라고 주어져 있다.
    • 식 (9)는 D(x)=1이 되도록 학습을 하는 것이다.
    • 식 (10)은 E(x)=z와 c를 이용하여 Generator을 통과시킨 x^을 생성한다.
      • 그 다음 D(x^)=1이 되도록 학습을 시키는데, 이 때 G는 noisy한 결과를 생성하므로 regularization term을 추가하여 loss을 설정한다.
  • 따라서 최종 D의 학습 방식은 다음과 같다.

3.2.3 Summarization and Discussion

  • G와 D모두 학습하는 알고리즘 식은 다음과 같다.
    • 초기 pretraining은 Vanila VAE을 (4)로 학습하는 것으로 진행을 한다.
      • 이 때 c는 p(c)에서 sampling을 한다고 하는데, code보면 [0.5, 0.5]의 random normal 분포에서 샘플링한다. (그냥 랜덤값 넣는다는 것)
      • 왜 식 (9)을 이용하여 D를 pre-training 해서 D를 통과한 값을 사용하지 않을까? (SeqGAN 처럼)
      • c를 labeling된 ground truth을 가져와서 사용하는 것은?
    • 그 후, GAN처럼 loop으로 G와 D을 번갈아 가면서 학습을 진행하게 된다.
    • 이 때 의문이 들었던 점은 4행에서 G와 E를 각각 식 (8), (4)로 학습을 하게 된다.
      • 위에서 설명했듯이, (8)은 G loss이고 (8)의 첫번째 term인 (4) VAE loss에서만 E가 학습이 되는 방식이다.
      • 사실 이 개념은 (8)로 optimization할 때 (4) VAE loss빼고는 Encoder parameter을 안 건드리게 하는데 실제 (7) loss을 구성할 때 Encoder parameter을 가져다 쓰게 된다.
      • 즉 생각해보면 (7) loss를 구성하는 encoder parameter은 안건드리고 (4) loss을 구성하는 encoder parameter만 학습해야하는 상황?이다.
      • 따라서 coding 단에서 (4)로 Encoder parameter을 optimization하는 식으로 학습하고, (8)로는 Generator parameter만 optimization하는게 편해서 그런 거 같음.
  • 그림 2가 wake-sleep의 방식과 비슷하다는 것을 말하고 있다.
  • D는 속성에 따라 이용하면 된다. 만약 긍부정, 평상의무문 이런식의 속성을 부여하고 싶다면 D는 두 개의 네트워크가 존재하는 것으로 두 개를 훈련시키는 식이다.
  • Labeled data는 generator하는데 사용하지 않았다.
    • (Inference 때를 말하는 것 같은데) 만약 labeled data중 words or phrases의 데이터를 labeled sentence로 확장할 수 있다.
    • 예를 들어) "나쁨: negative" 라는 word-attribute가 있다고 하면, "나쁨"을 D에 통과시켜 D를 학습시킨다. 그리고 문장  생성하는 VAE를 이렇게 학습시키는 D와 연결하여 모델을 학습시킨다. 그러면 입력이 "기분이 좋다." + condition "negative"가 주어지면 "기분이 나쁘다: negative"로 sentence 데이터를 얻을 수 있다.

4. Experiments

  • 짧은 문장을 (length <= 15) 생성하고 sentiment(긍부정)과 tense(시제)을 control하는 모델을 적용하였다.
  • Dataset
    • Sentence corpus
      • 350개의 영화 리뷰
      • 자주 등장하지 않는 단어는 <unk>
      • 1.4M 문장 / vocab size 16K
    • Sentiment
      • 긍부정 데이터 세트
      • SST-full
        • 영화 단위의 긍부정
      • SST-small
        • 적은 데이터로 semi-supervised 학습의 효과를 알기 위함
      • Lexicon
        • 단어 단위의 데이터세트
        • 이를 이용하여 word를 sentence-level로 컨트롤 하기 위함
      • IMDB
        • 영화 리뷰의 긍부정
    • Tense
      • 문장 단위의 corpus가 없다.
      • 그래서 labeled word-level로만 학습을 시키고 이를 이용하여 원하는 문장을 생성을 한다.
      • TimeBank 데이터 세트 사용
        • 5250 lexicon words
        • label은 {"past", "present", "future"}로 구성
  • Parameter Setting
    • G와 E의 모델은 single-layer LSTM RNNs, input/hidden 300차원, max-length 15로 구성
    • D는 ConveNets으로 구성
    • KL term 가중치는 0에서 1로 변경하면서 학습
    • Balancing paramters은 0.1로 설정

4.1 Accuracy of Generated Attributes

  • 이 논문의 모델과 S-VAE(semi-supervised VAE)로 구현한 reference와 비교를 한다.
  • 생성된 문장은 SST test set에서 90%성능을 내는 SOTA sentiment classifier로 평가를 한다.
  • 즉 sentiment code c가 주어졌을 때, 문장을 생성하고 pre-trained sentiment classifier로 label을 평가한다.
    • 이 classifier가 제대로 sentiment classification을 하는 정확도를 보겠다는 것이다.
    • 각각 데이터에따라 학습한 두 개의 모델(S-VAE vs Ours)로 성능을 평가를 했다고 보면 된다.
    • 특히 SST-small에는 250 labeled example 밖에 없는데 그럴듯한 정확도를 보여주게 된다. (very little supervision 만으로 learning disentangled representation)
  • 중요한 게 볼 수 있는 점은 word-level인 Lexicon 데이터 세트에서 ours가 성공적으로 sentence level 데이터를 생성했다는 것이다.
    • 즉 원하는 sentiment를 가지는 transfers the knowledge 했다고 판단한다.
    • 이 차이는, S-VAE는 단지 labeled words을 재구성하는 것에 초점을 맞추고 ours는 생성 문장을 평가하는 과정까지 담고 있기 때문이다.
      • GAN vs Only Generator의 차이라고 봐도 될 듯
  • Ours을 학습할 때, best-performing classifier을 만드는 것이 목적은 아니다.
    • 단 D는 generator의 품질을 좋게 해주는데 도움을 줄 수가 있다. (속성에 대한 정보를 제공함으로써)
    • Std는 ConvNet구조로 ours와 같은 discriminator의 구조인데 original data로만 학습을 한 것이다.
    • H-Reg는 Std + minimum entropy regularization을 한 것이다.
      • minimum entropy regularization은 위에서 empirical Shannon entropy을 의미하는 것이다.
      • H-reg가 Std보다 성능이 뛰어남을 보이면서 regularizatgion이 효과가 있음을 보여준다.
    • Ours의 성능이 다른 것들에 비해 좋음을 보여준다.
      • 즉 VAE 구조를 가지는 우리 모델이 D의 학습에도 도움을 줄 수 있음을 알 수가 있다.
      • S-VAE는 위에서 D모델을 사용 안한다고 했는데..
        • S-VAE uses the same protocol as our method to augment with the data generated by the S-VAE model
        • 아마 학습된 S-VAE로 data을 생성하여 original data + generator로 D을(=std) 학습했다는 것 같음.

4.2 Disentangled Representation

  • 일단 식 (7)의 constraint term의 효과를 Table 2에서 알 수 가 있다.
    • 이것을 보면, constraint가 있는 결과는, 각 쌍이 비슷한 subject, tone, wording 등을 가지고 constraint가 없으면 해석하기 좀 더 어렵고 예기치 못하는 결과를 뽑아낸다.
    • 즉 식 (7)이 의미하는 것은 c에서는 담고 있지 못하는 입력과 출력의 z(subject, tone, wondering 등)를 만들어주는 제약이 있다.
  • 긍부정말고 다른 속성을 변경시켜 실험을 해 보았다.
    • 결과를 보면, 이 또한 제대로 생성이 된다.
    • 여기서 tense 속성에 대해 주목할 점은, 완전한 문장 데이터 없이 단어 레벨로만 lexicon을 D를 학습하였는데 제대로 생성했다는 점이다.
    • 즉, 모델이 key ingredients("was", "will be")등을 잘 찾아내어 문장을 생성하는 G와 잘 결합하여 제대로 된 문장을 생성한다는 점이다.
    • sentiment와 tense의 속성을 다양하게 넣어서 문장을 생성하면 위와 같은 결과를 얻을 수 있다.
    • 두 개 이상의 속성을 넣는다 했을 때, c1과 c2을 어떻게 combine하는지는 안나와 있다.
    • 하지만, c1인 sentiment로 2-class이고 c2가 tense로 3-clsss이면, [c1;c2]인 5차원 vector을 z와 결합하여 학습을 진행할 것 같다.
    • 그런데 D는 c1과 c2에 해당하는 D1과 D2가 따로 존재한다. 그래서 예를들어 "그 영화는 재밌었다"라는 데이터 x가 있으면, E(x)가 z가 되고 c1=D(x)=[1,0](positive, negative)식으로 나올테고 c2=D2(x)=[0.8, 0.2, 0](past, present, future)식으로 나와서 이게 합쳐진 [1,0,0.8,0.2,0]이 들어가는 식이 아닐까 생각해봄..
    • Table 5는 실패한 샘플이다.
    • 모델의 성능을 향상시키기 위해서는 dilated convolution으로 decoer + beam search 등을 사용하는 방법이 있을 것이다.
    • 혹은 좋은 체계적인 평가도 요구될 수 있다.

5. Discussion

  • 해석가능한 latent representation과 특정 속성으로 문장을 생성할 수 있다.
  • 제한된 길이(여기서는 15이하)의 의미있는 문장을 생성하고 속성에 대한 성능(D의 성능)을 향상시켰다.
    • 좀 더 긴 문장과 더 많은 속성을 컨트롤하는 것이 future work..
  • Semi-supervised learning within the joint VAE/wake-sleep framework is effective with little or incomplete supervision. 
    • 사실 나는 개인적으로 wake-sleep이 GAN 학습 방식이랑 어떤 부분이 크게 다른지 모르겠음.
    • 적은 데이터로 효과적이라는 것은 SST-small의 데이터로 실험 결과를 보여준 것
  • 이 연구로 보여준 것으로 structured constraint가 해석가능한 latent code이고 이것에다가 사람의 사전 지식(여기서는 문장 구조를 생성할 수 있는 G모델)을 첨가하면 대화 시스템의 structured dialog states의 문장생성으로 활용할 수 있다.
  • 또 알 수 있었던 점이, 여기서는 Generator에 초점을 맞추었지만, generating labeled samples을 이용한 semi-supervised 방법이(식 10) D모델의 성능을 향상시켜준다.
    • 이 점도 classification 관점에서는 기억해두면 좋을 것 같다.
    • 따라서 어떠한 discriminative task에도 conditional generative 모델로 생성한 데이터를 추가 labeled data로 사용할 수 있다.

Reference

댓글