点击蓝字

关注我们

AI TIME欢迎每一位AI爱好者的加入!

自然语言处理领域有很多序列对序列任务,比如我们常见的机器翻译、语义解析、文本摘要等。目前最基本的解决方案是收集大量成对的数据,然后训练一个编码器解码器架构的模型。但是近两年来,研究者们注意到一个非常严重的问题,就是这样训练出的序列对序列网络不具备组合泛化能力。本文介绍北大硕士郭一诺在这方面的两篇工作:第一篇是从方法的角度,提出层次化偏序解码模型,来提高语言的组合泛化能力;第二篇是从数据的角度,探究单语言数据能给模型的组合泛化能力带来怎样的帮助。

郭一诺:北京大学计算语言所硕士三年级,主要关注语言解析,自然语言生成,组合泛化等话题。目前以第一作者的身份在AAAI, NeurIPS等会议发表多篇论文。

一、背景

什么是组合泛化能力?

从一个简单的序列对序列任务看起:把一个自然语言句子转换成动作序列,比如输入run twice,希望转换出RUN RUN这样的动作序列。输入jump and walk,输出JUMP WALK序列。给定前面两个例子,人类很容易推理出对应的动作序列JUMP JUMP RUN,但现有的序列对序列模型很难做到。

这个例子背后的本质是现有模型缺乏组合泛化能力。如果训练数据中存在a和b这两个原子,但没出现它们的组合,那么遇到a和b组合的情况,人类也能给出答案。组合泛化能力是人类智能非常基础的能力,即乔姆斯基说的有限资源的无穷利用。但是现有模型不具备这种能力,这就带来了极大的困扰,也是近几年来备受关注的研究点。

衡量模型的组合泛化能力

为了衡量模型的组合泛化能力,一些研究工作也随之出现。研究员们提出让训练集和测试集来自不同的分布,以这此划分数据。比如有个问题模板是who do something,在训练数据中和direct之类的动词同时出现,但在测试过程中问题模板只和produce之类的动词出现,这就保证了测试集和训练集包含相同的原子,但组合方式的分布完全不同。

我们使用了2020年 Google提出的CFQ数据集,这是一个大规模的真实的自然语言问答数据集,是用来衡量组合泛化能力的benchmark。具体的数据形式是将输入的自然语言转化成spark查询语句,spark是Free base知识图谱上的结构化查询语句。下图是一个随机划分的数据集,它能达到约98%的准确率。

但是当我们按照组合性的准则来划分我们的数据集,它的准确率就只掉到了17%、18%左右。因此,现有的语义解析任务用到的模型并不具有组合泛化能力的,或者说具有较弱的组合能力。

、两篇研究工作

今天介绍我们在这方面的两篇工作:第一篇是从方法的角度,提出层次化偏序解码模型;第二篇是从数据的角度,探究单语言数据能给模型的组合泛化能力带来怎样的帮助。

1. 方法:层次化偏序解码

第一篇是今年发表在nips上的工作,这篇工作的原理是基于语义具有置换无关性的显著特征。

我们认为,目前的语义解析模型忽略了语义具有潜在置换环境(potential permutation environments)的特点。事实上,一些成分的不同排列所表达的是相同语义。比如给出如下的检索语句,我们可以在数据库中检索到相同的答案。尽管不同的三元组之间顺序有所变化,但进行任意置换都不会影响最终检索出来的结果。这种特性叫部分置换无关,在语义中其实扮演非常重要的角色。

举个例子,图中给出的seq2seq和seq2tree模型,红色的虚线指向produce和found,我们可以看到found是在 produce解码之后才去解码,但是本身这两个条件是平行的。由于在解码过程中将它们建模成了一个序列,使得两者具有一种无须模型学习的额外的顺序关系,被模型强制拟合。这其实是我们训练数据中不必要的统计的偏置,会增加模型训练的难度,导致无法很好地学习到模型的子结构,从而限制模型的组合泛化能力。

为了解决这个问题,我们提出在解码的过程中,将语义建模为一个偏序集(poset,partially ordered set),对于这种置换无关的成分,采用一种平行解码的方式。

我们可以把语义看成偏序集,也就是一个DAG图或者拓扑图。底下有person、edit、produce这三个token,属于一种相对独立的关系。因此,在解码的过程中,由于置换无关性,它们应该是用一种平行的方式解码,从而更好地建模每个相对独立的结构,让模型更好地理解语义本身。

具体来说,我们提出层次化的偏序解码方式(Hierarchical Poset Decoding),主要包括三个部分:左上的部分是原子预测,右上的部分是骨架预测,最底下的是链路预测。给定一个自然语言的句子,我们首先进行上面两部分的预测,这样自然而然地就利用了偏序解码的方式,这里面会进行原子的抽象,这就是hierarchical的机制。也就是说,一方面,我们会对一些具体的谓词、实体等进行抽象,从而预测偏序的骨架;另一方面,根据我们输入的自然语言进行原子成分的预测,比如预测可能出现哪些谓词和实体,最后得到一些候选的原子。

第三步是链路预测,将预测出来的骨架和原子进行拼接,这其实是一个分类任务,对可以组成的多条候选路径进行二分类,预测哪些链路和输入的自然语言是一致的。

最后我们相当于得到若干条预测出来的可行路径,再把这些链路进行拼接,可以叫做一条条叶子,每条叶子都可以拆出一条单独的路径,也就是我们在第三步预测出来的每条可行的链路。相当于对它们进行一个前缀的合并,最终得到目标偏序集合,这就是我们模型的整体框架。

我们在CFQ数据集上评估我们提出的HPD模型,实验结果表明该模型显著优于现有的解码器。

总结一下,这篇工作其实主要是从模型的角度,利用语义中偏置无关的特性,来提高语言的组合泛化能力。我们将语言的部分置换不变的特点融入模型结构中,从而避免模型过拟合于训练数据中的顺序偏置信息。另外,我们使用了层次化机制,对不同粒度的谓词、实体等变量进行多层化建模,让模型更好地理解偏序集的高层语义结构。

2. 数据:单语言数据的潜力

第二篇工作是从数据的角度探究了单语言数据的潜力,对组合泛化能力的帮助。这篇工作发表于今年的AAAI。

这篇工作的思路其实非常简单,我们知道平行数据的标注成本很高、数量也有限,单语料数据则相对容易获得。在数据资源短缺的时候,半监督学习是一种非常高效的学习方式。

因此,我们引入更多的单语言数据,利用迭代回译(Iterative Back-Translation,IBT)的技术,来提高模型的组合泛化性能。

我们训练一个从源端到目标端的正向模型,同时训练一个从目标端到源端的反向模型,反向模型和正向模型互相为对方生成伪平行数据。利用IBT在迭代过程中不断更新平台数据,质量不断提高。

这篇工作更偏向于实验分析,去探究IBT背后的一些关键影响因素。

有三个研究问题:

(1)IBT到底能否提高模型的组合泛化能力?

(2)基于实验结果,探究背后的关键因素是什么?

(3)基于探究到的关键因素,能否基于这些关键因素去进一步提高我们IBT的性能?

我们的数据集主要是前面已经介绍过的CFQ和组合泛化领域的经典测试基准SCAN。第一步的实验结果可以看右下角的这张图,结论是IBT确实可以提高模型的组合泛化能力。

第二步是探究背后的关键因素。在这之前,我们首先对迭代过程生成的尾平行数据的质量做了分析,可以看到生成的数据质量是随着训练的不断进行而不断提高的。在迭代过程中,模型会不断修复最开始的噪音和错误,最终达到收敛的结果。在大概3万个step之后,无论是Accuracy还是BLEU,都上升到较高的值,说明平行数据的质量在不断提高。

我们进一步做了两个对比实验,首先我们在这里对比了一个标准的去掉迭代过程的back-translation,使用的是一开始质量较差的伪平行数据,直接和平行数据进行混合,来训练我们的模型。第二个实验想探究随机性给模型带来的影响,因为我们知道在迭代过程中,每轮都会有新数据的生成,这其实涉及到了一个随机性的引入。我们只用平行语料去训练反向模型,持续为正向模型生成伪平行数据,这里面其实保留了迭代的过程,但是生成数据的质量是一样的,也就是用相同质量但不完全一样的数据去训练模型。

具体得到了两个实验结果,我们可以看到第一个蓝色BT是用标准的back-translation得到的结果。第二个深蓝色是随机性实验得到的结果。无论哪个实验,都会相比于baseline也就是用平行数据去直接训练模型有所提升,当然随机性带来的提升是更大的。

我们分析,背后的第一个原因主要是即使数据中有很多错误,但是带给模型更多的unseen combinations,即模型中本来没有的组合,这种正向效应大于数据本身包含的错误,所以整体还是会提升模型的组合泛化能力。

第二点关于随机性,尽管数据质量不是很高,但每一轮的数据是动态生成的,也就是说每轮生成的数据尽管都有很多错误,但这些错误并不相同,这就帮助模型不去拟合那些具体的错误偏置,而是更多地关注这些数据中共有的部分,这就会提高模型的表现。

我们提出了一种基于课程学习的IBT,帮助模型更高效地改正数据中的错误。具体做法是把数据按照难度分为k等,然后在整个训练过程中依次按照难度去增加数据,最开始加入的是最简单的数据。

我们知道简单的数据,对于模型而言,生成的数据错误也相对较少,随着训练过程的不断继续,模型的能力不断提升,就能够解决一些更难的问题。其实相比于直接去加入数据来说,它会在这种错误修正上更有效率,这是一种上台阶似的不断累积的过程。

实验结果可以看出,左边的这张图代表基于课程学习的方式,能够给迭代回译技术带来很大的帮助。右边是我们划分的数据的不同难度,可以看出对于较难的数据它的帮助是更大的,这也是符合我们预期的。

最后,总结这篇关于数据部分的、偏实验分析性质的工作。第一,实验表明迭代回译技术是能够显著提高模型的泛化能力的。第二,我们归纳出背后的三个原因:一是加入了很多未出现的组合,扩大了模型对数据分布的认识;二是整个迭代的过程中,IBT能够持续不断地提高生成伪平行数据的质量,从而更好地帮助模型提高表现;三是随机性的引入可以帮助模型不去过拟合错误偏置,从而带来较好的效果提升。基于我们分析的关键因素,我们提出了一种更高效的帮助模型修正错误的方式,基于课程学习的迭代回忆技术,帮助模型进一步提升表现。

论文链接:

https://arxiv.org/pdf/2012.04276.pdf

https://arxiv.org/pdf/2010.07792.pdf

整理:涂宇鸽

审稿:郭一诺

排版:岳白雪

AI TIME欢迎AI领域学者投稿,期待大家剖析学科历史发展和前沿技术。针对热门话题,我们将邀请专家一起论道。同时,我们也长期招募优质的撰稿人,顶级的平台需要顶级的你!

请将简历等信息发至yun.he@aminer.cn!

微信联系:AITIME_HY

AI TIME是清华大学计算机系一群关注人工智能发展,并有思想情怀的青年学者们创办的圈子,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法、场景、应用的本质问题进行探索,加强思想碰撞,打造一个知识分享的聚集地。

更多资讯请扫码关注

(直播回放:https://b23.tv/mhgMUF)

(点击“阅读原文”下载本次报告ppt)

基于语义解析任务探究深度模型的组合泛化能力相关推荐

  1. 知识问答(KBQA)两种主流方法:基于语义解析和基于信息检索的方法介绍

    什么是知识问答 基于知识的问答是以知识库为认知源,在知识库的基础上回答自然语言问题. 知识库(KB)是一个结构化数据库,其中包含形式<主题,关系,对象>的事实集合,每个事实都可以随附所谓的 ...

  2. 5分钟NLP-知识问答(KBQA)两种主流方法:基于语义解析和基于信息检索的方法介绍...

    来源:DeepHub IMBA 本文约1200字,建议阅读5分钟本文介绍了知识问答的两种主流方法. 什么是知识问答 基于知识的问答是以知识库为认知源,在知识库的基础上回答自然语言问题. 知识库(KB) ...

  3. Transformer性能被高估?DeepMind动态评估模型的时间泛化能力

    ©PaperWeekly 原创 · 作者 | 王馨月 学校 | 四川大学 研究方向 | 自然语言处理 论文标题: Mind the Gap: Assessing Temporal Generaliza ...

  4. 我来说话你来查,智能代码新技术!语义解析专场干货

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 一直以来是,语义解析(Semantic Parsing) 都是自然语言处理领域一个非常基础且重要的研究问题.通俗来讲,语义解析旨在让计算 ...

  5. 深度学习WideDeep模型——记忆能力和泛化能力的综合

    文章目录 Wide&Deep前言 模型的记忆能力与泛化能力 Wide&Deep模型的结构 Wide&Deep前言 Wide&Deep模型的主要思路正如其名,是由单层的W ...

  6. 深度模型从研者 眼里的 似然估计 Hessain 海森矩阵 Fisher Information (费雪信息)...

    2019独角兽企业重金招聘Python工程师标准>>> 深度模型的训练的基本依据是最小化模型拟合数据的误差.旨在不仅知其然(如何构建和训练一个深度模型),还应知其所以然(为什么这样训 ...

  7. ICLR2020 | 谷歌最新研究:用“复合散度”量化模型合成泛化能力

    2020-03-11 18:13:47 据官方消息,ICLR 2020会议将取消线下会议,并于4月25日-30日线上举办虚拟会议.本届会议共有 2594篇投稿,其中 687篇论文被接收(48篇oral ...

  8. 基于Go的语义解析开源库FMR,“屠榜”模型外的NLP利器

    (由AI科技大本营付费下载自视觉中国) 作者 | 刘占亮 一览群智技术副总裁 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 如何合理地表示语言的内在意义?这是自然语言处理业 ...

  9. 基于深度学习实现语义识别和问答判断模型及算法优化-制造业-CSDN公开课-专题视频课程...

    基于深度学习实现语义识别和问答判断模型及算法优化-制造业-1685人已学习 课程介绍         本次课程,邀请IBM研究院讲师就制造业语义识别及判断模型搭建.QA模型.词向量.句子量化.POWE ...

最新文章

  1. Rman--备份命令
  2. linux find 删除文件夹,linux中find与rm实现查找并删除目录或文件linux操作系统 -电脑资料...
  3. JAVA中的命令模式实例教程
  4. THINKPHP中使用swoole
  5. css除法,CSS_关系数据库 除法,假设有两个关系,R(a,b,c)和T(b,c - phpStudy
  6. 实现DRBD的简单配置
  7. 用极大化思想解决最大子矩形问题
  8. 在git提交时输错密码,怎么办?
  9. 《并行计算的编程模型》一2.3.2 段信息
  10. 计算机教室布线施工方案,最新计算机教室施工方案.docx
  11. 突发奇想!自动化测试在测试过程中该怎样提升效率?
  12. 关于微软Bing搜索语言无法更改的问题
  13. 在线绘图网站文图使用教程
  14. 带有数字化伪装外观,全新ID.7轿车即将全球首发
  15. 通读cheerio API
  16. 使用Maya和Substance Painter制作一辆越野赛车(1)
  17. 新恒结衣为什么是中国程序员共同的老婆?
  18. 云计算、大数据和人工智能的由来和关系
  19. Android蓝牙初始名称修改(高通平台)
  20. 网络编程 socket函数参数介绍

热门文章

  1. 微信生态爆发:流量的狂欢与红线
  2. 一文读懂:私有云与公有云、混合云有什么区别?
  3. 如何通过网关做服务编排?
  4. python在园林中的应用_园林景观要素在园林中的应用
  5. 【矩阵与线性变换及协方差矩阵】
  6. php短租平台通用物品租赁系统
  7. Day346347348349
  8. unpickling stack underflow
  9. (第三回合)回龙观大叔狂磕mysql
  10. MSP432的串行通信