기본 콘텐츠로 건너뛰기
인공지능, AI, NLP, 논문 리뷰, Natural Language, Leetcode
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하다.
- 여기서 제시하는 속성들로는 다음과 같이 있다.
- Sentiment
- Language complexity
- Tense
- Voice
- Honorifics
- mood
- 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을 이용하는 것이다.
- 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 문장은 다음과 같이 표기한다.
\right&space;\}^{N}_{n=1})
- 여기서 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을 정의한다.
\odot&space;z_y)
- 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의 부분에 설정하였다.
- 대부분 앞의 포스팅들에서는 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)
- 각각 속성에 대해서 판별기 성능은 mood, tense, voice, negation 순서대로 98%, 98%, 90%, 97%이 나왔다.
- Voice 속성은 단어 순서가 바뀌어야 하는 전체적인 문장 구조가 변화하는 경우라 성능이 낮은 면이 있고 model이 왜곡하는 경향이 있는 문제점을 발견했다.
5. Conclusion
- Content preservation / attribute compatibility / generating realistic한 문장을 생성하도록 모델이 고려되었다.
- reconstruction과 adversarial loss을 이용하였다.
- 이 논문의 모델은 다양한 실험과 metric을 통하여 효과적임을 보였다.
- 또한 이 모델은 다중 속성을 고려한 설계라는 것을 강조한다.
Reference
댓글
댓글 쓰기