NL-035, Multiple-Attribute Text Style Transfer (2019-ICLR)
0. Abstract
- (기존의 방법들은) Style transfer은 latent representation을 학습하는 아이디어로부터 시작하였다. 이 때, latent representation은 attribute와 independent해야 한다.
- 이 논문은 꼭 이런 제약이 필요가 없다는 것을 보여준다.
- 새로운 모델을 제안하는데, back-translation을 기반으로 하는 간단한 방법을 사용한다.
- 이 모델은 multiple 속성들을 (gender, sentiment, product type, etc) 제어할 수 있다.
- 실험에서는 fully entangled model이 (다양한 속성 이용하는 모델?) 더 좋은 생성 문장을 만들어 냄을 보여준다.
- 심지어 새롭고 더 많은 challenging benchmark에서 비교를 한다.
1. Introduction
- Unsupervised 학습 중 하나의 목적은 데이터의 representation을 배워서 latent control해서 변화를 하게끔 하는 것이다.
- 예를 들어서 pose, viewpoint of objects in images, writer style, sentiment of a product review 등이 있을 수 있다.
- Conditioned generative modeling에서 latent factor은 (속성) 주어지거나 data 샘플링 분포를 통해 유추할 수 있다.
- 조건부 생성 모델은 input과 desried attribute 모두 조건을 가지고 있어야 한다.
- 예) 긍정문장에서 부정문장으로 변환한다 이런 것
- 생성은 기존 문장의 특성을 최대한 담고 있어야 한다.
- 이것이 Unsupervised인 이유는 non-parallel data 이기 때문임.
- 기존의 방법 Hu(NL-031), Fu(NL-033), Shen(NL-032)은 학습된 representation은 속성과 무관한 정보를 담고 있는 content이다.
- 입력에 대해서 content인 latent representation을 뽑아내고 desired attribute을 조건으로 주어서 출력을 생성하는 방식이다.
- Disentanglement은 latent representation에서부터 attribute 값을 알아낼 수 없게 만드는 것을 목표로 adversarial term을 이용하여 학습을 진행한다.
- 이 논문에서는 3가지 축에서 style transfer을 연구하였다.
- Style transfer을 하는데 중요한 것은 무엇일까?
- 정말로 disentanglement가 중요할까?
- 실제로 adversarial loss가 중요할까?
- Sec 3.1에서 경험적으로 disentanglement가 필수가 아니라는 것을 보인다.
- 즉 content와 attribute을 구분할 필요가 없다라는 것인데... 이전의 방법들이 맞다는 것이 아니라는 건데.. 충격쓰..
- 또한 adversarial loss을 사용한 disentangle이 실제로 representation을 배우는 것이 아님을 보인다.
- Adversarial loss말고 사용하는 것은 2번에서..
- 모델의 adversarial term을 back-translation term으로 바꾼다.
- 이 objective는 모델을 pseudo-supervised setting으로 바꾼다.
- Unsupervised machine translation에서 쓰는 방법과 비슷하다고 한다.
- NL-034에서도 back-translation이 나오는데 그것도 이 방법과 같은 것을 말하는 것인 듯
- 그러나 두 가지 다른 점이 있다.
- pooling operator을 사용하여 style transfer와 content preservation의 trade-off을 컨트롤한다.
- 여기서도 style과 content의 개념을 가지고 가는 거 같기는 한데, 따로 disentanglement을 안한다고 하니 어떻게 구분을 지을까?
- 이 모델은 multiple 속성을 다룰 수 있다.
- Style transfer benchmark로 사용하던 것은 사용자 review을 base로 했었는데 심각한 한계가 있다.
- 왜냐하면 이전 벤치마크는 단일 속성을 (감정) 고려하였기 때문이다.
- 여기서 제안한 벤치마크는 review 데이터세트들을 기반으로 하여 다양한 속성들의 full reivews들이다.
- 여기서 제안하는 contribution은 다음과 같이 3가지가 있다.
- 다양한 실험을 통한 style transfer의 깊은 이해
- online back-translation 기술과 함께 denoising auto-encoding loss을 기반으로하는 간단한 학습 방법 + pooling operator와 multiple attribute을 다룰 수 있는 novel 네트워크을 제안한다.
- 새롭고 좀 더 어렵고 현실적인 벤치마크을 제안한다.
- 평가 metric은 새로운 방법과 사람 평가 둘 다 진행하였다.
2. Related Work
- 초기에는 supervised data로 시작을 했다. 이 때는 (input, transformation, output) 이런 세팅이 필요했다. (즉 parallel setting)
- 요즘에는 non-parallel setting으로 문제를 해결하려고 한다.
- 주어진 두 개의 다른 도메인 X, Y가 있다.
- X는 생성 이미지 도메인이고(paintings) Y는 진짜 이미지 도메인이다.
- F: X→Y, G: Y→X인 F와 G를 배우는 것이다.
- 예를 들어 cycle 제약 loss을 사용한다는 것은 F(G(y))=y가 되고 G(F(x))=x가 되도록 하는 것이다.
- 이 loss을 작게 한다는 것은 현실적인 이미지를 생성하도록 한다는 것임.
- Fader Network에서는 discriminator가 이미지의 autoencoder의 latent representation에 가해져서 특별한 속성의 정보를 제거하는데 사용된다.
- 속성 값은 대신에 학습시 decoder에 주어주는 식이다. (one-hot이거나 attribute vector 같은 것)
- Inference시에는 입력 이미지와 다양한 attribute values을 뽑아서 넣게 된다.
- Fader networks: Manipulating images by sliding attributes가 이렇게 했나봄.
- 위 논문은 이미지에 관련된 것이고, text에서 NL-033또한 이와 비슷하게 latent represenation에 discriminator을 적용하여 속성과 상관 없는 것을 표현하도록 학습하는 식이다.
- Parallel인 다른 스타일을 가지는 데이터을 수집하는 것은 어렵다.
- Carlson(2017)이 성경을 33개의 다른 영어 스타일로 작성된 데이터를 수집하였음. (성경의 parallel 데이터 세트)
- Li(2018)이 1000개의 Yelp 리뷰(음식점 리뷰 사이트) 데이터를 크라우드소스로 모은 작은 parallel 데이터세트를 발표했다.
- 최근 연구들의 방법은 disentangling sentence representation을 latent space에서 하는 것이다.
- 이러한 방법론은 adversarial approach로 입력 문장의 style과 상관없는 content representation을 만들고 decoder에 attribute label을 넣어서 다른 스타일의 문장을 생성하는 식이다.
- 대표 연구로는 Fu(NL-033), Hu(NL-031), Shen(NL-032)은 포스팅했었고 Zhang(2018a), Xu(2018), John(2018), Zhao(2018) 등이 있다고 한다.
- 하지만 이렇게 discrete하게 문장 생성을 하는 것은 cycle consistency or adversarial training에 적용하기 어렵다고 한다.
- (물론 이전의 연구들은 적용했지만) 이렇게 하는 기술은 REINFORCEMENT 학습을 사용하거나, output softmax + tunable temperature을 사용하는 등 학습이 불안정하거나 매우 느리다고 하다.
- 이 논문과 연관성이 가장 깊은 것은 Zhang(2018b)이라고 한다.
- 하지만 zhang 논문은 phase-table별 bootstrap을 iterative하게 back-translation을 해야한다.
- 즉 이 논문은 pre-train 없이, end-to-end 학습인데 zhang은 아닌가 봄.
3. Controllable Text Rewriting
- 이 논문의 접근법을 설명하기 전에 disentanglement의 진행과정을 설명하겠다.
- Training set:
로 n개의 문장
이 있고 이에 따는 attribute value
가 있다.
- 우리의 task는 model
을 하는 것이다.
- x가 입력 문장이고 y가 이에 따른 attribute values이다.
- 그러면 (x,y~)의 임의의 쌍에 대해서 x~을 생성하는 것이다.
- 이때 새로 생성된 x~은 최대한 x의 content 정보를 담고 있어야 한다.
- 식으로 표현하면
- x가 인코더에 들어가서 z=e(x)으로 인코딩을 한다.
- 그리고 디코더에 (z,y~)가 들어가서 x~=d(z,y~)가 생성이 되는 것이다.
- 이 때 e와 d를 학습하는 것이다.
3.1 Are Adversarial Models Really Doing Disentanglement?
- 이 부분이 다른 논문들과 다른 특별한 실험이었던 것 같다. 오히려 왜 이전 논문은 이러한 실험을 안했을까? 라는 생각이 듬
- 기존의 방법은 latent representation z을 학습한다는 것에 기초하고 있고 이는 y로부터 disentangle을 한다는 것이다.
- (이전 포스팅 처럼 z를 context로 말하겠음) 만약 제대로 context와 style을 분리했다면, z에서 y를 classifier을 하는 것은 불가능 할 것이다.
- 만약 어떠한 classifier가 z에서 y를 제대로 예측을 못한다면 두 가지를 생각해 볼 수 있다.
- 정말로 y와 연관이 없는 context latent representation z가 맞거나
- classifier가 poorly trained 되었다고 볼 수 있다.
- 이전의 논문에서는 adversarial로 학습한 classifier로 측정했기 때문에 1번이 맞았다고 생각했겠지만 이 논문은 2번에 대해서도 실험을 한 것이다.
- Table2는 Fu(NL-033)으로 학습된 것으로 z를 뽑아서 y를 예측하는 classifier로 실험한 결과이다.
- Table2의 설명 및 결과를 보면 latent representation z가 정말 context가 아님을 알 수가 있다.
- Adversarial로 학습한 discriminator은 잘 구별을 못하는 것은 맞지만, 새롭게 학습한 classifier은 제대로 구별을 하기 때문이다.
- 그래서 실제로 adversarial classifier을 통하여 disentanglement가 성공하지 못했다고 볼 수 있다.
- 이것은 disentanglement가 control text rewriting에 필수적인 요소가 아님을 알 수가 있다.
- 그러나 이러한 방법은 잘 작동하며 확장되고 있으며 더 간단하고 강력한 학습 모델을 여는데에 도움이 될 것이다.
3.2 Our Approach
- Controlled text generation에는 3가지가 중요하다.
- Fluent (유창성, 문법적인 것 같은 거)
- Specified attribute values (원하는 속성의 문장 생성)
- Preserve the rest of the content (입력 문장의 content을 잘 보존 하는지)
- Fu(NL-033)은 DAE(Denoising Auto Encoder) 방법으로 fluent와 reconstruct the input을 할 수 있도록 generator을 할 수있는 보편적인 방법이다. (즉 content와 attribute 모두)
- 그러나 DAE는 style을 변경시키는 것을 학습하는게 좀 약하다.
- 왜냐하면 decoder을 학습할 때, 외부에서 attribute 정보를 강제로 제공하는 방식이기 때문이다.
- Fu방법을 생각해보면, 학습 때 입력 문장 x에 대해 E(x)을 통해 z을 뽑아내고 그에 해당하는 속성 벡터를 c를 concat하여 다시 x를 재구성하도록 학습한다.
- Inference시에는 입력 문장을 인코딩한 후, 원하는 속성 벡터을 concat하여 decoder에 넣어서 재구성하도록 한다.
- 즉 학습 시에 이미 입력 문장이 어떠한 속성을 가지고 있는 지를 알고 있기 때문에 이를 외부 정보로 넣어주는 형식이다.
- 이렇게 하면, 입력 문장의 속성을 알고 있어야만 하고(큰 문제는 되지 않는 거 같음) 이를 강제로 제공하기 때문에 style 변경하는 것의 효과가 약하다는 것 같음!
- 즉 만약 속성을 Fu와 같이 외부 정보로 주지 않고 어떠한 classifier을 통한 값을 주게 된다면? (NL-031와 같은 방법에서는 이런 식으로 했음)
- Since the noise applied to the encoder input x may corrupt words conveying the values of the input attribute y, the decoder has to learn to use the additional attribute input values in order to perform a better reconstruction.
- 이런 구절이 있는데 이는 입력 문장에 noise가 적용되면 입력 문장의 속성이 망가질 수 있다.
- 그러면 decoder는 추가적인 속성 입렵 값을 사용해야만 reconstruction하는 것을 좀 더 좋게 배울 것이다.
- 예를 들어)
- x:"그 음식점은 다시 가도 좋을 것 같다" 라는 문장이 있고 이에 대한 속성은 c:positive일 것이다.
- 하지만 x~:"그 음식점은 다시 가도 좋을 까?"라고 noise가 끼었다고 하면 속성이 c~:negative로 될 수도 있을 것이다.
- 그러면 decoder에 x~와 c~(negative)가 들어가게 되는 것인데 이러면 x를 재구성할 수가 없다는 것이다.
- 즉 decoder에 x~와 c~(negative)와 추가적인 무언가가 들어가야 x를 재구성할 수 있다는 것이다.
- 즉 다시 말해, 속성을 외부 정보로 주면 input이 noise가 껴도 속성을 그냥 제대로 줄 수가 있지만, 이러면 style을 변환하는데 약한 방법이다.
- 하지만 이렇게 한 이유가 어떠한 discriminator(classifier)을 통해 준다면 noise에 약한 모습을 보이기 때문에 다른 추가 정보를 넣어주어야 하기 때문이다.
- 실제로 이 논문에서 noise function을 사용하였다.
- Sec 3.1에서 언급한 것처럼 disentanglement는 필수적인 것이 아니고 쉽게 달성할 수도 없다.
- 따라서 adversarial loss을 추가하여 disentanglement을 이루려고 하지 않는다.
- 대신 더 자연스러운 제약을 통해 모델이 task를 수행할 수 있도록 한다. 그것으로 externally provided attributes을 고려한다.(위에서 말한 외부에서 주입하는 속성 정보 term)
- Back-translation 과정 - (1)
- Back-translation 과정 - (2)
- 즉 Back-translation은 x에서
을 갔다가 x로 다시 돌아오게끔 하는 것이다.
- 이렇게 하면, DAE가 초기에 잘 학습이 안 되고
가 x의 content을 잃어버릴 때, decoder에 사용되는 쓸모있는 정보는 attribute 뿐이다.
- 즉 초반에는 인코더가 제대로되지 않았기 때문에 z가 큰 의미가 없을 것이고 디코더의 입력에는 y만이 의미가 있다는 것
- 이것은 디코더가 attribute을 잘 활용할 수 있도록 해준다.
- 학습이 점점 진행되면서, 나중에는 DAE가 좋아진다면, BT는 sequence-to-sequence로 원하는 task를 잘 학습할 것이다.
- 전체적인 loss function은 다음으로 이것을 최소화하면 된다.
는 디코더에서 생성된 문장 x의 probability distribution
- e(
)는
가 주어질 때의 encoding 값 (
라고 생각하면 된다.)
- d(e(x),
)는 입력 문장 x와 속성
세트에서의 임의로 샘플 된 것이 주어질 때 생성되는 variation 문장
- 앞 쪽의 term은 autoencoder의 형식이지만, noise가 낀 입력
을 사용한다.
- 뒷 쪽의 term은 back-translation 형식 loss이다.
- 각 time step에서 temperature T를 사용함으로써 단어들을 multinomial distribution에서 샘플링하여 back-translation으로 생성한다. (?)
3.3 Implementation
- 지금 까지의 모델은 Lample(2018) 방법이랑 작동 방식이 똑같다고 한다.
- 대신 latent representation에 desired attribute을 overwrite을 하는 것이라고 한다.
- 즉 latent representation을 style과 분리되는 것으로 따로 제약을 걸지 않은 것이기 때문
- 하지만 이런 시스템에서 attribute을 single binary로 swapping을 하는 것은 content preservation와 change of attribute을 trade-off을 control하기에는 충분하지 않다고 한다.
- 따라서 다음과 같은 방법을 추가함.
- Attribute conditioning
- Multiple attribute을 다루기 위하여 각 속성을 분리하여 embedding을 한다.
- 그리고 각 속성에 대한 embedding을 averaged embedding을 하여 start-of-sequence symbol로 사용하였다.
- 즉 감정과 시제를 동시에 다룬다고 할 때, 긍정적인 미래라고 하면 positive-embedding + future-embedding의 속성 값을 평균낸다는 것인 듯
- Michel & Neubig (2018)와 비슷한 방법으로 시도했을 떄는 Table 14처럼 잘 안되었다고 함.
- Latent Representation pooling
- 일반적으로 attention이라는 개념없이 하나의 latent vector representation을 사용하는 모델을 돌리면, literal을 잘 잃어버리고 (content를 잃어버리고) attribute을 원하는 것으로 잘 생성하는 경향이 있다.
- 따라서 여기서는 temporal max-pooling이라는 것을 encoder의 top layer에 추가하였다. (with non-overlapping windows of width w)
- w=1으로 세팅한다는 것은 model에 attention을 가한다는 것이고
- w을 입력 문장 길이만큼 세팅하는 것은 attention 없이 sequence-to-sequence을 하겠다는 것이다.
- 중간 길이의 w로 세팅한다는 것은 preserving information을 하고 디코더가 문장 생성시 입력 문장의 단어를 복사하는 경향을 막겠다는 것이다.
- 예를 들어)
- 코드를 봐야 알겠지만, 아마도 seq2seq에서 LSTM이라 할 때, encoder의 output vector v1, v2, ..., vn가 있다고 하자. (문장의 길이: n)
- w=3을 쓰는 것은, (v1,v2,v3)을 각 position에 해당하게 max-pooling을 해서 v11을 생성하겠다는 것이다.
- 이것을 decoder의 입력으로 넣겠다는 거 같음
- 원래 보통 seq2seq은 w=1인 것이고 decoder에 v1, v2, ..., vn이 순서대로 들어가는 식이다.
- 근데 원래 알려진 attention 메커니즘은 attention weight을 구하는 식이 있는데 그 방법은 안쓴 듯. why?
- λ와 T와 w가 Hyperparameter이다.
- λ가 작으면 autoencoding의 성향이 짙어지는 식. 즉 attribute는 잘 안바뀌지만 content preservation을 잘함.
- T는 unbiased generation을 위함이고 content preservation의 content preservation의 양을 컨트롤 하기 위함.
- w는 위에서 말한 거와 같이 얼마나 입력 문장을 attention할 것이냐! 이것도 즉 content preservation 와 attribute 변환의 trade-off 정도
- SGD을 이용하여 학습
4. Experiments
4.1 Datasets
- Yelp 레스토랑과 Amazon 제품에 대한 review을 다음과 같이 3가지 방법으로 재구성하여 좀 더 챌린지하고 현실적으로 만듬.
- 이전의 방법들은 문장에 대한 sentiment가 같으면 다 동일한 정도로 보았다.
- 여기서는 문장의 sentiment, gender을 합께 사용하여 좀 더 신뢰성있게 하였음.
- 예를 들면, 음식에 대해 "여성이 맛있다"와 같이 하면 좀 더 신뢰성이 있다고 생각
- 이전의 방법들은 15단어 이상을 가지는 문장을 버렸음. 그리고 가장 자주 발생하는 10k 단어들로 구성되는 문장들만 고려하였음.
- 여기서는 최대 100개의 단어로 구성되는 review까지 사용하였음.
- 또한 60k BPE codes을 사용하여 unknown words의 존재를 제거하였음.
- 마지막으로 restaurant와 product 카테고리에 관한 meta-data를 수집하여 두 가지 컨트롤 가능한 factor으로 사용함.
- review의 성별 (1번 방법하고 다른 건가?)
- 제품이나 음식 리뷰에 관한 category
- 즉, 이렇게 데이터를 세분화 함으로써 여러 속성을 만든 거 같음.
- 속성이 긍부정뿐 아니라, 성별, 카테고리와 같은 것들로 생겨남.
- Yelp Reviews
- Amazon Reviews
- Public social modeia content
- (생략) 위의 3개의 데이터 세트 설명에 대해서는 논문을 참조..
4.2 Evaluation
- Automatic evaluation은 현재 언어 생성에서는 open research 문제이다. (아직까지도 연구되고 있는 분야.. 개인적으로는 사람만이 정답인듯 한데..)
- 여기서는 3가지에 대해 시스템을 평가한다.
- produce sentences that conform to the set of pre-specified attribute(s)
- preserve the structure and content of the input
- generate fluent language
- 그래서 다음과 같이 3가지 다른 차원에서의 평가를 한다.
- Attribute control
- FastText 분류기 모델을 여기서의 데이터세트로 학습하여 속성을 예측하는 것을 통해 평가를 한다. (이전의 논문들처럼)
- Fluency
- perplexity assigned to generated text sequences by a pre-trained Kneser–Ney smooth 5-gram language model using KenLM (Heafield, 2011)
- PPL을 이용하는데 KenLM이라는 기존에 학습된 모델로 하겠다는 것임.
- 즉 생성 문장이 "그 음식점은 맛이 별로다" 라면 KenLM모델에서
- '그'가 들어올 때, '음식점은'에 해당하는 PPL
- '그', '음식점은'이 들어올 때, '맛이'에 해당하는 PPL
- '그', '음식점은', '맛이'이 들어올 때, '별로다'에 해당하는 PPL
- 이것으로 평가하겠다
- Content preservation
- N-gram 통계기반인 BLEU을 사용하는데, 입력 문장 vs 생성 문장 사이의 BLEU을 측정하고 이거를 여기서는 self-BLEU 라고 부른다.
- 만약 human reference(사람이 제시한 정답)이 있으면 이것과 생성 문장 사이의 BLEU를 측정한다.
- 여기서 말하는 BLEU-score은 human reference와의 생성문장 사이의 BLEU-score을 말하는 것이다.
- 하지만 self-BLEU score또한 측정을 해보았다.
- 사람의 평가로 다른 모델끼리의 비교를 진행함.
- Li(2018)와 비슷하게 함.
- Fluency에 대해 likert-sacle로 1~5점을 주라고 함.
- 속성을 사람에게 판단하도록 함.
- 다른 모델이 생성한 문장의 pair을 workers들에게 요청하여 어떤게 더 잘 생성되었는지 선택하라고 함.
- 이 때, no preference 옵션으로 equally good or 두 문장 모두 bad generation에 대한 것에 대한 옵션이다.
4.3 Model Selection
- Automatic evaluation은 약한 proxies metric일 뿐이다.
- 따라서 minimum threshold로 content preservation과 attribute control criteeria로 모델을 설정하는 것으로 사용한다.
- 몇 개의 모델이 특정 threshold을 넘기면 이 모델들을 validation set에 대해 사람 평가를 하게 하고 best model은 test set에 대해서 평가를 해서 설정을 한다.
4.4 Comparisons to Prior Work
- 학습할 때는, 동시에 여러 속성을 control하는 것을 하지만, test할 때는 한 개의 속성만 변경시키는 식으로 하였음.
- 이렇게 한 이유는 다른 모델들과 비교를 하기 위해서인 것 같음. (다른 모델들은 하나의 속성만 변경시키는 식이기 때문에)
4.6 Ablation Study
- 1) pooling,
- 2) temperature based multinomial sampling when back-translating,
- 3) attention,
- 4) back-translation,
- 5) the use of domain adversarial training
- 6) attention and back-translation in conjunction.
- 위와 같은 요소들에 대해 실험을 했고 adversarial training은 추가해서 실험해본 식이다.
- The absence of pooling or softmax temperature when back-translating also has a small negative impact on performance, while the attention and back-translation have much bigger impacts.
- 즉 attention과 back-translation은 영향이 크다.
- 여기서 신기했던 것은 adversarial이 없는게 오히려 낫다.
- 즉 초반부터 얘기한 style과 content을 분리하려는 것은 별 의미가 없다라는 것
5. Conclusion
- 이 논문은 기존의 disentanglement 기반이 아닌 attribute을 주어서 re-writing 문장을 생성하는 식으로 하였다.
- 논문 모델은 음식점/제품 리뷰들의 현실적인 세팅으로 된 데이터세트에서 검증을 하였다.
- 또한 모델은 attribute control와 preserving the content 사이를 trade-off을 할 수가 있다.
Reference
댓글
댓글 쓰기