每周论文32

本周论文:

  1. Incremental Parsing with the Perceptron Algorithm
  2. Iterative Dual Domain Adaptation for Neural Machine Translation
  3. Classical Structured Prediction Losses for Sequence to Sequence Learning
  4. Learning as Search Optimization: Approximate Large Margin Methods for Structured Prediction
  5. Professor Forcing: A New Algorithm for Training Recurrent Networks
  6. Style Transformer: Unpaired Text Style Transfer without Disentangled Latent Representation
  7. Style Transfer from Non-Parallel Text by Cross-Alignment

[Incremental Parsing with the Perceptron Algorithm]

早期early update的论文。在seq2seq/structured learning任务中,在生成过程中当遇到不是golden truth时候就提前停止,直接更新参数。


[Iterative Dual Domain Adaptation for Neural Machine Translation]

讨论了一种domain adaptation的做法。与传统domain adaptation在out domain训练一个模型,在in domain数据上fine-tune得到最终的模型不同,本文的做法是:在in domain和out domain之间来回迁移,同时还保留过去阶段的最优模型,采用knowledge distillation提取有用信息以帮助当前模型的训练。来回迁移的motivation是能更好保留domain-shared的知识。

在训练过程中,模型不仅要最小化训练集的误差,同时还要拟合上个best模型的输出。


[Classical Structured Prediction Losses for Sequence to Sequence Learning]

深入探讨了各种经典structured learning的loss在NN-based的生成任务下的效果。结论是传统的这些loss仍然具有很强的竞争力。

论文一共提到几种loss:

$\mathbf{x}$是source sentence;$\mathbf{u}$是模型生成的句子;$\mathbf{t}$是reference。

公式1是普通的teacher forcing的loss;公式2是label smoothing之后的loss。
公式3是sentence-level的loss,其中$\mathbf{u}^*$是指与reference计算后最高的candidate。公式的意思也即最大化$\mathbf{u}^*$的概率而最小化其他的概率,或者说希望该$\mathbf{u}^*$与其他candidate之间有较大差异margin。

公式4的cost是$\operatorname{cost}(\mathbf{t}, \mathbf{u})=1-\mathrm{BLEU}(\mathbf{t}, \mathbf{u})$;也即最小化那些bleu小的。相对公式3而言,能够提高多个cost小的candidate的概率,而公式3只能focus在一个sequence。

公式5强迫model中最高分数(也即概率最高的)$\hat{\mathbf{u}}$与实际上和reference相似度最高的$\mathbf{u}^*$之间要有margin。

公式6是对5的改进,希望能够focus到多个candidate。

公式7是对seqNLL的改进,直观上我们希望能够根据cost的大小去放大或缩小loss。

论文还提到将token-level和sequence-level的结合方法:

①weighted

$\mathcal{L}_{\text {Weighted }}=\alpha \mathcal{L}_{\text {TokLS }}+(1-\alpha) \mathcal{L}_{\text {Risk }}$

②先用token-level pretrain,然后用sequence-level fine-tune

$\mathcal{L}_{\text {constrained }}=\left\{\begin{array}{ll}{\mathcal{L}_{\text {Risk }}} & {\mathcal{L}_{\text {TokLs }} \leq \mathcal{L}_{\text {TokLS }}^{b}} \\ {\mathcal{L}_{\text {TokLs }}} & {\text { otherwise }}\end{array}\right.$

实验的几个结论:

①sequence-level的loss比所有的token-level的loss更好:

②sequence-level和token-level结合的loss会比单独用更好:


其中weighted的会constrained的更好。

③对于pretrain再fine-tune的方法,对比使用label-smoothing和不使用LS的模型作为初始化,使用LS的模型在初始阶段performance更高;同时在fine-tune后的提升也更大。

④在生成candidate过程中有两种,一种是beam search,另一种是sample。beam search的表现总是更好

⑤Risk与BSO的对比:Risk更优。


[Learning as Search Optimization: Approximate Large Margin Methods for Structured Prediction]

BSO的早期版本。

基本思想是:在生成过程中,如果遇到正确的y不在队列中,则更新参数,更新方法是正确的和错误的相减,同时清空queue,重新插入正确的y再继续生成。

参数更新:


[Professor Forcing: A New Algorithm for Training Recurrent Networks]

通过GAN训练RNN。具体操作是利用GAN强迫模型减少 teacher forcing和self-generated 行为的差异。这样可以缓解exposure bias,同时还能够帮助模型建模长程依赖。

具体做法:一个RNN跑teacher forcing以及free running生成两个句子,另一个双向RNN将生成出来的句子/hidden state,过一遍RNN将hidden state拼起来作为输出传入到discriminator。


[Style Transformer: Unpaired Text Style Transfer without Disentangled Latent Representation]

提出一种style transfer的方法。去掉latent variable,直接用transformer建模。同时在训练方法上也有创新。

传统方法:encoder-decoder结构。encoder将文本映射为style-independent的latent representation;decoder通过该representation加上一个style variable生成目标sequence。这些方法都专注于如何在隐空间分离style-independent内容和style本身。

但这种方法有几个问题:
难以判断分离的情况;这种分离似乎没有必要,因为decoder可以通过直接overwriter原先的style从未分离的latent representation中生成想要的style,;向量表示的limited capacity,并不能很好保存丰富的信息;所有现存的方法都假设输入句子通过一个固定大小的latent vector encode,没办法直接用attention;现存的方法都采用RNN,难以捕获到长程依赖。

本文直接对句子建模而不采用latent representation的方案;直接使用transformer解决长程依赖问题;在训练方法上也有所创新。

传统方法与本文提出的方法的对比:传统方法是在encode时将生成的vector分为两个部分,一个是content一个是style,然后通过替换style,再用decode去生成y;而在transformer是直接在句子前面插入一个style的表示。

Notation:
记$\left\{\mathcal{D}_{i}\right\}_{i=1}^{K}$为拥有K个style的数据集;其中$\mathbf{s}^{(i)}$为第i个style;则style transfer的定义:给定任意一个句子$\mathbf{x}$,以及一个想要的style $\widehat{\mathbf{s}} \in\left\{\mathbf{s}^{(i)}\right\}_{i=1}^{K}$,能够生成新的$\hat{\mathbf{x}}$,同时尽可能保存更多的$\mathbf{x}$的信息。记$f_{\theta}(\mathbf{x}, \mathbf{s})$为映射函数,将$\mathbf{x}$映射成$\mathbf{s}$的$\hat{\mathbf{x}}$。

Method

模型

在style transformer中,encoder将$\mathbf{x}=\left(x_{1}, x_{2}, \ldots, x_{n}\right)$ encode成$\mathbf{z}=\left(z_{1}, z_{2}, \ldots, z_{n}\right)$,而decoder则通过autoregressive的方式生成$\mathbf{y}=\left(y_{1}, y_{2}, \dots, y_{n}\right)$。形式化为:

为了保证有style control,在输入前面添加一个style的embedding。

由于不存在平行语料,因此通过discriminator来做监督。也即用discriminator来判断源句子的style和生成句子的style的不同。该discriminator也是一个transformer encoder,尝试学会分辨不同style的句子,而生成器则尝试去最大化discriminator对所在style的判别概率。

本文提出了两种discriminator:
①conditional discriminator:每次输入$\mathbf{x}$和$\mathbf{s}$,判别器$d_{\phi}(\mathbf{x}, \mathbf{s})$要求回答$\mathbf{x}$和是不是对应$\mathbf{s}$的style。

②Multi-class Discriminator:
只输入$\mathbf{x}$,判别器$d_{\phi}(\mathbf{x})$要求回答是哪个style。

训练方法

Discriminator Learning

主要是训练辨别原始输入$\mathbf{x}$以及reconstructed的输入$\mathbf{y}$和$\widehat{\mathbf{y}}=f_{\theta}(\mathbf{x}, \widehat{\mathbf{s}})$之间的差异。其中$\widehat{\mathbf{y}}$是$\mathbf{x}$加上另一个不同的style所生成的句子。而reconstructed $\mathbf{y}$则是在输入$\mathbf{x}$以及相对应的style的情况下重建相同style的句子。

Discriminator Learning的算法:

Style Transformer Learning

不同case的$f_{\theta}(\mathbf{x}, \widehat{\mathbf{s}})$有不同算法。一共有两种case,$\mathbf{s}=\widehat{\mathbf{s}}$ or $\mathbf{s} \neq \widehat{\mathbf{s}}$

如果$\mathbf{s}=\widehat{\mathbf{s}}$,也即输入的style和$\mathbf{x}$原先的style是一致的,则我们希望style transformer能够重建该句子。也即:

如果$\mathbf{s} \neq \widehat{\mathbf{s}}$,则有两个loss:

①Cycle Reconstruction:希望模型尽可能保存原始输入$\mathbf{x}$的信息,那么将生成的$\widehat{\mathbf{y}}$重新输入进模型中,且给定$\mathbf{x}$的style,希望能够重建回原先的$\mathbf{x}$。也即:

②Style Controlling:如果仅仅是上面的方法,那么模型就会学会直接将输入copy到输出就能将loss降得很低,为了防止这个问题,则将$\widehat{\mathbf{y}}$输入到discriminator以希望最大化$\widehat{\mathbf{s}}$的概率。

总的来说:

将algorithm1和algorithm2结合则有总的算法:


[Style Transfer from Non-Parallel Text by Cross-Alignment]

style transfer的一个方法。其中心思想是希望能够将内容和style分离开来。其具体做法是将一个句子和其style的indicator作为输入输给encoder,映射到一个style-independent的content representation;接着将该表示传入到一个style-dependent的decoder生成句子。

如图有四种可能:在映射到z后,如果与original style绑定,则希望能够重建;如果与不同style绑定,则希望能在分布上有尽可能align(通过GAN的思想实现)。

Aligned auto-encoder

其实就是重建。

同时,为了使z尽量是style-independent的,使用一个GAN来监督。

其实z的形式是RNN的最后一个state。

最终的loss则为:
$\min _{E, G} \max _{D} \mathcal{L}_{\mathrm{rec}}-\lambda \mathcal{L}_{\mathrm{adv}}$

Cross-aligned auto-encoder

希望在风格转换后的句子能够与所转换的风格的句子的分布一致。

采用的是professor forcing的做法:
如图,encoder在生成两个不同句子的表示后,与同一风格y绑定作为decoder的初始输入,对于句子和风格相同的情况(上半部分),则使用teacher forcing,对于句子和风格不同的情况下(下半部分)则使用self-fed的方式生成transferred sentence,将所有的hidden state收集起来用discriminator做判别,模型希望能够生成的hidden state能够尽量让discriminator分辨不出来,也即对于不同的内容z,在给定同一个风格的情况下,其表示接近,也即分布接近)。

最终的算法:


[本周论文小结]

似乎有一段时间没有更新了。原本的打算是继续做一些翻译相关的工作,但似乎由于资源限制没法做了。大概接下来一段时间会专注于style transfer。