三角兽首席科学家分享实录:基于对抗学习的生成式对话模型

简介:
本文来自AI新媒体量子位(QbitAI)

对抗学习和对话系统都是近年来的新热点。今年7月,三角兽研究组与哈工大ITNLP实验室合作完成的论文被自然语言领域顶级会议EMNLP录取。

上周三(8月9日)晚,量子位邀请到三角兽首席科学家王宝勋,与大家分享了论文中基于对抗学习的生成对话模型内容。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

这次分享满满干货,非常精彩,很多读者要求看分享内容的文本版。为了方便大家学习交流,量子位将内容编辑整理如下:

大家看题目可以知道这是很热的两个词:对抗学习生成式对话

从去年开始大家都开始关注对抗学习,对话系统问题也比较新,比如微软有小冰,百度有度秘,可以看出这是很热的一个方向。我们把这两个名词放在一起,好像是一个容易出好paper的机会,但实现过程中道路还是很曲折的。

这是我们这次报告的提纲,我们会从这几个方面来看,研究背景从聊天结果多样性的角度引入对抗学习模型的idea,重点是基于对抗学习的生成式模型的细节,包括模型的细节,然后结合实验的结果做分析得出结论。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

第一部分细分成三个内容,先简单说一下两种不同的技术路线,然后是生成式对话系统的技术背景、模型的策略和讨论Seq2Seq系统的主要问题,也是这篇论文提出的出发点。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

对于用两种不同的技术路线构成对话系统,我在之前的报告里有强调:这就是作为生成式聊天和检索式聊天在技术路线上的区别:一个是偏向功能实现,另一个偏向现在热点的深度学习模型,这是一个偏研究的角度。

基于检索框架的路线很好理解,假如说我们通过query检索得到一个候选的集合,根据候选的集合的语义相关性重新做排序最后输出一个最优的答案出来,整个过程可以类比成传统的IR的系统。

最关键的是两个问题,怎么去考量两个短文本语义上的相似性,和怎么考量两个短文本的语义相关性或关联。相似性和相关性在短文本里面的区分是很明显的,不建议用相似性的模型做相关的排序,反之亦然。整体技术路线可以套用在主流的聊天系统。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

另外一个技术路线是深度学习出现在统计机器翻译领域之后,是一个很一体化的技术路线。那么我们是否可以训练一个端对端的模型,给一个输入直接生成结果,并让这个结果有不错的质量评价,这是我们今天讨论的主要问题。

如果从技术的起源看,2014年端对端的机器翻译是技术一个整体的起源。2015年构建了第一个端对端的聊天系统。这个技术发展的时间很短,其中有大量的问题亟待解决。

640?wx_fmt=png&wxfrom=5&wx_lazy=1
接下来我们 从方法论的角度对生成式模型的起源做一下回顾,这一类的方法有一个比较公认的共同说法叫neural response generation,也就是NRG。NRG通过神经网络进行端到端的自动回复生成,接下来我们花一点时间讲一下NRG构建的思维逻辑。
640?wx_fmt=png&wxfrom=5&wx_lazy=1

统计机器翻译时代(SMT)发现统计机器翻译的模型在问答系统里,已经可以提供一个有效的feature来度量一个问题和一个答案的相关性。

14年神经机器翻译出现并迅速成为机翻译的主流模型结构,使得神经机器翻译可以认为是一个新的范式,同时我们一直认为问答是一个特殊的机器翻译类型,从问题到答案我们认为一种语言到另一种语言的翻译过程,神经机器翻译可能会帮助我们构建一个自动的端对端的问答系统,聊天系统可以认为是特殊形式的问答过程,逻辑上使用sequence2sequence框架可以做聊天回复的自动生成。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

从NRG模型开始出现到现在,已经做了很多尝试。从最开始的encoder-decoder基础架构,到对于词语和短语级别等多个视角出发的模型架构,其目的就是为了自动学习query和response之间词语的语义关联。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

接着我们会考虑在sequence2sequence结构中引入attention机制,还会引入人的个性化信息和场景信息,使得生成的结果更加丰富。现在我们一直面临的主要问题是回复效果不够理想,其中一个主要的问题是safe response,字面意思是“安全回复”,指这些回复虽然安全但过于万能,没有区分度,这样用户的感受就会明显下降,对话进行不下去。

这是NRG模型使用的主要障碍之一。还有比如效率问题,模型构建的细节问题,这些问题是可能通过工程的方法去解决的,但是safe response问题需要我们从模型的角度去深入分析。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

这一页给出了几个简单的sequence2sequence模型的生成结果,左边是我们用英文的数据集做的生成,右边是中文数据集生成的。在实际的中文系统中,生成的多数都是“我也觉得”,“我也这样认为”,这肯定不是我们想要的。我们通过分析safe response产生的主要原因,提出了一个多样性的经验的假设,看怎么引进对抗学习的方法,提高回复的多样性。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

事实上,不管怎么去把模型花样翻新,结构多么复杂,都是统计机器学习模型,那么如果一个词语在结果中出现的概率很高,就需要给更高的输出权重。

这是我们在实际的训练数据上的词语频度的分布统计。这已经呈现出很长尾的现象,也就是说极少数的词以极高的频率存在,剩下的词出现的概率极小。假如一个query输入产生语义向量进行第一个词的生成的时候,我们会选择哪一个词作为第一个词呢?

首先确实需要考虑query的语义,但是相比于query语义的影响,这个词在概率上的影响会更大。第一个词会倾向于在答案里高频的词。也就是说,decoder实际上是一种在考虑前面encoder语义的条件下的语言模型。

所以词语的概率分布会主导decoder的过程。这个实际上是生成器陷入了一个不合理的优化状态,误差是一直在下降的,但这个优化是不合理的,我们要用外力把模型从不合理的优化中拉出来,找到更合理的优化状态。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

因此我们就提出了一个比较直观的方案,单纯最小化生成的误差会导致生成的结果出现问题。同时我们是可以训练一个模型去区分哪些是生成的response,哪些是真实的。一个简单的多层神经网络或CNN就可以做到,我们把它叫做判别模型。

我们想让它影响生成模型的每一步词语选择,比如在词语的选择过程中提醒什么词语更好,这是一个很朴素的方案,没有故意套用对抗学习,但是对抗学习确实会让我们的方案有了一个实现的途径。回到本源是这样的一个思维逻辑。

现在我们看怎么引入对抗学习达到刚刚提到的效果

640?wx_fmt=png&wxfrom=5&wx_lazy=1

这是一个生成式对抗网络,基本结构由两个模型组成。左边是一个分类器,负责区分哪些真实存在的,哪些是模型生成的。右边是生成器,通过输入随机的噪声去生成一个假的样本,交给判别器去判别。

在反复对抗的学习过程中,判别和生成样本的拟合能力都在提高。这个模型是2014年提出的,很快风靡Image Processing领域。

NLP中很多技术是从图像识别借鉴过来的。比如比较早的深度置信网络。最近的CNN在NLP里大量的使用了,包括大家熟悉的word embedding,根本的目的就是对词语进行实值的向量化,使得一段文本可以呈现类似图像实值矩阵的表现形式,方便挖掘更多的语义信息。

在做模型的推演的时候,在自然语言处理或语言生成里,应用对抗学习不是直接可行的。这是因为,在encoder结构里,每一次模型生成的时候其实就是选词,它是根据当前网络输出的词语的整个的概率分布,选一个靠谱的词语出来。很关键的是采样的时候是一个离散的过程,而生成图像是用随机的向量做实值的映射变换,这个过程是连续的。

采样得到的response表示作为结果交给判别器做输入,判别器做出判断然后形成的误差要反向传播到生成器,这个过程的可导性不能断,否则误差传不回去。

反向传播的时候如果有一个离散过程,训练就无法进行了,相应的参数不能更新。那怎么解决呢?我们可以考虑在判别器和生成器之间做一个桥接,最直观的方法是强化学习。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

这里补充说一个做paper 的idea的时候idea的选择问题。我们要看这个idea是不是大家第一反应想到的,实际的效果怎样和创新点是否充足。

强化学习不是不好,而是我们很难控制。对抗学习本身收敛的状态不好抓,强化学习reward的定义和生成器在输出有一个明显的数值上的gap,就更难去控制。所以在实际的实验中发现有效果,但是不突出。于是我们想的是直面不可导问题,想办法让整个模型一体化可导起来。

我们希望选择合适方法把离散过程替代掉,构建一个连续可导的生成器输入层,通过这个输入层直接连接生成器和判别器,相当于构造了能让反向传播直接传导的中间模块。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

假如模型训练得充分,生成器输出的是词语的概率分布,这个分布在训练理想的情况下,更接近一个one-hot的情况,也就是说,生成器每一步期望的输出应该是概率集中在少数几个词语上,那么实际上可以把生成器输出的概率分布做权重,通过对词表的加权求和得到当前词的近似表示,这样整个过程是连续可导的。这是一个很直观的想法。

这是这篇文章最核心的图,描述了刚刚所有的内容。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

下面这个区块我们称之为generator,对话生成器,负责接受query,encode成一个向量,一步一步生成一个词,最后的生成的结果交给判别器,判别器判断生成结果和实际response的区分度有多大,它是一个典型的CNN模型。如果不考虑细节的话,可以发现这是一个典型的对抗学习的结构。

我们做了一个近似的embedding层,在得到一个GRU隐藏层输出的时候累加一个随机向量,交给全连接层,通过softmax得到一个词表上的概率分布,和整个词表的word embedding做维度上的加权求和,得到当前生成结果的词语近似表示,排列起来得到回复的近似表示,通过区分这个近似表示和真实的response的表示训练整个对抗学习模型。

当然这是一个初步的尝试,后续大家还可以拓展。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

接下来我们把模型的细节拆开来看,上面经典的CNN模型我们不看,只看其余的部分。这张ppt里下面的公式描述的是在引入AEL之后decoder的hi,结合公式和图我们可以发现这个过程是将前一个时刻的隐藏层和前一个词的近似表示作为输入通过一个非线性变换得到当前的隐藏层的过程。

AEL的具体过程由右侧的图给出,大体上是将隐藏层hi和一个随机向量zi叠加在一起通过softmax,得到一个词表上所有词语的概率分布,然后使用这个概率分布对词表上中所有词语的embedding做加权求和,这个求和是按维度做的,从而就可以得到一个时刻生成词语的近似表示。

在介绍了前面的内容之后,我们再来看目标函数其实是比较清晰的,因为它就比较类似经典的对抗学习的形式。下面的公式给出了对抗训练的一些细节,从下面的公式我们可以看出来,我们设计的AEL层承载了反向传播通道的功能,可以让误差源源不断向下传。

当然这里面还有一些模型训练的细节:比如generator可以先pre-train一下,因为如果生成器完全随机初始化从头训练会有各种问题,所以我们可以先大体上确定一个generator,即使生成了大量的safe response也没有关系,这样的一个预训练的过程是必要的。

同时,判别器也可以pre-train一下,其他关于对抗训练的其他的一些细节问题还会在后面讲到。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

我们简单说一下现在生成式对话模型的评价方法。目前我们比较缺乏的是统一的评价方法和评价平台,同时,对话的评价主观性非常强,通常对于同一个回复来说,标注人员取得一致性的可能性比较低,这个和机器翻译的评价相比是一个显著的不同点。

现在常见的评价指标有以下三种,BLEUperplexity是从机器翻译借用过来的,那么ROUGE是从自动文摘借用过来的,其实我们并没有发展处特定的评价指标。现在的这些评价指标存在一定的误导模型的可能性,因此评价方法本身也是一个问题,大家感兴趣可以做一些研究。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

对话系统要注重的主要是两个方面,一个是query和response要有语义上的相关性,同时也要考虑回复结果的多样性。

我们这篇文章里采用了基于word embedding的三种metric对语义相关性进行量化,这三种指标都是之前用过的,也比较合理的;在多样性方面,我们采用了前人提出的dist-1和dist-2,同时也自己提出了一个Novelty的这样的一个指标,我们希望看到的是生成的结果内容比较新颖,取词的时候是不是取得常理词,并保证相关性。同时我们也做了人工的evaluation。

下面我们说一说数据集和baseline。现在常用的数据集中,中文方面大家比较常用的是贴吧的数据,当然要做一些清洗,英文方面Open Subtitle其实是电影的字幕,严格说不是对话的形式但大家普遍都在用。常见的数据来源还有Twitter,微博等。

我们用是贴吧和subtitle,其实我们的训练集的总量比较适中,有500万的query-response对,我们的validation是20万,测试是1万。

640?wx_fmt=png&wxfrom=5&wx_lazy=1
Baseline方面,我们做了下面几个baseline,一个是经典的Seq2Seq,encoder-decoder的结构。另外一种baseline是希望尽量把decoder部分的语言模型因素尽量的消弭掉,让相关性的因素更突出一些,所以他们用MMI来进行anti-language model的工作。

前面已经说过,可以通过RL把判别器和生成器关联在一起,这里我们采用的是Jiwei Li的方法。

前面我们也说过,期望得到的结果是要保证相关性时候尽量提高答案的多样性。下面这张表给出的是模型在中英文数据上,使用前面说过的relevance和diversity两方面的metric进行的评测结果。

我们可以看到,我们的GAN-AEL模型在相关性方面的提高并不算显著,但是在多样性方面具有非常明显的优势,这也是我们所期待看到的效果,那么后面我们也会给出一些例子。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

另外这里想讨论一下判别器的复杂度对收敛的过程影响有多大,从而我们也可以看出对抗训练的一些更加有趣的现象。

我们的模型采用CNN做判别器,那么CNN的复杂度主要体现在filter的个数以及宽度上,所以我们这里比较了一下四种filter的配置,看一下它们作为对抗学习判别器的情况下模型收敛的怎么样。

640?wx_fmt=png&wxfrom=5&wx_lazy=1
在这四种CNN中,效果最好的是两种宽度也就是图中黄色的柱状图表示的模型结果。最复杂的模型反而没有得到最好的效果,这个原因其实前人已经做了讨论,而我们印证了这个讨论——

在判别模型比较弱的情况下,它没有办法准确的分辨正例和负例,那么它会误导生成器的训练,这是没有什么疑问的;在判别器比较强的情况下,判别器收敛的会非常快,那它能给到生成器的指导就非常有限,也就限制了生成器的调优过程。

所以我们在实际训练的时候往往发现模型的收敛状态不太稳定,这就是一个因素,这方面的研究会更加深入下去。

最后我们看一下模型生成的一些例子,在给定一个query的情况下,我们对比一下经典seq2seq和我们的模型给出的结果,能发现我们的模型生成的结果内容会更丰富一些,也更加引人入胜一些。这是一个比较好的迹象,但是需要继续深入去做。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

最后是结论。生成式对话模型NRG有很多好的特性:首先是整体性好,因为只有一个端到端的深度神经网络,所以在实际工程部署的时候不需要考虑太多模块之间耦合的问题,同时如果模型出现问题也比较容易定位bug,另外很重要的是这样的架构不需要维护一个很海量的聊天语料库,所以它的应用前景是很广的,但首先要解决safe response的问题。

对抗学习对改进NRG的效果很直观,但是挑战很多,我们只是在一个方面做了一些工作。GAN和NRG同为新的研究方向,不可能说哪个模型把所有问题都解决了。

这是三角兽research team成立半年以来,在自动聊天领域的第二篇国际会议论文,也是第一篇顶级会议论文,接下来我们会持续努力。谢谢大家!

640?wx_fmt=png&wxfrom=5&wx_lazy=1
640?wx_fmt=png&wxfrom=5&wx_lazy=1

Q&A

1. AEL层是怎样实现判别器误差的反向传播的?

图像上是从0-255映射到[0,1]区间,所以是连续的,但是普通的文本生成过程中decoder是根据词语的概率分布,选一个词出来,文本中一个词就是一个label,是离散的,从数学上来讲,离散是不可导的,这也是很多图像应用到自然语言处理遇到的最大的问题。因为不可导就没法把其他信息传导回去。

我们提出的AEL实际上是把离散的词语通过近似表示的方法连续化了,前面的公式可以看到整个运算过程都是连续的,所以就可以把判别器的误差传播回去。

2. 判别器如何根据query和response给出判别结果的?query和response是直接拼接在一起的吗?

首先,判别器中有两个CNN(cnn-q, cnn-r)分别提取query和response(真实的和生成的) 的特征。然后,将query特征分别和真实的、生成的response特征拼接在一起,通过一个全连接网络判断response是来自于人还是生成器。在对话场景下,response和query的相关性是很关键的,因此我们将query和response拼接在一起,估计在query条件下一个response 是来自于人还是生成器。

3. AEL是基于softmax之后产生的概率对vocabulary size的embeddings在维度上进行向量的加权会不会耗时会很长?

这个时间开销是有的,但是我们首先要看这个思路和方法是否可能,然后再考虑工程方面的优化。

4. 强化学习的reward怎么定义?

强化学习的reward有不止一种的经验定义方法,比较直观的是,我们可以直接把判别器判断样本为真的概率取出来,直接作为reward,也可以考虑乘在sample词语的生成概率上,当然这种做法有一个问题,就是判别器的输出是0到1之间的概率值,通常是一个零点几的比较正常的小数,而词语的sample概率普遍比较小,一般是10的负几次方,那么这里就有一个数量级的gap,对结果是有影响的。

5. NRG是一种特殊的NMT,那NRG和NMT的区别在哪?

不考虑safe response的情况下,可以认为NRG和NMT的结构是相同的,问题在于从训练数据来看,比如说一句英文对应几句中文,基本上在语义上是完全平行可对应的。

对于NRG来说,一个query在语料里面可能对应非常多的回复,而且语义上没有直接一一对应的转换关系。还有就是高频词语的影响,机器翻译的数据如果我们观察的话,它在首词的分布上普遍比较均衡,没有展现出很极端的长尾的现象,拿encoder-decoder架构去套就可以差不多得出结果,但是对话生成的话就没有这么好的结果了。

6. 百度上爬取的数据可以直接用吗?

肯定是要去噪声,这里数据的质量取决于数据清理的力度和深度

7. 自动聊天模型的检索式和生成式会怎样发展?

工程上考虑功能实现的时候,一个要考虑效果的稳定性,另外一个是工程实现的难度和效率。我想说的是前沿技术的推进和工程实现是两码事。对于检索式架构和生成式架构来说,我认为不存在一个非此即彼的问题,二者一定是可以互相促进的。

感谢活动行对本次活动的独家报名支持。

相关学习资源

以上就是三角兽王宝勋的分享内容,在量子位微信公众号对话界面回复“170809”几个字,还可得到分享报告及视频回看地址。

本文作者:颜萌 
原文发布时间:2017-08-15
相关文章
|
1月前
|
机器学习/深度学习 编解码 人工智能
麻省理工AI新研究可将马赛克变视频
【2月更文挑战第30天】麻省理工学院等机构的研究团队推出AI新技术FeatUp,可将低分辨率图像提升为高清视频,该技术在2024年ICLR会议上引起关注。FeatUp基于深度特征提取,通过多视角一致性损失恢复空间信息,提高视频清晰度。模型通用性强,适用于多种任务和现有应用。实验显示,它在图像超分辨率和端到端学习模型性能提升上超越其他方法。然而,尚存在对某些内容处理不完善和计算资源需求高的局限性。
54 2
麻省理工AI新研究可将马赛克变视频
|
1月前
|
测试技术 网络架构 计算机视觉
中科院领衔发表首篇基于扩散模型的图像编辑综述
【2月更文挑战第17天】中科院领衔发表首篇基于扩散模型的图像编辑综述
17 1
中科院领衔发表首篇基于扩散模型的图像编辑综述
|
7月前
|
人工智能 关系型数据库 机器人
向量加成,亚运会文献AI培养
通过将历年来亚运的资料输入AI学习, 构建AI知识库问答应用
52 352
向量加成,亚运会文献AI培养
|
11月前
|
机器学习/深度学习 计算机视觉
大视觉模型方向,计算机视觉顶尖期刊 IJCV 特刊征稿
大视觉模型方向,计算机视觉顶尖期刊 IJCV 特刊征稿
153 0
|
11月前
|
机器学习/深度学习 存储 人工智能
NeurIPS 2022 | 中山大学HCP实验室在AIGC领域的新突破:有效表示多样化衣物的3D神经表示模型
NeurIPS 2022 | 中山大学HCP实验室在AIGC领域的新突破:有效表示多样化衣物的3D神经表示模型
|
11月前
|
机器学习/深度学习 存储 人工智能
当AI遇上量子化学,这是NeurIPS 2022挑战赛的冠军解决方案
当AI遇上量子化学,这是NeurIPS 2022挑战赛的冠军解决方案
|
11月前
|
机器学习/深度学习 编解码 人工智能
图像翻译哪家强?香港科技大学博士揭秘:预训练is All You Need!
图像翻译哪家强?香港科技大学博士揭秘:预训练is All You Need!
105 0
|
11月前
|
机器学习/深度学习 自然语言处理 算法
「扩散模型」首篇综述!谷歌&北大最新研究
「扩散模型」首篇综述!谷歌&北大最新研究
434 0
|
11月前
|
机器学习/深度学习 人工智能 编解码
DeepFake换头术升级:浙大新模型,GAN出一头秀发
DeepFake换头术升级:浙大新模型,GAN出一头秀发
222 0
|
机器学习/深度学习 编解码 算法
图像分割二十年,盘点影响力最大的10篇论文
【新智元导读】图像分割(image segmentation)技术是计算机视觉领域的个重要的研究方向,近些年,图像分割技术迅猛发展,在多个视觉研究领域都有着广泛的应用。本文盘点了近20年来影响力最大的 10 篇论文。
306 0
图像分割二十年,盘点影响力最大的10篇论文

热门文章

最新文章