RankGAN(NIPS 2018)

在这里插入图片描述

 Adversarial Ranking for Language Generation

贡献

本文提出了一个新的对抗性学习框架RankGAN,以产生高质量的语言描述。RankGAN在一个对抗性的框架下,从机器书写和人类书写句子之间的相对排名信息中学习该模型。在所提出的RankGAN中,将discriminator的训练放宽为一个learning-to-rank 优化问题。具体地说,新的对抗网络由两个神经网络模型组成,一个生成器和一个ranker。与执行二元分类任务不同,对ranker进行训练,将机器写的句子排列得比人写的句子低。因此,训练generator来合成混淆语言的句子,使机器书写的句子在参考方面比人类书写的句子更高。在Learning过程中能够采用策略梯度技术来克服不可微问题。因此,通过共同查看一组数据样本并通过相对排名评估其质量,discriminator能够更好地评估样本的质量,进而帮助generator更好地学习。

方法

在这里插入图片描述
H H H表示从human-written sentences中抽取的句子。 G G G是generator G θ G_θ Gθ生成的句子。ranker R φ R_φ Rφ的输入由一个合成序列和多个human-written sentences的句子组成。给出了由人类书写的参考句 U U U,根据相对分数对输入句进行排序。在这个图中,它说明了生成器试图愚弄ranker并让合成句子相对于参考句排在最前面。

generator的学习目标是生成一个比从实际数据中得到的排名分数更高的合成句子。然而, R φ R_φ Rφ的目标是将合成句子的等级比human-written sentences低。因此,这可以被视为 G G G R R R用目标函数 L L L玩极小极大对策:
在这里插入图片描述
其中 θ θ θ φ φ φ分别是 G G G R R R的可变参数。 E E E是期望算子, P h P_h Ph是human-written sentences的真实数据。 s s s ∼ ∼ P h P_h Ph s s s ∼ ∼ G θ G_θ Gθ分别表示 s s s来自human-written sentences和合成句子。 U U U是用于估计相对排名的参考集, C + C^+ C+ C − C^- C是不同输入语句 s s s的比较集。当输入语句 s s s是真实数据时, C − C^- C包含从 G θ G_θ Gθ预采样的生成数据;如果输入语句 s s s是合成数据,则对human-written sentences的数据进行预采样并封装在 C + C^+ C+中。

G θ G_θ Gθ R φ R_φ Rφ的形式可以用多种方式实现。本文用的是LSTMs的生成模型。LSTM迭代地获取当前token w t w_t wt的嵌入特征,加上先前阶段的隐藏状态 h h h t _t t − _− 1 _1 1和单元状态 c c c t _t t − _− 1 _1 1中的信息,并更新当前状态 h t h_t ht c t c_t ct。另外,后面的单词 w w w t _t t + _+ + 1 _1 1被有条件地抽样到由当前隐藏状态 h t h_t ht的值确定的概率分布 p p p w w w t _t t + _+ + 1 _1 1 | h t h_t ht)。生成的单词序列 s s s=( w 0 w_0 w0 w 1 w_1 w1 w 2 w_2 w2,…, w T w_T wT),其中 T T T是序列长度。

ranker R R R具有相似的卷积结构,它首先通过一系列非线性函数 F F F将连接的序列矩阵映射到嵌入的特征向量
y s y_s ys= F F F s s s),然后利用 R R R预先提取的参考特征 y u y_u yu计算序列特征 y s y_s ys的排名得分。

Rank score

通过以下公式得出输入序列 s s s的关联度得分:
在这里插入图片描述
其中, y u y_u yu y s y_s ys分别是参考序列和输入序列的嵌入特征向量。丨·丨表示范数算子。然后,使用一个类似softmax的公式来计算给定比较集 C C C的某个序列 s s s的排名得分:
在这里插入图片描述

在强化学习中,参数γ的值是根据经验设定的,较低的γ值会导致所有句子几乎相等,而较高的γ值会增加对分数越大的句子的偏见。集合C′=C{s}表示要排序的输入语句集。

输入句子的总体排名分数是在参考空间中抽样的不同参考值对其分数的期望值。在学习过程中,从human-written sentences中随机抽取一组参考集来构造参考集 U U U,同时根据输入句子的类型构造比较集 C C C,即从human-written sentences和机器生成集中抽取 C C C。在上述设置下,为输入语句 s s s计算的期望排名得分可通过以下公式得出:
在这里插入图片描述
这里, s s s是输入句子。要么是human-written sentences,要么是由 G θ G_θ Gθ产生的。因此, u u u是从集合 U U U中抽样的参考句子。给定参考集和比较集,可以计算出表示完整句子相对等级的等级分数。排序得分将用于generator G θ G_θ Gθ和ranker R φ R_φ Rφ的目标函数。

Training

策略梯度

假设词汇集是 V V V,在时间步骤 t t t,之前已经生成的序列:( w 0 w_0 w0 w 1 w_1 w1,…, w w w t _t t − _− 1 _1 1),其中所有的token: w i w_i wi ∈ ∈ V V V。与典型的强化学习算法相比,现有序列 s s s 1 _1 1 : _: : t _t t − _− 1 _1 1=( w 0 w_0 w0 w 1 w_1 w1,…, w w w t _t t − _− 1 _1 1)是当前状态,下一步选择的token: w t w_t wt是策略 π θ π_θ πθ w t w_t wt | s s s 1 _1 1 : _: : t _t t − _− 1 _1 1)的动作采样。由于使用 G G G来生成下一个token,策略 π θ π_θ πθ等于前面提到的 p p p w w w t _t t | s s s 1 _1 1 : _: : t _t t − _− 1 _1 1), θ θ θ是生成器 G G G中的参数集。一旦生成器到达一个序列的末尾(即 s s s= s s s 1 _1 1 : _: : T _T T),它将根据比较集 C C C及其相关的参考集 U U U获得排名奖励 R R R s s s | U U U C C C)。

请注意,在强化学习中,当前的奖励会受到来自中间状态和未来状态的奖励的影响。然而,在文本生成中,生成器 G θ G_θ Gθ只在一个序列完全生成的情况下获得奖励,这意味着在序列到达结束符号之前没有获得中间奖励。为了解决这个问题,我们利用蒙特卡罗展开方法来模拟序列不完整时的中间报酬。然后,部分序列的预期未来reward: V V V可由以下公式计算:
在这里插入图片描述
起始token( w 0 w_0 w0 w 1 w_1 w1,…, w w w t _t t − _− 1 _1 1)是固定的,其余token按 G θ G_θ Gθ连续采样,直到最后一个token: w t w_t wt生成。将其称为当前策略生成的“路径”。继续抽样 n n n个不同的路径与相应的排名得分。然后,平均排名得分将用于近似当前部分序列的预期未来回报。有了可行的中间报酬,可以最终确定完成事项的目标函数。generator: G G G的目标函数梯度可以表示为:
在这里插入图片描述
其中∇θ是偏微分算子。开始状态 s 0 s_0 s0是第一个生成的token: w 0 w_0 w0 E E E s _s s 1 _1 1 : _: : T _T T ∼ _∼ G _G G θ _θ θ是基于当前生成器参数 θ θ θ在一个小批量内对所有抽样完整句子的平均值。与其他的策略梯度方法不同,该方法用基于多个句子的排序系统代替简单的二进制输出,这样可以更好地反映模拟语句的质量,便于生成器 G G G的有效训练,可以在 θ θ θ中固定参数,并使目标方程(1)最大化。然而,在实践中,人们发现网络模型通过最小化log( R φ R_φ Rφ s s s | U U U C + C^+ C+),而不是最大化log( 1 1 1 − − R φ R_φ Rφ s s s | U U U C + C^+ C+),其中 s s s ∼ ∼ G θ G_θ Gθ)来更好地学习。因此,在 R φ R_φ Rφ的训练过程中,最大化了以下排序目标函数:
在这里插入图片描述

   当评价数据来自human-written sentences时,比较集C−应包括通过Gθ生成的句子;相反,如果估计数据属于合成句子,则C+应包含人类书面句子。这样可以提供更稳定的训练。

实验

在这里插入图片描述
虽然MLE,SeqGAN pg-BLEU在200个epochs后接近收敛,但是RankGAN可以不断的改进生成器,并且过得更低的NLL分数。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43390809/article/details/108562404