《Long Text Generation via Adversarial Training with Leaked Information》阅读笔记

转自:https://bigquant.com/community/t/topic/121098

论文链接:Long Text Generation via Adversarial Training with Leaked Information 1

代码链接https://github.com/CR-Gjx/LeakGAN 2

来源:AAAI2018

解决问题:自动生成连贯的和语义上有意义的长文本

贡献

本文中提出了一种称为LeakGAN的新算法框架,通过对抗训练生成长文本。通过泄漏由判别器提取的特征作为逐步引导信号,以指导生成器更好地生成长文本,同时借鉴分层强化学习从判别器向生成器提供更丰富的信息。LeakGAN解决了先前GAN解决方案中标量奖励信号的非信息性和稀疏性问题。在包含长,中,短文本的生成数据和实际数据的大量实验中,LeakGAN的性能比以前的解决方案有显著的提高,且在生成更长的句子时可以获得更高的性能收益。

先前方案存在的问题:

生成对抗网络(GAN)使用判决性模型来指导生成模型的训练作为强化学习策略,这已经在文本生成中有很好的结果。但是,来自判别器D的标量指导信号是稀疏的,只有在生成完整文本后才可用,并且在生成过程中缺少关于文本结构的中间信息。因此,当生成的文本样本的长度很长时,效果不佳。

创新点:

利用GAN中D的特征(softmax前一层的网络输出),指导G中MANAGER模块的训练,使指导信号更有信息性;使用分层生成器结构,将整个生成任务分解为各种子任务,缓解指导信号的稀疏性问题。

模型

分层生成器G由一个高层次的MANAGER模块和一个低层次的WORKER模块组成, G通过MANAGER模块将D泄露的信息整合到所有生成步骤中,该模块利用生成单词的提取特征并输出一个潜在向量来指导WORKER模块进行下一个单词的生成。

(1)MANAGER是一个长短时记忆模型(LSTM),担任mediator。在每一步中,它都会接收D的高级特征表示,例如CNN的特征图,并用它来生成WORKER模块的指导目标。

(2)考虑到MANAGER生成的目标嵌入,WORKER首先用另一个LSTM编码当前生成的词,然后结合LSTM的输出和目标嵌入来进行当前状态下的最终动作。因此,来自D的指导信号不仅在最后可用于G的标量奖励信号,而且在生成过程中可用于目标嵌入向量,以指导G如何得到改进。

1、符号

s_{t}=\left( x_{1},...,x_{i},...,x_{t} \right) :将先前生成的词作为当前状态

G_{\theta} :随机策略的θ参数化生成网络

G_{\theta}(\cdot|s_{t}) :将 s_{t} 映射到整个词汇表上的一个分布

x_{t+1} :下一个要选择的词

D_{\phi} :φ参数化判别模型

D_{\phi}(s_{T})D_{\phi}G_{\theta} 提供的标量引导信号,以便在生成完整的句子时调整参数

f_{t} : 判别器在当前句子 s_{t} 为生成器 G_{\theta}(\cdot|s_{t}) 提供的附加信息特征

2、用判别器D的泄漏特征作为指导信号

典型的model-free强化学习的奖励函数是黑盒子,本模型的对抗文本生成使用 D_{\phi} 作为学习奖励函数。 D_{\phi} 是一个神经网络,可以分解成一个特征提取器 F(\cdot;\phi_{f}) 和一个具有权向量 \phi_{l} 的最终sigmoid分类层。给定输入s,有:

其中 \phi=(\phi_{f},\phi_{l}) , sigmoid(z)=1/(1+e^{-z})f=F(s;\phi_{f})D_{\phi} 最后一层中s的特征向量,它被泄漏给生成器 G_{\theta}

对于给定的 D_{\phi} ,每个状态s的奖励值主要取决于提取的特征f。从 D_{\phi} 中获得更高奖励相当于提取的特征空间 F(S;\phi_{f})=\left{ F\left( s;\phi_{f} \right) \right}_{s\in S} 中找到更高的奖励。 D_{\phi} 中的特征提取器 F(\cdot;\phi_{f}) 由CNN实现,在convolution-pooling-activation层之后输出CNN特征映射向量f。与标量信号 D_{\phi}(s) 相比,特征向量f是一个对 G_{\theta} 更具信息性的引导信号,因为它知道当前生成的单词在提取的特征空间中的位置。

3、生成器G的分层结构

在生成过程中的每个步骤t中,为了利用来自 D_{\phi} 的泄漏信息 f_{t} ,模型遵循分层强化学习,以具有 G_{\theta} 的分层体系结构。引入一个MANAGER模块(一个LSTM),它在每个步骤t将提取的特征向量 f_{t} 作为输入,并输出一个目标向量 g_{t} ,然后将其输入到WORKER模块中,以指导下一个单词的生成,以便接近 F(S;\phi_{f}) 中较高的奖励区域。

4、生成过程

MANAGER和WORKER模块都从全零隐藏状态开始,分别表示为 h_{0}^{M}h_{0}^{W} 。MANAGER从判别器 D_{\phi} 接收泄漏特征向量 f_{t} ,进一步与MANAGER的当前隐藏状态组合以产生目标向量 g_{t} ,其中 M(\cdot;\theta_{m}) 表示由LSTM实现的MANAGER模块,参数为 \theta_{m}h_{t}^{M} 是LSTM的递归隐藏向量。

为了结合由MANAGER产生的goal,对最新的c个goal进行求和并执行线性变换 \psi ,权重矩阵为 w_{\psi} ,生成k维目标嵌入向量 w_{t}

给定目标嵌入向量 w_{t} ,WORKER模块将当前词 x_{t} 作为输入,并输出矩阵 O_{t},通过和 w_{t} 进行矩阵乘积来确定当前状态下的最终动作空间分布。

 

其中 W(\cdot;\theta_{w}) 表示WORKER模块,即以 h_{t}^{w} 作为其隐藏向量的LSTM, O_{t}\left| V \right|\times k 矩阵,表示所有词的当前向量, O_{t}\cdot w_{t} 得出所有词的分对数,α是温度参数,控制生成熵。

5、G的训练(使用来自 D_{\phi} 的指导信号训练MANAGER和WORKER)

使用策略梯度算法(如REINFORCE)以端对端的方式训练 G_{\theta} 。单独训练MANAGER和WORKER模块,其中MANAGER经过训练以预测判别特征空间中的有利指导信号,WORKER得到奖励以遵循这些指导信号。MANAGER模块的梯度定义为:

其中Q_{F}(s_{t},g_{t})=Q(F(s_{t}),g_{t})=Q(f_{t},g_{t})=E[r_{t}] 是当前策略下的预期奖励,可以通过Monte Carlo搜索近似估计。 d_{cos} 代表c步转换后特征表示的变化(即 f_{t+c}-f_{t} )和MANAGER产生的目标向量 g_{t}(\theta_{m}) 之间的余弦相似度。损失函数强制目标向量匹配特征空间中的转换,同时获得高奖励。

使用REINFORCE算法对WORKER进行训练以最大化奖励,这可以通过对状态 s_{t-1} 和WORKER采取的动作 x_{t} 进行采样来近似。当鼓励WORKER按照MANAGER的指示动作时,WORKER的内在奖励被定义为:

 

在对抗训练之前,需要训练 G_{\theta} ,其中MANAGER的梯度为:

其中\tilde{f}{t}=f(\tilde{s}{t})\tilde{s}_{t}\tilde{s}_{t+c} 是真实文本的状态,。MANAGER被训练成模仿特征空间中真实文本样本的转换。WORKER通过最大似然估计(MLE)进行训练。

在训练过程中,生成器Gθ和判别器Dφ交替训练。在生成器中,MANAGER M(\cdot;\theta_{m})
WORKER W(\cdot;\theta_{w}) ,固定其一,交替进行训练。

实验

(**1)生成数据库:**用10,000个长度分别为20和40的序列作为生成模型的训练集S。

(**2)GAN设置:**对于判别器D,选择CNN作为特征提取器和二元分类器。文本的特征是一个1,720维向量。对于生成器G,采用LSTM作为MANAGER和WORKER的体系结构来捕获序列上下文信息。 MANAGER使用CNN提取的特征映射生成16维目标嵌入特征向量 w_{t}

**(3)模型比较:**用MLE训练的LSTM,SeqGAN,RankGAN,LeakGan

**(4)评估指标:**生成数据实验采用负对数似然(NLL)指标。实际数据实验采用BLEU统计数据和图灵测试中的人类评分

  • 生成数据实验

(i)在预训练阶段,与其他模型相比,LeakGAN已经显示出可观察的性能优势,这表明所提出的分层体系结构本身带来了改进。

(ii)在对抗训练阶段,LeakGAN显示出更好的收敛速度,它探索的局部最小值明显优于先前的结果。结果证明信息泄露框架和分层RL架构在生成短文本和长文本方面的有效性。

  • 长文本生成:EMNLP2017 WMT新闻

选择EMNLP2017 WMT4数据集作为长文本语料库。新闻数据集有5,742个单词和397,726个句子。随机抽取200,000个句子作为训练集,10,000个句子作为测试集。使用BLEU-(2至5)分数作为评估指标。

 

在所有评价指标中,LeakGAN与基线模型相比显示出显著的性能增益。连续较高的BLEU分数表明LeakGAN生成的句子在局部特征中具有高质量以模仿真实文本。

  • 中等文本生成:COCO图像标题

选择COCO图像标题数据集作为中等文本语料库,该数据集包含许多图像描述对。

COCO数据集上的BLEU得分结果表明LeakGAN在中等长度文本生成任务中的表现明显优于基线模型。

  • 短文本的生成:中国诗歌

为了评估LeakGAN在短文本生成中的表现,选择了中国诗歌数据集。该数据集由4行5字的诗组成,使用BLEU-2分数作为评估指标。

结果表明,LeakGAN成功地处理了短文本生成任务。

  • 长文本生成的性能鲁棒性

EMNLP2017 WMT新闻数据的结果如图3所示。曲线表明,当生成的句子更长时,LeakGAN会在基线上产生更大的性能增益。这一事实支持了我们声称LeakGAN是长文本的强大框架。

未来工作

未来希望计划通过提供更多特定于任务的指导信息,将LeakGAN应用于更多自然语言处理应用程序中。 此外,提高判别器检查整个句子全局一致性的能力是一个有希望的方向。

 

 

 

 

代码解读:

转自:https://blog.csdn.net/qq_36616268/article/details/84800719

这篇文章是我看完RankGAN之后看的。这篇文章思想上是一个感觉还是有一定的前沿性。很新颖,至少之前没人这么想过。也把HRL和GAN结合在了一起。很Nice,这两天状态不好,看代码又花去了两天时间。

首先先说一下我看完代码之后的感觉吧:

第一点,leak主要体现在泄露了D对一个生成的句子提取的特征值(D也是根据这个特征值来得到最后的【fake,real】的)

第二点:因为使用了HRL的结构所以G就变成了manager和worker了(我对他这么处理的结构表示一丢丢的好奇)

第三点:rollout这个的MCsearch,我之前理解的有问题,我们可以先设置一个n,代表我们每一个G generate出来的data需要跑n大遍,也就是第一个循环,在这个循环里,我们再放开不同个数的given_num的数据(比如  我是谁?,我放开:我是,我是这两个词就用于训练G的 hidden state(manager和worker的hidden state),然后生成的gen_seq,把:我是  原封不动的读进去,然后在given_num到seq_length之间我们就需要预测了,逐个预测,然后填写到gen_seq中)。

第四点:对于leak泄露给manger的数据,我们首先需要D计算出当前的 text 的 feature,那么每次提前直到的text的长度可能不一致(比如:你是谁?,一开始我可能只直到你,或者你是),所以这里采用的处理方法是用一个常量补齐就好了。

第五点:内部奖励,我们说到HRL,就必须要有内部奖励:内部奖励是1 减去 当前的sub_feature,与goal的偏差的cos距离。

这里我们首先需要一个超参数step_size,也就是goal每隔多少个文本才更新一下。所以假设我们的每个文本输入都是seq_length这么长,step_size = 3 ,那么我们得出来的goal就是[g1,g1,g1,g2,g2,g2,g3,g3,g3......],而我们最后的到的特征状态为【feature(i)-feature(i-i%step_size)】得到的[sub_f1,subf2,subf3.....],这里的feature是根据D的特征提取器算出来的,也就是leak过来的特征向量。

第六点:我需要串一下思路,对于 manager来说,我们每次都用从D leak过来的特征来计算出当前的目标   对于worker来说,这里我们每次都用当前的状态 去拿到 D的特征提取器看,我们当前已经有的特征,然后goal其实也就是目标特征,当两个差距越大,我们得到奖励也就越小,说明我们距离目标越远。奖励也就越小,最后直接用选取的动作gen_x x  概率 x 奖励 当作loss即可

第七点:提出了基于排名的Bootstrapped Rescaled Activation来调整D反馈的大小,这个方法就相当于是一个值稳定器,当算法对数值大小很敏感的时候能够起到很大帮助;而且,作为排序方法,它也能避免梯度消失的问题,这加速了模型的收敛。(我从代码上没有看出他这一步是怎么做的,感觉有点神奇,也没有排序什么的,我向作者提交了issue,回复了以后,我回来更新)

第八点:交替更新,这个就是在每次循环对抗更新的时候,再加上一个监督学习,起一个引导作用,但是代码中好像并没有体现出来。

下面是我做的代码笔记:

 

 

 

 

以上。

 
--------------------- 
作者:这梦想不休不止 
来源:CSDN 
原文:https://blog.csdn.net/qq_36616268/article/details/84800719 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值