博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
论文笔记|Undersensitivity in Neural Reading Comprehension
阅读量:4290 次
发布时间:2019-05-27

本文共 2402 字,大约阅读时间需要 8 分钟。

作者:孙嘉伟

单位:燕山大学


目录

 



该篇论文是 EMNLP2020 的一篇finding,作者:Johannes Welbl、Pasquale Minervini、Max Bartolo、Pontus Stenetorp、Sebastian Riedel。主要讲解现有模型存在对语义变化敏感度不足的问题,并针对该问题提出了一些解决方法。

论文链接:


1.解决的问题

现在的阅读理解模型在域内问题上的泛化效果较好但是在对抗样本上却表现不佳。先前的工作表明附加对文本语义变化无影响的扰动会导致模型预测错误,而该文中的工作侧重于:模型无法察觉到因为细微改变导致的问题/段落语义的变化,进而在回答该类问题时出错。

以下图为例,替换掉问句中的实体词后模型不但没有改变预测答案,输出的概率反而更高了。

将实体词Fort Caroline 替换为 Robert Oppenheimer  后生成对抗样例。

2. 针对语义敏感性的对抗方法

2.1添加扰动的方法

在本节介绍了生成模型无法察觉语义变化的对抗样例的方法,包括添加基于词性的扰动和添加基于实体的扰动。

2.1.1基于词性的扰动

使用与原文中词性相同的词语替换原文来添加扰动。具体在使用时会从数据集的段落中收集各种词性类型的词。

Who patronized the monks in Italy?  经过基于词性的扰动后被变换为: Who betrayed the monks in Italy?

2.1.2基于实体的扰动

替换原文中类别一致的实体词来添加扰动。与基于词性的方法相同,实体词也是从数据集的段落中收集得到。

Who patronized the monks in Italy?  经过基于词实体的扰动后被变换为:Who patronized the monks in Las Vegas?

2.2对抗样本生成

在了解了两种添加扰动的方式之后就可以进行对抗样本的生成了。文中记基于词性(Part-of-Speech)和实体(Named Entity)两种方式所产生的扰动空间为\chi _{\tau_{P} }(\mathbf{x})\chi _{\tau_{E} }(\mathbf{x})。所产生的扰动样本为\mathbf{​{x}'},原样本为\mathbf{x}。在寻找对抗样本时需要让\hat{y}(\mathbf{x})=\hat{y}(\mathbf{​{x}'}),即模型对两种样本的预测值相同。但扰动样本的寻找还不仅只需要预测值相等。记\Delta =P(\hat{y}|{x}')-P(\hat{y}|x)表示预测答案概率值的差值。如果生成的对抗样本满足\hat{y}(\mathbf{x})=\hat{y}(\mathbf{​{x}'})\Delta >0,那么就称之为一次敏感性攻击。寻找对抗样本的过程中用到了束搜索(beam search)算法。这里简单介绍一下束搜索算法:

束搜索是贪心搜索和穷举搜索的一种折中。以下图的机器翻译任务为例,I代表“我”,H代表“恨”,U代表“你”,在进行翻译任务时需要使用搜索算法找到全局最优解。beam search 束搜索算法包含有一个超参数beam size(束宽)b,在每次根据前文翻译结果x寻找下一步的最优解时,束搜索总是会选择概率最高的前b个结果作为当前最优进行下一步搜索,最终得到b个结果。

                                                                                                                                                                                                                                                                                                                                ——图片引用自

对应本文中的三个参数为b\eta\rho 分别代表束宽、搜索的token个数、搜索深度。为了方便大家理解,以上图中的任务为例,具体说明三个参数的意义。在该任务中只有三个字(词,I、H、U),所以\eta的值为3,又因为最终也要生成三个字(词),故搜索深度\rho也为3,在每次选取时选取了2个结果,其束宽b为2。束搜索会不断进行直到找到一个对抗样本使得\Delta >0,下图展示了不同参数下束搜索的效果。

3.实验分析

这部分我们主要分析该论文提出的搜索对抗样本的方法的效果以及使用数据增强和对抗训练进行完善的模型在通用数据集上的效果。

了解了寻找对抗样本的方式后,作者统计了使用该方法寻找到的对抗样本的效果,如下图所示。可以看到使用基于实体的扰动的方式产生的对抗样本有效率更高,而使用基于词性的的方式生成的对抗样本只有大概一半的有效率。

下表展示了数据增强和对抗训练对于文中定义的“不敏感”问题的影响。从论文当中的数据可以看到,在不影响准确率的情况下“不敏感”问题的错误率有着显著的下降。但个人认为论文当中的结果并不全面,该实验结果是SQuAD2.0 dev集上的结果,其中可回答的问题与不可回答的问题比例大约50%;50%。由于数据增强和对抗训练会导致模型回答UNKNOW问题的能力提高的同时也影响了有答案问题的抽取。故如果可回答和不可回答的问题的比例发生改变,其中最终结果也会发生变化,不能说两种方法对准确率没有影响。

 

4. 改善方法

文中提到了解决“不敏感”问题的两种方法,下边介绍一下两种方法。

4.1数据增强

NLP领域数据增强主要依靠于语义不变性,常见方法:词汇替换、回译、字面转换、随机噪声注入等。下边是数据增强的一个例子:

 说到数据增强就不得不提一下现在大火的对比学习了。对比学习是自监督学习的一种,自监督学习包括Generative Methods(生成式方法)和Contrastive Methods(对比式方法)。对比学习的目标是区分两个实例是否是由同一个源数据采样/增强得来,如果是,让它们在表示空间中越接近;如果不是,让它们在表示空间中远离: 

 对比学习的优化目标InfoNCE:

 细心的同学可能发现了其实这就是一个交叉熵函数(softmax+nll),分子和分母可以分别体现对比学习的主要思想:拉近“Alignment”的同时,使“Uniformity”尽可能的提高。

4.2对抗训练

对抗训练的过程就是针对每个样本生成对抗样本进行训练的过程。对抗训练可以概括为以下公式:             

                                                                                                                                                 \LARGE min_{\theta }\mathbb{E}(\mathbf{Z},y)\sim D[max_{\left \| \delta \right \|\leq \epsilon }L(f_{\theta }(\mathbf{X}+\delta ),y)]

其中 X 表示样本的输入表示,δ 表示叠加在输入上的扰动, f是神经网络函数,y是样本的标签,L(f(X+δ)+y)则表示在样本X上叠加一个扰动δ,再经过神经网络函数,与标签y比较得到的损失。 max(L) 是优化目标,即寻找使损失函数最大的扰动,简单来讲就是添加的扰动要尽量让神经网络迷惑。但δ的大小也要保持在ϵ内,否则就不是微小扰动了。

转载地址:http://qqmgi.baihongyu.com/

你可能感兴趣的文章
Android内存泄露的原因
查看>>
Java并发总结
查看>>
JavaScript筑基篇(二)->JavaScript数据类型
查看>>
干货:Java几种线程池的分析和使用。
查看>>
避免在Java接口中使用数组的3个理由
查看>>
android 自定义带动画的统计饼图
查看>>
入职必备,Android 真实面试题(内有答案)
查看>>
JavaScript 日期处理类库---Moment.js
查看>>
仿斗鱼直播的弹幕效果实现
查看>>
Android(Java)中的Object
查看>>
Java反射机制——学习总结
查看>>
Android大图片处理
查看>>
如何将util.Date转化为sql.Date
查看>>
Java笔试题及答案
查看>>
这是一个挺有意思的Java讨论话题
查看>>
没错!java中private字段也是可以访问D!
查看>>
安卓:文本框TextView/EditText的开源库清单
查看>>
Android中Xposed框架篇---利用Xposed框架实现拦截系统方法
查看>>
腾讯老司机的RecyclerView局部刷新爬坑之路
查看>>
JavaScript null 和 undefined
查看>>