NL-034, Content preserving text generation with attribute controls (2018-NIPS)

0. Abstract

  • 이 논문은 문장의 textual attribute들을 변경하려고 하는 논문이다.(style transfer)
  • 즉 (입력 문장 + 속성 레이블의 세트)가 주어지고 이의 조건으로 문장을 생성하는 것이다.
  • 모델이 호환 가능한 content를 만들어 내도록 reconstruction loss을 설정을 한다.
    • recon loss는 auto-encoding과 back-translation 사이를 interpolate을 하는 것이라고 함.
    • 뒤에서 좀 더 자세히 나오겠지?
  • 이 논문은 adversarial loss을 제안하여 속성이 호환 가능하고 진짜같도록 문장을 생성하도록 한다.
  • 사람의 평가를 해본 결과 이전 연구들 보다 성능이(fluency 등) 좋다.
  • 또한 이 모델은 여러 속성을 제어 가능하다.

1. Introduction

  • 이미지에서 속성 변화는 연구가 많이 진행 되었다.
    • 대표적으로 얼굴/꽃, 새 등
  • 언어는 discrete & sequential한 특성을 가지고 있기 때문에 어렵다.
  • 영상에서는 픽셀이 살짝 달라도(원래 색깔이랑) 무시할 수 있다.
    • 하지만 언어는 조금만 달라도 다른 뜻을 가지고, 애초에 언어 공간이 discrete space이기 때문에 영상에서 사용하던 방법을 그대로 적용하긴 어렵다.
  • 이 논문은 문장과 그에 맞는 conditioning attribute가 주어지면 새로운 문장을 생성하는 모델을 연구하는 것이다.
  • 이 모델이 사용되어질 application으로는 다음과 같이 있다.
    • Conversational system
    • Paraphrasing
    • Machine translation
    • Authorship obfuscation
  • 기존의 seq2seq 방법은 parallel data가 있어야만 가능하다.
    • 따라서 lack of parallel data 시점에서는 다른 방법이 필요하다.
    • Non-parallel로 이러한 문제를 해결해야 하고 challenging하다.
  • 여기서 제시하는 속성들로는 다음과 같이 있다.
    1. Sentiment
    2. Language complexity
    3. Tense
    4. Voice
    5. Honorifics
    6. mood
    7. etc
  • Content preservation은 auto-encoding과 back-translation loss을 사용하고 강화하였다.
  • Attribute compatibility realistic sequence generation은 adversarial discriminator을 이용하였다.
  • 이전의 연구들은 속성 변화 관점 위주로 평가를 함.
    • Style만 제대로 바꼈는지 평가를 했다는 것임.
    • 물론 NL-033에서 content 측면에서도 평가를 하긴 했으므로 아예 없는 것은 아닌데..
  • 따라서 여기서는 content preservation와 generation fluency를 고려한 새로운 metric을 제안한다.
    • 새로운 metric이 필요한 관점에서(제대로 평가하기 위해) 사람의 평가도 진행하였다.
  • 더 나아가서 사용할 수 있는 병렬 데이터를 이용하였다.
    • Generating contetn, attribute comparible, realistic sentence에 관하여 parallel data로 evaluation을 하였다.
  • 또한 이 논문에서 제안한 모델은 multiple textual attribute을 수정할 수 있는 첫 번째 연구라고 함.
    • 기존에는 pos-neg 등 sentiment에 관한 하나의 속성을 다루었다고 하면
    • 여기서는 sentiment뿐 아니라 tense, vocie등을(위에서 언급한) 같이 바꿀수 있다고함.
    • 사실 NL-031에서 sentiment와 tense을 동시에 바꾸는 것을 다루었기 때문에 이 논문이 처음은 아닌 것 같음.

2. Related Work

  • Conditional Text Generation
    • 이전의 연구들이 생성 문장에서 컨트롤 하려는 속성의 관점은 길이 / 목소리 / 명예, 공손함 등에 관련한 것이다.
    • 이러한 것은 word embedding matrix와 learnable attribute vector을 이용하는 것이다.
      • Conditional LM
    • Hu(NL-031)은 conditionial LM을 VAE을 기반으로 한 연구이다.
      • 하지만 VAE는 학습이 어려운 단점이 있다. 왜냐하면 posterior colaapse problem이 있다고 함.
      • 이러한 문제를 해결하기 위해 Aneealing 기술을 사용한다.
      • 하지만 reconstruction을 할 시, 입력과 출력이 다르다는 점이 존재한다. (이는 VAE의 sampling 때문일텐데 꼭 단점인가?)
  • Style Transfer
    • 최근 연구들은 non-parallel text을 다루는 연구들이다.
    • Li[21]은 주어진 문장에서 속성을 가지는 단어를 찾은 후 그 단어를 대체하는 방법이다.
    • Shen(NL-032)은 adversarial discriminator을 이용하는 것이다.
    • Prabhumoye(back-translation)은 문장을 다른 언어로 바꾸면 style 속성이 바뀐다고 사정한다.
    • Adversarial discriminator을 학습하는 것을 이용하여 생성 문장이 condition으로 주어진 style 속성을 가지도록 만든다.
    • 이 논문에서는 여러 속성을 다루는 것이 이전의 연구와 다른 점이다.
  • Unsupervised Machine Translation
    • 번역 연구에서 다양한 언어에서의 latent alignment에 관한 관심이 높다.
    • 이에 따른 여러 연구가 있음. He[24], Artetxe[25], Lample[26] 등
    • Auto-encoding loss와 back-translation loss은 content preservation을 하기 위하여 이전의 연구에서 사용하였다.
    • 이 논문은 각 loss들에 대한 단점으로 다음과 같이 말한다.
      • auto-encoding: prefers the copy solution
      • back-translated samples can be noisy or incorrect
    • 이 논문은 두 개의 loss을 interpolate을 하여 이러한 이슈에 대한 민감성을 줄이려고 한다. (즉 이를 이용한 새로운 loss을 정의 했단 것인 듯)

3. Formulation

  • 우리가 다룰 속성은 K개로 다음과 같이 표기한다.
  • Labeled 문장은 다음과 같이 표기한다.
    • 여기서 l은 속성에서 가질 수 있는 label을 말한다.
    • 속성이 시제(tense)라고 하면 l(시제)는 총 3개를(과거,현재,미래) 가질 수 있으므로 N=3이 된다.
  • 여기서 content는 attribute가 반영이 안되는 문장의 정보를 의미
  • Attribute vecotr을 binary vector로 (0 또는 1의 값만 가지는) attribute labels을 의미한다.
    • 이는 각 속성이 one-hot vector로 구성이 되는데, 이를 concatentation한 것이다.
    • 예) 속성이 긍부정과 시점을 나타내는 것으로 2개라고 가정하고 각 속성이 가질 수 있는 label은 2개, 3개라고 하자.
      • "내일는 날씨가 좋을 것 같아요"
      • sentiment: 긍정, tense: 미래 → [1,0], [0,0,1]을 연결하여 [1,0,0,0,1] 등으로 표기

3.1 Model Overivew

  • 우리는 G가 입력 문장의 의미를 담으면서 속성을 반영하고 싶다.
  • 로 구성되어 있고 encoder와 decoder 모두 RNN이다.
  • 로 content representation을 의미한다.
  • 이렇게 encoding된 것과 attribute values l'을 조건으로 하여 로 문장을 생성을 (sampling) 하게 된다.

3.2 Content compatibility

  • Autoencoding loss
  • Back-translation loss
    • 입력문장 x와 이에 해당하는 속성 l이 있을 때 x를 재구성하도록 (1)-AE loss만 적용한다면, 문제가 있다.
    • 이는 AE가 실제로 latent represenation을 배우는 것이 아니라 단순히 입력 문장을 copy하는 능력을 배우는 것이기 때문이다.
    • 따라서 이를 방지하기 위해 back-translation loss을 적용한다.
    • 는 Genc(y)을 의미한다. 즉 y을 encoding한 것과 x의 속성 label l을 조건으로 x를 재구성하는 loss이다.
      • 이전 연구는 왜 이렇게 안했나 생각해보면 애초에 x와 y가 parallel하지 않기 때문이다.
      • 즉 어떤 x와 어떤 y가 매칭이 되어야 하는지를 모르기 때문에 이러한 loss을 적용할 수가 없었다. 
      • 이러한 loss을 사용하기 위해서 y와 x와 다른 속성으로 생성한 문장으로 대신 사용한다.
    • 하지만 이러한 back-translation loss은 generator 초기 학습 시, y와 x의 content와 mismatch가 되도록 잘못 가이드를 할 수 있다.
    • 우리는 이러한 문제를 해결하기 위해 interpolated reconstruction loss을 설정한다.
  • Interpolated reconstruction loss
    • z_x와 z_y을 융합하여 z_xy을 정의한다.
    • g는 binary random vector로 Bernoulli distribution with parameter 으로 부터 sampling 한다.
    • 식(3)에서 는 gi=1일 때, 는 gi=0일 때이다.
    • 따라서 이를 interpolated content embedding이라고 말한다.
    • 여기서 말하는 (3) loss의 효과는
      • embedding이 interpolated content embedding이기 때문에 decoder가 학습하기 쉽지 않게 만든다. 즉 단순히 copy하는 방식이 아니라는 것이다.
      • 또한 z_x와 z_y가 유사하도록 장려하는 효과가 있다.

3.3 Attribute compatibility

    • 여기서 밑의 stream인 y의 입력은 (x, l')을 통하여 생성된 문장임을 감안하고 보면 된다.
    • 근데 생각해보면 살짝 이상한게, (x,l')로 y를 생성할 때는 z_x만을 이용할 수 밖에 없는 구조이다.
    • 그런데 실제로 학습할 때는, z_xy을 이용하여서 AE을 구성하게 된다.
    • 즉 같은 decoder을 쓰는데 위의 stream은 z_x을 아래 stream은 z_xy을 이용하게 되는 것이다.
    • 그러면 일관성이 없지 않나?
    • 즉 다시 말하면 z_xy을 구성하기 위해서는 x로부터 y를 생성해야 하는데 이때, decoder에는 interpolated embedding이 아니기 때문에 일관성이 없는 것 같은데..
    • 참고로 그림2에서 학습 과정을 보면 teacher forcing이다
  • 문장 s와 속성 a가 (s,a)로 쌍에 대한 adversarial loss을 이용하여 realistic하고 attribute compatible한 문장을 만들자.
  • hx와 hy가 decoder의 hidden state라고 하자.
  • L_adv loss는 다음과 같이 설정할 수 있다.
      • 식을 보면, D학습 과정에서는 max로 해야하니까 x는 real, y는 fake로 판단을 해야한다.
      • G학습 과정에서는 min해야 하니까, 이를 속이기 위해 y를 생성할 시 y가 real로 판단하도록 G가 학습될 것이다.
      • 실제로는 real / fake가 아닌, 속성 l / l'을 판단하는 D를 학습하는 것으로 생각이 된다.
      • 이해하기론 real/fake을 판단하는 것과 속성 l/l'을 판단하는 것은 똑같은 말이다
      • 여기서의 목적은 제대로 된 속성을 가지도록 문장을 생성하는 것이기 때문에 속성을 판단하는 것으로 이해하면 될 것 같다.
    • 여기서는 이전과는 다르게 adversairal loss를 decoder의 부분에 설정하였다. 
      • NL-032의 4.2와 비슷한 식으로
    • 대부분 앞의 포스팅들에서는 encoder한 것을 discriminator을 이용하여 style을 뺀 content의 의미를 담도록 adversarial training을 하였는데 이와는 조금 다르다.
    • 앞의 포스팅에서 한 것과 같이 encoder의 sentence embedding z가 content representation이 되기 위한 장치는 interpolated embedding을 통해 가져가는 것 같다.
    • 이것마저도 adversarial하게 하는 것도 하나의 방법 같음! 아니면 NL-032의 4.2처럼 encoder의 입력에 속성도 같이 줘서 하는 것도 될 것 같음.
    • 즉 여기서는 hx, hy과 decoder(generate)의 sentence embedding이라 보는 것 같고 이를 통하여 제대로 된 속성을 가지도록 discriminator을 이용하겠다는 것이다.
    • 예를 들자)
      • x: "그 영화는 재밌다", l: positive
      • z_x, l'=negative을 decoder에 넣어 마지막 hidden state을 hy라고 하면 hy=l'을 가지도록 D을 이용하여 하겠다는 것이다.
      • 물론 D가 제대로된 판별자여야 하기 때문에 alaternative하게 학습을 할 것이라 생각됨.
    • 이렇게 하면 근데 문제점이, hidden state만 보고 속성을 판단하게 된다고 한다.
      • 그러면 실제로 생성되는 문장과 다른 속성으로 판단하는 경우가 있다고 함.
      • 아마도 hidden state가 정말로 문장의 embedding이 아니기 때문에 생기는 문제 같은데..?
    • 아무튼 그래서 [5]에서는 이러한 문제를 다음과 같은 loss (5)을 제안한다.
    • 여기서 사용한 discriminator은 다음과 같다.(projection discriminator)
      • lv는 binary attribute vector coressponding to l이다.
      • 파이는 bi-drectional RNN encoder의 last hidden state 값 이다.
      • W가 learnable parameters인 matrix이다.
    • 전체 loss는 로 구성되어 있다.(lambda는 hyperparameter)

3.4 Discussion 

  • Soft-sampling and hard-sampling
    • Text generation 모델은 discrete space을 다루는데 학습 신호를 얻기가 쉽지 않다. (단순히 BP를 하면 잘 안됨)
    • Soft-sampling은 sampled word vector의 근사값을 sampling process로 사용하여 BP gradient가 가능하게 하는 것이다.
    • NL-032에서 professor forcing으로 모델을 학습할 때, teacher forcing부분과 non-teacher forcing 부분이 있는데 non-teacher에서 softmax값을 다음의 입력으로 넣는 것과 비슷한 것으로 생각하면 된다.
    • Inference는 hard-sampling을 하게 되는데, 학습 때 soft-sampling으로 하게 되면 training과 testing간의 간극이 생겨서 문제가 발생한다.
    • 또한 soft-sampling은 artifacts을 야기하는 경향이 있다고 한다.(?)
    • 이러한 문제는 vocab size가 커질수록 커진다.
    • 그래서 이 논문에서는 soft, hard 두 가지 방법으로 모델을 학습시켜본 것 같은데, Appendix C에서 이 두가지를 비교한다.
  • Scalability to multiple attributes
    • NL-032에서는 다양한 class 별로 discriminator가 필요하였다.
    • 여기서는 joint한 discriminator을(한 개만 사용하는 듯) 사용함으로써 data 효율성을 늘리고 다양한 속성을 다룰 수 있게 된다.

4. Experiments

  • Sentiment transfer은 많은 이전의 연구에서 진행되어왔기 때문에 여기도 처음에 sentiment control task에 접근하여 다른 연구들과 비굘르 해보았다.
  • Quantitative, qualitative와 사람의 평가로 비교를 함.
  • 또한 parallel data가 가능한 것을 이용하여 모델을 평가해봄.
  • 마지막으로 multiple attributes을 동시에 controlling 하는 것으로 확장시켜보았다.

4.1 Training and hyperparameters

  • Validation metric으로 model selection을 하게 된다.
  • 은 얼마나 모델이 content compatible sentence을 생성하는지를 나타낸다.
  • Attribute compatibility는 pre-trained attribute classifier을 통하여 측정이 된다.
  • Encoder: GRU, hidden state size 500
  • Attribute label: binary vector
  • Attribute embedding: attribute label의 linear projection
  • Decoder: 입력은 (ecoder의 결과 + attribute embedding) / GRU hidden state size 700
  • Discriminator: RNN hidden state sequence와 attribute vector을 입력으로 받음 / hidden state은 bi-directional RNN with hidden state size 500으로 encoding된 것
  • 은 {0, 0.1, 0.2, ..., 1.0}의 원소로 interpolation 확률이다.
  • lambda는 {0.5, 1.0, 1.5}의 원소로 adversarial loss의 가중치 파라미터이다.
  • Word embedding은 Glove embedding을 사용하였음.

4.2 Metrics

  • 이전의 연구는 생성된 문장이 conditioning labels에 얼마나 잘 match가 되는지에 중점을 두었고 input sentence의 content에 대해서는 평가를 안하였다.
    • 아예 안한 것 아님. 
    • 보통은 사람의 평가로 하거나, NL-033처럼 parallel data가 있는 부분에 대해서 새로운 평가 방법을 제안했음.
  • 대부분의 속성에 대해서는 parallel data가 없다.
  • 여기서는 ground truth가 없는 상황에서 objective metric을 새롭게 제안한다.
  • 이 metric은 완벽하진 않지만 다른 모델들과 다른 work들에 대한 consistent evaluation을 함으로써 모델끼리 비교가 가능하다.
  • Attribute asccuracy
    • NL-031처럼 사전 학습된 classifier로 성능평가를 한다.
    • Yelp와 IMDB 데이터로 CNN classifier을 학습시켰고 이 모델의 text 성능은 각 데이터셋에 95%, 90%의 성능을 가진다.
  • Content compatibility
    • Fu(NL-033)에서 content preservation metric을 제안한다. 이 방법은 word embedding에서 특징을 추출하고 cosine 유사도를 측정하는 것이다.
    • 하지만 이러한 방법은 쉽지 않다.
    • 따라서 우리는 간접적인 방법으로 접근하여 평가를 하는데 [26]의 방법으로부터 영감을 얻었다고 한다.
    • Non-parallel datasets, D_src, D_tgt가 있고 번역 모델인 M(src→tgt), M'(tgt→src)가 있을 때, mteric은 다음과 같다.
    • M o M'(x)는 source 문장을 targe domain으로 갔다 다시 source로 오는 것을 말한다.
      • D_src와 D_tgt는 긍정과 부정을 나타내는 데이터 세트라고 가정하자.
      • 따라서 M과 M'는 각각 긍정과 부정이 condition으로 들어가서 부정과 긍정을 생성하는 모델이다.
  • Fluency
    • 생성된 문장의 PPL이 LM모델의 fluency로 평가한다.
    • SOTA LM은 Billion words benchmark dataset으로 학습되어 평가에 사용되었다.

4.3 Sentiment Experiments

  • Data
    • Yelp 음식 리뷰 데이터세트를 필터링해서 사용하였다.
    • 영화 리뷰 데이터세트 IMDB 또한 사용하였다.
    • Shen(NL-032)의 filtering process을 사용하여서 training과 testing을 구성하였다.
      • Yelp: (학습) 447k, (평가) 128k
      • IMDB: (학습) 300k, (평가) 36k
    • Ctrl-gen, Hu(NL-031)과 Shen(NL-032)의 cross-align 와 비교를 하였다.
    • 우리는 pre-trained model로 Hu(NL-031)모델을 사용하였다.
    • NL-033은 이 데이터로 실험을 안했기 때문에 비교를 못한듯하다.
  • Quantitative evaluation (양적 평가, 정량적 평가를 말하는 듯)
    • NL-031과 NL-032는 모두 soft-decoding 수행하였기 때문에 sampling process을 통한 BP가 가능했다.
      • generator 학습시에 soft embedding을 통한 generation을 한다는 것이다. 
      • 하지만 이 방식은 생성하는데 artifacts가 있었고 이는 fluency score을 낮추게 되었다.
    • Fluency score은 generator의 PPL을 평가하는 것은 아니다. 그러나 PPL은 generated sentence을 pre-trained LM으로 측정을 하는 것이다.
      • generator의 score 자체를 평가하는 것은 아니지만, generator로 생성된 문장을 가지고 한다.?? 먼 솨리..
    • 절대적인 수가 generation quality을 의미하지는 않지만 비교를 하기위한 적절한 척도이다.
    • BLEU-1와 BLEU-4을 content metric의 score으로 사용하였다.
      • Back-translation은 데이터 증강에 효과적이다.
    • Interpolation loss는 noisy 특성을 고려한 feature space에서의 데이터 증강 관점으로 생각할 수 있다.
      • 그리고 이것은 content preservation을 장려한다.
      • 앞에서 이상하다고 생각하는 부분을 데이터 증강의 효과로 보는 것 같음.
    • Cross-align model은 속성의 정확도는 강력하지만, 문법적인 문장을 생성하는데 어려움이 있다.
  • Qualitative evaluation (품질 평가, 정성적 평가를 말하는 듯)
    • Ctrl-gen은 content가 호환 가능한 문장들을 생성한다.
    • Cross-align은 관련이 있는 문장을 생성하지만, 문법적으로 틀린 부분이 있다.
    • 우리는 제대로 생성하며 supplemenatary에 더 많은 예시들이 있다.
  • Human evaluation
    • 우리는 3가지 관점에 대해 평가를 요청한다.
      • Attribute compatibility
      • Content preservation
      • Fluecny
    • Test sample 100개를 골라서 이에 반대되는 sentiment를 가지고 같은 content를 가지는 문장을 생성한다.
    • Attribute compatibility
      • Labeled generated sentence vs actual conditioning sentiment label
      • 즉 실제 입력 문장의 label과 이것으로 문장을 생성한다.
      • 생성 문장에 대해 사람이 판단한 label과 실제 입력 문장의 label과 반대 값을 가지는지 비교를 함.
    • Content assesment
      • 원래 문장과 생성된 문장이 desired property을 가지는지 요청함
      • desired property란 같은 의미의 content을 가지고 반대의 sentiment를 가지는지에 대한 것임
    • Fluency/grammaticality ratings
      • Appendix B에 평가 척도가 자세히 있음.
      • 5-point Likert scale을 얻을 수 있다고 함.
    • 이러한 ratings은 객관적인 평가이고 이것에 대한 결과는 table 2이다.

4.4 Monolingual Translation

  • 이젠 (aligned) paired data에 대해 실험을 해본다.
  • Task는 partigular writing style을 바꾸는 것이다.
  • Monolingual translation problem 이라고도 부른다.
  • 즉 old English ↔ modern English을 변환하는 것이다.
  • 데이터는 Shakespeare plays crawled from web 데이터를 사용했다고 한다.
    • Training: 17k
    • Validation: 2k
    • Testing: 1k
    • Unpaired: 80k
  • Base model로는 seq2seq을 사용하였다. 이는 parallel data으로 학습하는 방식이다. 
  • Seq2seq을 학습시킬 때, 두 가지 버전을 제시한다.
    • Simple seq2seq (old English → modern English)
    • Bi-direction seq2seq으로 학습하는데 이 때 decoder에 target sentence의 정보를 넣어준다. (attribute label 같은 것)
  • 여기서 실험한 모델도 2가지가 있다.
    • Unsupervised model
      • 논문에서 소개한 unparallel data로 학습한 것
    • Semi-supervised model
      • seq2seq로 pre-train하고 unparied data로 fine-tunning한 것
  • Table3의 결과를 보면 unsupervised 자체만으로도 supervised 방식보다 살짝만 안좋은 것을 알 수 있다.
  • Semi-supervised setting에서 unlabelled data로 성능 향상이 있음을 알 수가 있다.

4.5 Ablative study

  • 중요한 부분은 int와 bt와 같은 부분이 중요한 것 같다.
    • int/bt loss 모두 content representation이 잘 되도록 학습하는 loss라고 볼 수 있다.
    • 그에 반해 ae loss만으로는 content preservation가 잘 안됨을 알 수가 있다.
    • adv loss는 속성을 보다 더 잘 가지도록 도와주는 역할 정도로 볼 수 있다.

4.6 Simultaneous control of multiple attributes

  • 여러 속성을 control하는 실험을 하였다.
  • 여기서 동시에 다루는 속성은 시제(tense) / 수동능동(voice) / 사실,가정 (mood) / 부정 (negation)
    • Table 5 결과 참고
  • 각각 속성에 대해서 판별기 성능은 mood, tense, voice, negation 순서대로 98%, 98%, 90%, 97%이 나왔다.
  • Voice 속성은 단어 순서가 바뀌어야 하는 전체적인 문장 구조가 변화하는 경우라 성능이 낮은 면이 있고 model이 왜곡하는 경향이 있는 문제점을 발견했다.

5. Conclusion

  • Content preservation / attribute compatibility / generating realistic한 문장을 생성하도록 모델이 고려되었다.
    • reconstruction과 adversarial loss을 이용하였다.
  • 이 논문의 모델은 다양한 실험과 metric을 통하여 효과적임을 보였다.
  • 또한 이 모델은 다중 속성을 고려한 설계라는 것을 강조한다.
Reference

댓글