神经语言生成的非似然训练

2019 年 11 月 29 日 AINLP


文中提到文章论文均可通过搜索引擎搜索获得。

在自然语言生成领域,和很多其他领域一样,主模型结构只是一小部分,还会有其特有的重要技术,比如说音乐生成领域,很多看点都在后处理,并不是一个 RNN 直接训练生成就行,而语言生成领域,其中最重要的技术就是怎么改进训练目标,或者生成方法,来获得更好的生成结果

现在主流的语言生成模型训练时,一般都用 Teacher Forcing,也就是训练时每一步喂进去的都是正确的(golden)词。关于 Teacher Forcing,更多可参考这篇 What is Teacher Forcing for Recurrent Neural Networks?

而生成时,我们用自回归的(Auto Regressive)方式来进行,也就是每一步喂进去的都是上一步的预测结果(第一步可以用一个特殊符比如<S>起步)。这就造成了训练与生成时的一个落差,导致了生成时出现的各种问题。至于为什么不用自回归方式来训练,主要因为用它训练会有更多缺点,比如,收敛慢,模型不稳定等等。

于是主流模型生成中有一个很致命的点,就是 Holtzman 等人在 The Curious Case of Neural Text Degeneration 提出的退化 (degenerate)问题。其实简单点说就是生成的重复问题,相信做过文本生成模型的童靴都了解,用 Greedy Search 或 Beam Search 有时模型说着说着就开始 “我知道。我知道。我知道...“ 这样不断重复起来。

详细不提,看论文,总之在上面这篇论文中,作者们发现,只要是现有这种训练与生成方式,就难以避免重复的问题出现,因为它是自我强化的(Self-Reinforcing),而在 Transformer 的生成模型中重复问题表现尤为明显。

对于上面这个重复问题,Holtzman 他们提出了 Nucleus (Top-p) Sampling 从生成时的角度来解决,这个方法现在也被广泛用于 GPT-2 的生成中了。

而对于相同的问题,这篇论文 NEURAL TEXT DEGENERATION WITH UNLIKELIHOOD TRAINING 则从训练时的角度提出了方法来进行解决,该方法也就是标题中的非似然训练(Unlikelihood Training)。相信学习过机器学习的同学可能会觉得些疑惑了,一般不都是最大似然(Likelihood)吗,怎么还来了个 Unlikelihood。

其实它最主要 idea 就是通过在训练中强制让重复 unlikely,从而避免了之后生成时的重复问题了,可谓直截了当。

文中主要通过对两点进行非似然训练改进来避免重复,分别从 token(字词)级别序列级别入手。

非似然训练方法

非似然损失(Unlikelihood Loss)

首先需要先说说什么是 unlikelihood loss,文中是这样定义:

式中 可以看作不想预测名单(论文中叫 negative candidate tokens)吧。

对于这个的理解可以先给大家看看 cross-entropy 损失的二分类形式:

后半部分是不是和 unlikelihood loss 很眼熟,而前半部分,其实就可以当作是所谓的 likelihood loss 了,可以通过反传播让模型学习预测更接近目标 y

同样,如果要理解 unlikelihood loss 作用,就是让模型学习预测远离 中的 token,在 的情况下

字词级别非似然训练

思想很直接,就是将当前词之前(不包括当前词)的词全放入 中,然后将这些词的非似然损失加入损失函数,同时加入 来控制非似然损失的比例:

通过这样就可以达成两个效果:

  1. 让不正确的词重复变得更少;

  2. 让频繁出现的词变得更少。

这里论文还对该损失函数进行了梯度分析,非常精彩,鉴于篇幅可以阅读原文附录。

序列级别非似然训练

损失函数更简单,直接就是非似然损失

关键之处在于 的选定,主要是把 n-gram 中的词放入 从而避免了 n-gram 序列的重复

这里还需要指出一点,序列级别训练主要是用于精调,而不与字词级别训练一起,所以是先字词级别训练,然后再用序列级别训练精调。

实验结果

实验用的是 Transformer 模型,Wikitext-103 数据,然后训练语言模型,包括上面提到的非似然训练,最后进行句子补全来看测试效果。

首先在解决重复问题上面,可以说效果非常棒,无论是从词级别,还是短语级别,还是结构级别。

上面是直接用 Greedy Search 来进行的补全,MLE (Maximum Likelihood Estimation)是一般训练模型,UL-token+seq 就是先 token 级别的非似然训练,然后再序列级别精调的模型。最后一列是个 4-gram 重复的计算指标,可以看到非似然训练后的模型远远低于 MLE 的。

之后在困惑度(ppl)以及预测准确度(acc)的角度也进行了模型比较,发现新方法在这两个层面的表现也很不错。

其中 UL-token 为直接 token 级别非似然训练的模型,而 UL-seq 是在 MLE 上序列级别精调后的模型。

之后作者们还找来了人来对模型的生成结果进行了评论,发现也是都觉得新方法生成的更好,尤其是在序列级别的非似然训练加入后,可能这也说明了人类对于语言更注重序列层次吧。

趣闻

关于该论文有几个有趣的点可以提一下,首先是标题,最近看的几篇 facebook 论文已经脱离了我之前说的朴实无法风,开始走非主流搞怪风了。比如这篇:

删除符都加进来了,直接在标题里面就表示了该论文对消除 Degeneration (退化)问题的决心。

同时第一页注脚的位置,默默地写着:

平等贡献:作者序由抛硬币决定的。

简直太搞笑了,把有些人争得你死我活的一座二座等等直接变成了游戏,抛硬币决定吧。作者们真的超有趣,其中也有我特别喜欢的 Cho 老师。





本文转载自公众号:安迪的写作间,作者:Andy


推荐阅读


NLP 界乔碧萝事件:没想到你是这样的爱丽丝


RoBERTa:高级丹药炼制记录


SpanBert:对 Bert 预训练的一次深度探索


AI界最危险武器 GPT-2 使用指南:从Finetune到部署


SemBERT: BERT 的语义知识增强


BERT fintune 的艺术


子词技巧:The Tricks of Subword


T5 模型:NLP Text-to-Text 预训练模型超大规模探索

BERT 瘦身之路:Distillation,Quantization,Pruning

Transformer (变形金刚,大雾) 三部曲:RNN 的继承者


关于AINLP


AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。


登录查看更多
7

相关内容

[ICML-Google]先宽后窄:对深度薄网络的有效训练
专知会员服务
33+阅读 · 2020年7月5日
【ICML2020-西电】用于语言生成的递归层次主题引导RNN
专知会员服务
21+阅读 · 2020年6月30日
【IJCAI2020-CMU】结构注意力的神经抽象摘要
专知会员服务
21+阅读 · 2020年4月23日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
223+阅读 · 2020年3月22日
CMU博士论文:可微优化机器学习建模
专知会员服务
54+阅读 · 2019年10月26日
训练技巧 | 功守道:NLP中的对抗训练 + PyTorch实现
PaperWeekly
12+阅读 · 2019年11月13日
论文浅尝 | 通过文本到文本神经问题生成的机器理解
开放知识图谱
10+阅读 · 2019年6月30日
用于神经网络机器翻译的全并行文本生成
一种基于Sequence-to-Sequence的高质量对话生成方法
科技创新与创业
9+阅读 · 2017年11月13日
利用深度强化学习进行对话生成
PaperWeekly
9+阅读 · 2017年8月23日
用神经网络训练一个文本分类器
Python开发者
3+阅读 · 2017年8月19日
GAN | GAN介绍(1)
KingsGarden
78+阅读 · 2017年3月13日
Teacher-Student Training for Robust Tacotron-based TTS
Arxiv
21+阅读 · 2019年8月21日
Arxiv
3+阅读 · 2018年12月18日
Arxiv
5+阅读 · 2017年12月29日
VIP会员
相关资讯
训练技巧 | 功守道:NLP中的对抗训练 + PyTorch实现
PaperWeekly
12+阅读 · 2019年11月13日
论文浅尝 | 通过文本到文本神经问题生成的机器理解
开放知识图谱
10+阅读 · 2019年6月30日
用于神经网络机器翻译的全并行文本生成
一种基于Sequence-to-Sequence的高质量对话生成方法
科技创新与创业
9+阅读 · 2017年11月13日
利用深度强化学习进行对话生成
PaperWeekly
9+阅读 · 2017年8月23日
用神经网络训练一个文本分类器
Python开发者
3+阅读 · 2017年8月19日
GAN | GAN介绍(1)
KingsGarden
78+阅读 · 2017年3月13日
Top
微信扫码咨询专知VIP会员