加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 经验 > 正文

百分点认知智能实验室出品:智能问答中的对抗攻击及防御策略

发布时间:2020-05-01 16:19:09 所属栏目:经验 来源:百分点
导读:副标题#e# 深度学习模型应用广泛,但其自身有一定的脆弱性,即模型输入的微小改动,在不影响人判断的情况下,可能使模型的输出出错,这个过程被称为对模型的对抗攻击。针对对抗攻击的研究,早期集中在图像领域,近几年,文本领域也逐渐增多。2019年,百分点

针对文本对抗攻击的防御策略主要包括两个方面,一方面是去发现对抗样本,比如有一些对抗攻击,是将文本中的字改成音近字、形近字或错字,可以检测包含这类异常字的文本,然后对其做额外的处理;另一方面是对模型进行对抗性训练,包括在训练样本中加入对抗样本,对损失函数和模型结构进行改动等,本次大赛方案中有一些应对对抗攻击的策略,具体在下面章节介绍。

五、DIAC大赛方案分享

DIAC大赛优胜队伍普遍选择RoBERTa_wwm作为语义等价任务的基础模型,即将两个问题拼起来,进入模型,然后选择[cls]位置对应的向量,经过一个全连接层和softmax操作,输出在2个类别上的概率。在模型训练之前,进行了对抗样本的数据增强;在模型训练阶段,采用FocalLoss作为损失函数,利用Fast Gradient Method(FGM)在embedding层上添加扰动;在测试集上作预测时,对疑似对抗样本进行纠错。

5.1 数据增强

根据对抗样本举例,通过以下方式进行了数据增强:

方法一:音近字替换、形近字替换、同义词替换、词序调整。用开源的音近字、形近字、同义词词典,以一定比例对问题中的字或词进行替换,同时限制一组问题中替换的总字数小于3,或以一定比例对问题中的词语词序随机调整,限制最远的词序调整,两个词汇间隔不超过2个词。

方法二:反义词替换、增加或删除否定词。以一定比例进行将问题中的某个词替换为反义词、增加或删除问题中的否定词,如:“未”、“没有”、“无”、“非”,并修改样本标签。

方法三:用开源的错别字校正工具,对问题进行校正,矫正结果矫正错误率接近100%,但错误矫正只影响1-2个字,不影响对问题的理解,故可以用这种方式生成对抗样本。

通过上面的一种或几种方式,进行数据增强,训练的模型与不进行数据增强相比,在最终测试集上的宏F1值有约1.5~2个百分点的提升。

5.2 智能纠错

针对对抗样本特点,有下面几种纠错方式:

方法一:召回与待纠错问题相似的问题,对比相似片段,进行纠错。具体做法是:以两个问题分词集合的差集中包含的词语数目作为二者相关性的一个度量。对一个问题,从整个数据集合中,召回一些和它相关性较高的问题。相关问题召回后,接着对原问题与相关问题进行共现的相似文本片段查找,文本片段相似采用汉明距离作为度量,由于一般对抗样本中错别字都只有一个,若是有两个错别字一般都是连在一起的,因此将汉明距离小于2且满足不同字必须连续做为判断相似文本片段的依据。

相似片段找到后,对相似片段的每个位置进行一一对比,如果不同,考虑这两个字是否是同音字,如果不是同音的字再考虑是否是形近字,若都不是就不进行纠错。判断是否同音采用一个汉字转拼音的模块,同形的判断采用笔顺的编辑距离作为相似度的判断,同音或同形的错别字在相似文本片段中的位置确定后,接下来就是确定两个文本片段哪个有错别字。通过对相似片段分词,然后计算所有词的在训练集中出现次数的总和,判定总和小的片段包含错别字,然后用总和大的对总和小的进行修正。

方法二:统计问题中词语上下文的ngram,根据ngram为对抗样本中的错误词语寻找纠错建议。具体做法为:对问题进行分词及词性标注,对具有词性为m、nr、ns、nt、nz、r、x、w的词替换为对应的词性标记。对每个词语,分别统计上文的一、二、三元ngram和下文一、二、三元ngram共6个词条,添加到ngram词表里。在纠错阶段,对问题中的词W,利用其上下文的6个ngram词条和前一步统计的ngram词表,获得纠错的候选词及候选词的词频,基于拼音编辑距离,计算候选词与词W的拼音相似度。按照如下公式,进行候选词得分计算:

百分点认知智能实验室出品:智能问答中的对抗攻击及防御策略

其中x为候选词,c为原错词,d为词表,为候选词的词频,为候选词与原错词的拼音相似度数,为对应的词表字典的权重。对所有候选词按照分值从大到小进行排序。取前N(这里取N为10)个,如果存在候选词与错词的编辑距离小于等于1,则优先返回这个候选词,否则返回所有候选词分值最高的词。

方法三:将测试样本中两个句子中的同音字或形近字相互替换。当句A中连续两个字的读音与句B中连续两个字的读音相同时,可以用B中的同音字替代A中同音字,构造句A',那么A'与B即可组成样本[A',B]。同理可以构造[A,B'],它们与[A,B]共同组成一组测试样本,用训练好的模型预测这组测试样本,预测结果只要存在一个正样本,即认为原测试样本为正样本。

通过上面的方式,对测试集进行纠错,预测结果的宏F1值有约2~3个百分点的提升。

5.3 Focal Loss

在给出的训练集中,正负样本比例较不平衡,适合采用Focal Loss作为损失函数。Focal Loss公式如下:

百分点认知智能实验室出品:智能问答中的对抗攻击及防御策略

通过设定α的值来控制正负样本对总的loss的共享权重,α取比较小的值来降低多的那类样本的权重,通过设置γ来减少易分类样本的权重,从而使得模型在训练时更专注于难分类的样本。

实验表明,使用Focal Loss相比于不使用FocalLoss作为损失函数,验证集预测结果的宏F1值有约0.5个百分点的提升。

5.4 Fast Gradient Method

对抗训练采用的是Fast Gradient Method(FGM),其目的是提高模型对小的扰动的鲁棒性,扰动添加在bert模型的字向量上。对于分类问题,具体做法就是添加一个对抗损失:

百分点认知智能实验室出品:智能问答中的对抗攻击及防御策略

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读