每周论文33

本周论文:

  1. Toward Controlled Generation of Text
  2. Style Transfer in Text: Exploration and Evaluation
  3. Unsupervised Text Style Transfer using Language Models as Discriminators
  4. Unpaired Sentiment-to-Sentiment Translation: A Cycled Reinforcement Learning Approach
  5. Delete, Retrieve, Generate: A Simple Approach to Sentiment and Style Transfer
  6. Progressive Self-Supervised Attention Learning for Aspect-Level Sentiment Analysis
  7. SHAPED: Shared-Private Encoder-Decoder for Text Style Adaptation
  8. Style Transfer Through Back-Translation
  9. Fighting Offensive Language on Social Media with Unsupervised Text Style Transfer
  10. Disentangled Representation Learning for Non-Parallel Text Style Transfer

[Toward Controlled Generation of Text]

VAE+GAN用以生成可控制文本。

为了生成可控制方向的文本,其思想是希望能够让模型学会生成disentangled latent representation,将内容和控制变量分离开,具体是通过GAN来实现的。

简单来说,给定$x$,要求encoder能够生成disentangled latent representation,也即控制变量$c$和内容$z$的分离。在给定特定的控制变量$c$,通过generator生成对应的$\hat{x}$,要求$\hat{x}$能够骗过discriminator,使得discriminator认为$\hat{x}$是属于给定的特定控制变量$c$;同时$\hat{x}$会重新输入到encoder中以期望能够拟合$z$,这样能够保证$z$与$c$的解耦。


[Style Transfer in Text: Exploration and Evaluation]

两个贡献:提出一种新的style transfer的模型;提出新的评价指标。

模型

本文提出两个模型, 一种是multi-decoder的,另一种是基于style-embedding的。encoder端都是一样,通过discriminator来获得style-independent content $c$。对于multi-decoder而言,不同style有不同的decoder;而在style-embedding中,则是通过在内容后面cat一个style的embedding作为输入传给decoder。

评价指标

在评价指标中,提出两个方面:Transfer Strength和content preservation。

Transfer Strength:指的是转换成功的能力,也即用一个分类器判断生成的句子和源句子是否是不同的style;

content preservation:计算两个句子的embedding然后算他们之间的cos距离。具体公式:

$\begin{aligned} v_{\min }[i] &=\min \left\{w_{1}[i], \ldots w_{n}[i]\right\} \\ v_{\operatorname{mean}}[i] &=\operatorname{mean}\left\{w_{1}[i], \ldots w_{n}[i]\right\} \\ v_{\max }[i] &=\max \left\{w_{1}[i], \ldots w_{n}[i]\right\} \\ v &=\left[v_{\min }, v_{\operatorname{mean}}, v_{\max }\right] \\ \operatorname{score} &=\frac{v_{s}^{\top} v_{t}}{\left|v_{s}\right| \cdot\left|v_{t}\right|} \\ \text {score}_{t o t a l} &=\sum_{i=1}^{M_{t e s t}} s c o r e_{i} \end{aligned}$


[Unsupervised Text Style Transfer using Language Models as Discriminators]

本文的亮点是利用语言模型来替代分类器作为discriminator。

为什么选择language model而不是分类器:
语言模型能够获得更直接的信号,是token-level而不是sentence-level的,能够针对词进行计算loss;同时还能够提供整体的score(ppl)。

模型整体做法:

loss由两部分组成:reconstruction loss和transferred loss。reconstruction loss就是在encode为一个style-independent representation后再给定同一个style的情况下,恢复回原先的x;第二是在给定不同style的情况下generator生成的$\tilde{x}$的loss。

transferred loss具体做法:

第一,在这里使用continuous approximation,也即使用的是概率分布而不是one-hot作为下一次的输入,具体来说是gumbel softmax;第二,该分布不仅传入到generator作为下一次的预测,同时还传入到语言模型,生成的概率分布与generator的概率计算cross entropy作为loss。

实验的一些小trick:language model更倾向于短句子,因此将loss按照长度归一化,同时固定$\tilde{x}$与x的长度一致。

总结:行文非常流畅,而且也有亮点,确实用language model更自然。


[Unpaired Sentiment-to-Sentiment Translation: A Cycled Reinforcement Learning Approach]

通过两个模块neutralization和emotionalization生成不同情感极性的句子,前者将句子映射成没有情感的中性句子,后者将中性句子映射成不同情感极性的句子。同时通过RL的reward对整个模型进行训练。

第一,neutralization模块通过一个分类器的attention weight判断哪些词是有情感极性的,然后删掉;
第二,emotionalization模块将删掉词的句子过一个双向的LSTM,然后获得一个表示整个句子的表示,输入到decoder中,其中分别有生成正向情感和负向情感的decoder。
在训练过程中,两个模块通过cycled RL训练。其中reward有两个,一个是生成的句子是否与所特定的情感相同,这通过一个预训练的分类器判断,第二则是通过BLEU评判内容保留的情况。

细节:
①具体来说,neutralization模块的做法是先预训练一个分类器,然后一个句子过一个单向的LSTM,所有hidden state与最后一个hidden state(认为是保留了句子的所有信息)计算attention weight,大于平均值的attention所对应的词就被认为是情感极性的词。
②neutralization模块和emotionalization模块都提前与训练好了。

最终的算法:


[Delete, Retrieve, Generate: A Simple Approach to Sentiment and Style Transfer]

style transfer相关。三步走:删除关键词;抽取对立style句子;以及生成新句子。大致思路是先抽取极性词,然后通过替换或生成的方式得到新的句子。

Methods

Delete

首先删除:识别出输入中与style相关的词,做法是相对频率:

也即如果一个词在该style的频率对比在另一个style的数据的频率高于一个阈值则认为是与style相关的。

Retrieve

记$a\left(x, v^{\mathrm{src}}\right)$为删除掉的词的集合,也即attribute markers。将这些词删掉后的句子为$c\left(x, v^{\mathrm{src}}\right)$。

利用$c\left(x, v^{\mathrm{src}}\right)$在target style的数据集上找类似的句子作为参考,也即:

$d$也即计算距离的函数。

Generate

本文提出四种方法

①RETRIEVE ONLY:直接把前文抽取的参考句子当做输出。

②TEMPLATE BASED:直接拿参考的句子找到他的attribute marker直接填到对应空格。

③DELETE ONLY:将句子过RNN,获得一个单一的句子向量,设置可学习的style embedding,将目标style的embedding cat到该句子向量中,然后输入到另一个RNN中生成目标句子。

④DELETE AND RETRIEVE:类似上面的,但是是利用参考句子的attribute markers过一个RNN提取一个向量,cat到源句子的句子向量,输入到另一个RNN中生成目标句子。相比上面的更有指向性。

其他细节:
在训练过程中,是利用reconstruction来做的。


[Progressive Self-Supervised Attention Learning for Aspect-Level Sentiment Analysis]

Motivation:模型常常能够识别出频率高的情感极性词,而对频率低的情感极性词则是underfit的。这里通过循环mask掉极性的词,使得模型能够训练到频率低的极性词。具体做法是通过attention的监督信号。

具体做法:通过不断mask attention weight最大的词,观察分类是否出错。如果出错,则说明该词是misleading,模型应该减小该词的weight;如果分类正确,说明该词应该分配大的weight,记为active的词。通过提取active 和misleading的词,并且在训练过程中给予监督信号/正则化(attention weight的放大或缩小),这样能够让模型挖掘出频率较低的词的情感极性而不是overfit到常用词的极性。


[SHAPED: Shared-Private Encoder-Decoder for Text Style Adaptation]

采用了shard-private的思想。share encoder编码与style无关的特性;private则编码style相关的特性。


[Style Transfer Through Back-Translation]

通过back translation以去除style-specific的信息。基于假设:通过back translation所获得latent representation有更少的style-specific信息。

有两个loss:一个是reconstruction的loss,另一个则是discriminator的loss。这里有两个decoder。


[Fighting Offensive Language on Social Media with Unsupervised Text Style Transfer]

style transfer相关。

loss:一个reconstruction loss,也即encoder的style与decoder的style一致;如果不一致,则再将该句子重新传回到encoder decoder,并提供原来的style并重新生成回去。然后就是discriminator的loss了。

感觉其实没啥创新,基本上都是别人做过的。唯一的贡献就是提了数据集吧。


[Disentangled Representation Learning for Non-Parallel Text Style Transfer]

style transfer相关。从更好分离style和content的角度出发设计了几个loss。这篇挺有启发性的。

其做法是人工将latent representation分成两块,也即不同的向量。在inference时,直接将style对应的向量替换成另一个style的向量就能做到风格转换。

论文提出了几个loss:

①autoencoding loss,也即reconstruction的loss,一个encoder生成latent representation,然后decoder利用该latent representation重新恢复原来的句子。

②Style-Oriented Losses:保证style space有style信息而content space没有style的信息。

③Content-Oriented Losses:保证content space有content信息而style space没有content的信息。

Style-Oriented Losses

Multi-Task Loss for Style

记$\boldsymbol{s}$为style的representation;$\boldsymbol{c}$代表content的representation。

$\boldsymbol{y}_{s}=\operatorname{softmax}\left(W_{\operatorname{mul}(\mathrm{s})} \boldsymbol{s}+\boldsymbol{b}_{\mathrm{mul}(\mathrm{s})}\right)$

$J_{\mathrm{mul(s)}}\left(\boldsymbol{\theta}_{\mathrm{E}} ; \boldsymbol{\theta}_{\mathrm{mul}(\mathrm{s})}\right)=-\sum_{l \in \text { labels }} t_{s}(l) \log y_{s}(l)$

也即让分类器能够通过$\mathrm{s}$识别出该latent representation的style。

Adversarial Loss for Style

上述loss只能保证style space有style的信息,不能保证content没有style信息。

因此:

$\boldsymbol{y}_{s}=\operatorname{softmax}\left(W_{\mathrm{dis}(\mathrm{s})} \boldsymbol{c}+\boldsymbol{b}_{\mathrm{dis}(\mathrm{s})}\right)$

$J_{\mathrm{dis}(\mathrm{s})}\left(\boldsymbol{\theta}_{\mathrm{dis}(\mathrm{s})}\right)=-\sum_{l \in \mathrm{labels}} t_{c}(l) \log y_{s}(l)$

为了能够让梯度传到到autoencoder,则autoencoder最大化:

当预测的标签$\boldsymbol{y}_{s}$是uniform的时候,目标最大,也即希望content中关于style的内容尽量少,使得discriminator无法通过$\boldsymbol{c}$识别出句子的style。

Content-Oriented Losses

该loss希望content的内容不会渗透到style space中。做法是告诉模型,应如何正确编码content,也即要告诉模型,content到底指的是什么。

本文用了BoW的feature作为引导模型encode的辅助。
BoW:对于一个句子有N个词的,则词w*的BoW概率为$t_{c}\left(w_{}\right)=\frac{\sum_{i=1}^{N} \mathbb{I}\left\{w_{i}=w_{}\right\}}{N}$。注意这里只考虑content word,也即去掉了停用词和情感词(引入了外部词典)。

因此拟合该encoding:

$\boldsymbol{y}_{c}=\operatorname{softmax}\left(W_{\mathrm{mul}(\mathrm{c})} \boldsymbol{c}+\boldsymbol{b}_{\mathrm{mulc}}\right)$

$J_{\mathrm{mul(c)}}\left(\boldsymbol{\theta}_{\mathrm{E}} ; \boldsymbol{\theta}_{\mathrm{mul}(\mathrm{c})}\right)=-\sum_{w \in \text { vocab }} t_{c}(w) \log y_{c}(w)$

同样,希望style space没有这样的信息:

$\begin{aligned} \boldsymbol{y}_{c}=& \operatorname{softmax}\left(W_{\mathrm{dis}(\mathrm{c})}^{\top} \boldsymbol{s}+\boldsymbol{b}_{\mathrm{dis}(\mathrm{c})}\right) \\ J_{\mathrm{dis}(\mathrm{c})}\left(\boldsymbol{\theta}_{\mathrm{dis}(\mathrm{c})}\right) &=-\sum_{w \in \text { vocab }} t_{c}(w) \log y_{c}(w) \\ J_{\mathrm{adv}(\mathrm{c})}\left(\boldsymbol{\theta}_{\mathrm{E}}\right) &=\mathcal{H}\left(\boldsymbol{y}_{c} | \boldsymbol{s} ; \boldsymbol{\theta}_{\mathrm{dis}(\mathrm{c})}\right) \end{aligned}$

其他细节

①当inference时,我们就可以直接将style的部分替换成另一个style的latent representation,其中另一个style的latent representation是这样取得的:

也即将训练集的所有目标style的s做一个平均。

②在实现中,是将hidden state分别过两个全连接以获得这两个latent representation,比如hidden state为256维,过两个全连接获得s为8维,content为128维。然后在decode的时候将这两个表示拼起来$\boldsymbol{h}=[\boldsymbol{s}, \boldsymbol{c}]$传入到decoder。

③通过降维可以看到确实分离得不错:


[本周论文小结]

本周看的基本上是style transfer的论文,大概算是入门了。有几篇比较亮眼的外,其他的似乎novelty都不是很好。生病了导致进度有些慢,希望下周能基本上看完style transfer经典的论文。