- PaperWeekly 2016.08.05 第一期
- PaperWeekly 第二期
- PaperWeekly 第三期
- PaperWeekly 第四期 - 基于强化学习的文本生成技术
- PaperWeekly 第五期 - 从 Word2Vec 到 FastText
- PaperWeekly 第六期 - 机器阅读理解
- PaperWeekly 第七期 -- 基于 Char-level 的 NMT OOV 解决方案
- PaperWeekly 第八期 - Sigdial2016 文章精选(对话系统最新研究成果)
- PaperWeekly 第九期 -- 浅谈 GAN
- PaperWeekly 第十期
- PaperWeekly 第十一期
- PaperWeekly 第十二期 - 文本摘要
- PaperWeekly 第十三期--最新文章解读
- PaperWeekly 第十四期 - TTIC 在 QA 任务上的研究进展
- PaperWeekly 第十六期 - ICLR 2017 精选
- PaperWeekly 第十七期 - 无监督/半监督 NER
- PaperWeekly 第十八期 - 提高 seq2seq 方法所生成对话的流畅度和多样性
- PaperWeekly 第十九期 - 新文解读(情感分析、机器阅读理解、知识图谱、文本分类)
- PaperWeekly 第二十期 - GAN(Generative Adversarial Nets)研究进展
- PaperWeekly 第二十一期 - 多模态机器翻译
- PaperWeekly 第二十二期 - Image Caption 任务综述
- PaperWeekly 第二十三期 - 机器写诗
- PaperWeekly 第二十四期 - GAN for NLP
- PaperWeekly 第二十五期 - 增强学习在 image caption 任务上的应用
- PaperWeekly 第二十六期 - 2016 年最值得读的 NLP paper 解读(3 篇)+在线 Chat 实录
- PaperWeekly 第二十七期 | VAE for NLP
- PaperWeekly 第 28 期 | 图像语义分割之特征整合和结构预测
- PaperWeekly 第 29 期 | 你的 Emoji 不一定是我的 Emoji
- PaperWeekly 第 30 期 | 解读 2016 年最值得读的三篇 NLP 论文 + 在线 Chat 实录
- PaperWeekly 第 31 期 | 远程监督在关系抽取中的应用
- PaperWeekly 第 32 期 | 基于知识图谱的问答系统关键技术研究 #01
- PaperWeekly 第 33 期 | 基于知识图谱的问答系统关键技术研究 #03
- PaperWeekly 第 34 期 | VAE 在 chatbot 中的应用
- PaperWeekly 第 35 期 | 如何让聊天机器人懂情感 PaperWeekly 第 35 期 | 如何让聊天机器人懂情感
- PaperWeekly 第 36 期 | Seq2Seq 有哪些不为人知的有趣应用?
- PaperWeekly 第 37 期 | 论文盘点:检索式问答系统的语义匹配模型(神经网络篇)
- PaperWeekly 第 38 期 | SQuAD 综述
- PaperWeekly 第 39 期 | 从 PM 到 GAN - LSTM 之父 Schmidhuber 横跨 22 年的怨念
- PaperWeekly 第 40 期 | 对话系统任务综述与基于 POMDP 的对话系统
- PaperWeekly 第 41 期 | 互怼的艺术:从零直达 WGAN-GP
- PaperWeekly 第 42 期 | 基于知识图谱的问答系统关键技术研究 #04
- PaperWeekly 第 43 期 | 教机器学习编程
- PaperWeekly 第 44 期 | Kaggle 求生
- PaperWeekly 第 45 期 | 词义的动态变迁
- PaperWeekly 第 46 期 | 关于远程监督,我们来推荐几篇值得读的论文
- PaperWeekly 第 47 期 | 开学啦!咱们来做完形填空:“讯飞杯”参赛历程
- 深度强化学习实战:Tensorflow 实现 DDPG - PaperWeekly 第 48 期
- 评测任务实战:中文文本分类技术实践与分享 - PaperWeekly 第 49 期
- 从 2017 年顶会论文看 Attention Model - PaperWeekly 第 50 期
- 深入浅出看懂 AlphaGo Zero - PaperWeekly 第 51 期
- PaperWeekly 第 52 期 | 更别致的词向量模型:Simpler GloVe - Part 1
- PaperWeekly 第 53 期 | 更别致的词向量模型:Simpler GloVe - Part 2
- 基于神经网络的实体识别和关系抽取联合学习 | PaperWeekly #54
PaperWeekly 第二十四期 - GAN for NLP
“深度解读:GAN 模型及其在 2016 年度的进展”[1]一文对过去一年 GAN 的进展做了详细介绍,十分推荐学习 GAN 的新手们读读。这篇文章主要介绍 GAN 在 NLP 里的应用(可以算是论文解读或者论文笔记),并未涉及 GAN 的基本知识 (没有 GAN 基础知识的小伙伴推荐先看[1],由于本人比较懒,就不在这里赘述 GAN 的基本知识了 J)。由于很长时间没有写中文文章了,请各位对文章中不准确的地方多多包涵、指教。
虽然 GAN 在图像生成上取得了很好的成绩,GAN 并没有在自然语言处理(NLP)任务中取得让人惊喜的成果。 其原因大概可以总结为如下几点:
- 原始 GAN 主要应用实数空间(连续型数据)上,在生成离散数据(texts)这个问题上并不 work。GAN 理论的提出者 Ian Goodfellow 博士这样回答来这个问题问题:“GANs 目前并没有应用到自然语言处理(NLP)中,最初的 GANs 仅仅定义在实数领域,GANs 通过训练出的生成器来产生合成数据,然后在合成数据上运行判别器,判别器的输出梯度将会告诉你,如何通过略微改变合成数据而使其更加现实。一般来说只有在数据连续的情况下,你才可以略微改变合成的数据,而如果数据是离散的,则不能简单的通过改变合成数据 。 例如,如果你输出了一张图片,其像素值是 1.0,那么接下来你可以将这个值改为 1.0001。如果输出了一个单词“penguin”,那么接下来就不能将其改变为“penguin + .001”,因为没有“penguin +.001”这个单词。 因为所有的自然语言处理(NLP)的基础都是离散值,如“单词”、“字母”或者“音节”, NLP 中应用 GANs 是非常困难的。一般而言,采用增强学习算法。目前据我所知,还没有人真正的开始研究利用增强算法解决 NLP 问题。”
- 在生成 text 时,GAN 对整个文本序列进行建模打分。对于部分(partially) 生成的序列,十分难判断其在之后生成整个 (fully) 序列时的分数。
- 另一个潜在的挑战涉及 RNN 的性质(生成文本大多采用 RNN 模型)。假设我们试图从 latent codes 生成文本,error 就会随着句子的长度成指数级的累积。最开始的几个词可能是相对合理的,但是句子质量会随着句子长度的增加而不断变差。另外,句子的长度是从随机的 latent representation 生成的,所以句子长度也是难以控制。
下面我将主要介绍和分析最近阅读过的将 GAN 应用于 NLP 中的一些论文:
1. Generating Text via Adversarial Training
- 论文链接:
- 这是 2016 年的 NIPS GAN Workshop 上的一篇论文, 尝试将 GAN 理论应用到了文本生成任务上。 文中的方法比较简单,具体可以总结为:
- 以递归神经网络(LSTM)作为 GAN 的生成器(generator)。其中,用光滑近似(smooth approximation)的思路来逼近 LSTM 的输出。结构图如下:
- 本文的目标函数和原始 GAN 有所不同,文中采用了 feature matching 的方法 。迭代优化过程包含以下两个步骤:
其中式 (6) 为标准 GAN 的优化函数,式 (7) 为 feature matching 的优化函数。
- 本文的初始化非常有意思,特别是在判别器的预训练方面,利用原始的句子和该句子中交换两个词的位置后得到的新句子进行判别训练。(在初始化的过程中,运用逐点分类损失函数对判别器进行优化)。这非常有意思,因为将两个单词互换位置,输入的数据信息实际上是基本相同的。比如,大多数卷积计算最终会得出完全相同的值。
- 本文生成器的更新频率是判别器的更新频率的 5 倍,这与原始 GAN 的设定恰好相反。这是因为 LSTM 比 CNN 的参数更多,更难训练。
- 然而,本文生成模型 (LSTM) decode 阶段有 exposure bias 问题,即在训练过程中逐渐用预测输出替代实际输出作为下一个词的输入。
2. SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient
- 论文链接:
- 论文源码:
- 文本将误差作为一种增强学习的奖励,以一种前馈的方式训练,用增强的学习的探索模式去更新 G 网络。
- 主要内容:这篇论文将序列生成过程当作一个 sequential decision making 过程。如下图:
(a) 其中左图为 GAN 网络训练的步骤 1,判别器 D 主要用来区分真实样本和伪造样本,这里的判别器 D 是用 CNN 来实现的。
(b) 右图为 GAN 网络训练的步骤 2, 根据判别器 D 回传的判别概率回传给生成器 G,通过增强学习的方法来更新生成器 G,这里的的生成器 G 是用 LSTM 来实现的。
(c) 因为 G 网络的更新策略是增强学习,增强学习的四个要素 state, action, policy, reward 分别为:state 为现在已经生成的 tokens (当前 timestep 之前 LSTM decoder 的结果), action 是下一个即将生成的 token (当前解码词), policy 为 GAN 的生成器 G 网络,reward 为 GAN 的判别器 D 网络所生成的判别概率。其中,reward 采用以下方法来近似:
本过程特点:即当解码到 t 时,即对后面 T-t 个 timestep 采用蒙特卡洛搜索搜索出 N 条路径,将这 N 条路径分别和已经 decode 的结果组成 N 条完整输出,然后将 D 网络对应奖励的平均值作为 reward. 因为当 t=T 时无法再向后探索路径,所以直接以完整 decode 结果的奖励作为 reward。
(d) 对于 RL 部分,本文采用了 policy gradient 方法。 根据 policy gradient 理论,生成器 G 的目标函数可以表示如下:
求导结果为: (详细推导过程请看原论文附页)
(e) 每隔一段时间,当生成更多的更逼真的句子后,重新训判别器 D,其中判别器的目标函数表示如下:
算法结构图可以表示为如下:
- 实验
实验部分主要分为合成数据实验和现实数据实验。
(a) 合成数据实验: 随机初始一个 LSTM 生成器 A,随机生成一部分训练数据,来训练各种生成模型。
评判标准为:负对数似然(交叉熵) NLL. 详细实验设置可以参看原论文。
(b) 现实数据实验:主要展示中文诗句生成,奥巴马演讲生成,音乐生成的结果。实验数据分别为中文诗歌数据集 (16,394 首绝句),奥巴马演讲数据集 (11,092 段落), Nottingham 音乐数据集 (695 首歌)。评测方法为 BLEU score, 实验结果如下:
文中并未展示模型生成的诗歌等,具体效果如何?
3. Adversarial Learning for Neural Dialogue Generation
- 论文链接:
- 论文源码:
- 这篇论文是 2017 年 1 月 26 号上传到 arxiv 上的,属于最新的 GAN 用于 NLP 的论文。文中主要用对抗性训练 (adversarial training) 方法来进行开放式对话生成 (open-domain dialogue generation)。文中把这项任务作为强化学习(RL) 问题,联合训练生成器和判别器。和 SeqGAN 一样,本文也是使用判别器 D 的结果作为 RL 的 reward 部分,这个 reward 用来奖励生成器 G,推动生成器 G 产生的对话类似人类对话。
- 总体来说,本文的思路和 SeqGAN 是大体一样的,但是有几处不同和改进的地方:
(a) 因为本文是用于开放式对话生成,所以文中的生成器采用 seq2seq 模型 (而非普通的 LSTM 模型)。 判别器则采用了 hierarchical encoder (而非 CNN)。
(b) 采取了两种方法为完全生成或者部分生成的序列计算 reward。除了 Monte Carlo search (与 SeqGAN 相似) 方法,本文新提出了一个能对部分生成的序列进行 reward 计算的方法。使用所有完全 (fully) 和部分 (partially) 解码的序列来训练判别器会造成 overfitting。早期产生的部分(partially) 序列会出现在许多的训练数据中,比如生成的第一个 token y_1 将会出现在所有的部分生成 (partially generated) 的序列里。所以本文提出仅仅分别从正(positive) 序列 y+ 和负(negative) 序列 y-的每个子序列中随机地选取一个 sample 来训练判别器 D。这个方法比 Monte Carlo search 更快速,但是也会使得判别器更弱,更不准确。
(c) 在 SeqGAN 中,生成器只能间接的通过判别器生成的 reward 来奖励或者惩罚自己所产生的序列。而不能直接从 gold-standard 序列中直接获取信息。 这种训练方式是脆弱的,一旦生成器在某个训练 batch 中变坏,判别器将会很容易对生成的句子进行判断 (比如 reward 为 0 ),此时生成器就会迷失。生成器只知道现在生成的句子是坏的,但是并不知道如何调整才能使得生成的句子变好。为了解决这个问题,在生成器的更新过程中,本文输入了 human-generated responses。对于这些 human-generated responses, 判别器可以将其 reward 设置为 1。这样生成器可以在上述情况下仍能生成好的 responses。
(d) 训练过程中,有些针对 dialogue system 的设置(trick)。这部分内容,读者可以参考 Jiwei Li 之前的关于 dialogue system 的论文。
- 部分实验结果:
- 值得思考的地方:文中只尝试用判别器的结果作为 reward, 结合 原文作者之前在 dialogue system 文中提出的其他 reward 机制(e.g., mutual information) 会不会提高效果?
4. GANs for sequence of discrete elements with the Gumbel-softmax distribution
- 论文链接:
- 相比前面两篇论文,本文在处理离散数据这个问题上则比较简单暴力。离散数据 (用 one-hot 方法表示) 一般可以从多项式采样取得,例如由 softmax 函数的输出 p = softmax(h)。 根据之前的概率分布,以 p 的概率进行采样 y 的过程等价于:y=one_hot(argmax_i(h_i+g_i)) , 其中 g_i 是服从 Gumbel distribution (with zero location and unit scale)。然而 one_hot(argmax(.)) 是不可微分的。与原始 GAN 不同,作者提出了一种方法来近似上面的式子: y = softmax(1/ r (h + g))。这个公式是可以微分的。算法结构如下:
- 本文的实验部分做得比较粗糙,只展示了生成得 context-free grammar, 并未在生成其他文本数据上做实验。
- 总的来说,这篇论文本身方法还值得改进,也可以值得借鉴下。
5. Connecting generative adversarial network and actor-critic methods
- 论文链接:
- Actor-critic methods [2]: 许多 RL 方法 (e.g., policy gradient) 只作用于 policy 或者 value function。Actor-critic 方法则结合了 policy-only 和 value function-only 的方法。 其中 critic 用来近似或者估计 value function,actor 被称为 policy structure, 主要用来选择 action。Actor-critic 是一个 on-policy 的学习过程。Critic 模型的结果用来帮助提高 actor policy 的性能。
- GAN 和 actor-critic 具有许多相似之处。Actor-critic 模型中的 actor 功能类似于 GAN 中的 generator, 他们都是用来 take an action or generate a sample。Actor-critic 模型中的 critic 则类似于 GAN 中的 discriminator, 主要用来评估 actor or generator 的输出。具体的相同和不同点,感兴趣的朋友可以仔细阅读原文。
- 这篇论文主要贡献在于从不同的角度来说明了 GAN 和 actor-critic 模型的相同与不同点,从而鼓励研究 GAN 的学者和研究 actor-critic 模型的学者合作研发出通用、稳定、可扩展的算法,或者从各自的研究中获取灵感。
- 最近 Bahdanau 等大神提出了用 actor-critic 模型来进行 sequence prediction [3]。虽然[3]中并没有用到 GAN,或许对各位能有启发。 用类似的思想,GAN 在 sequence prediction 上也许也能取得的比较好的效果?
[1] 深度解读:GAN 模型及其在 2016 年度的进展
[2] Actor-Critic Algorithms
[3] An actor-critic algorithm for sequence prediction
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论