biendata Adversarial-Attack-master任务

任务简介

虽然近年来智能对话系统取得了长足的进展,但是针对专业性较强的问答系统(如法律、政务等),如何准确的判别用户的输入是否为给定问题的语义等价问法仍然是智能问答系统的关键。举例而言,“市政府管辖哪些部门?”和“哪些部门受到市政府的管辖?”可以认为是语义上等价的问题,而“市政府管辖哪些部门?”和“市长管辖哪些部门?”则为不等价的问题。
其中问题介绍中提到一件事
针对问题等价性判别而言,除去系统的准确性外,系统的鲁棒性也是很重要、但常常被忽略的一点需求。举例而言,虽然深度神经网络模型在给定的训练集和测试集上常常可以达到满意的准确度,但是对测试集合的稍微改变(Adversarial Attack)就可能导致整体准确度的大幅度下降。
我觉得这和bert的mlm模型有些相似,所以在训练时,可以加入一些随机扰动。目前想法有两个。

  1. 一个是和bert一样使用遮盖模型和随机替换,在随机替换是可以考虑替换成同义词。
  2. 第二个是在encoder的向量中加入一个随机的噪声,用来模型数据的输入变化。

目前的方法

  1. 使用bert模型后面接一个分类层,用来计算二者是否等价。
    这是基线模型,按照讨论区的说法应该可以达到90%的精度。
  2. 使用text2image的思路,对于两个句子的embedding计算相似度,从而得到一个相似度矩阵,然后把它当成一个图像来进行后续的操作。
  3. 目前的做法就是采用text2image的思路,先使用bert的12层embedding分别计算连个句子在每一层embedding的相似度,然后得到十二张图片,后面接多个inception模块,最后进行一个平均池化,然后计算两个句子的相似度。

具体的做法

  1. 数据预处理,文档格式如下。
<Questions number="0">
	<EquivalenceQuestions>
		<question>什么是公益诉讼?</question>
		<question>公益诉讼的定义?</question>
		<question>公益诉讼的概念</question>
		<question>公益诉讼的定义是什么?</question>
	</EquivalenceQuestions>
	<NotEquivalenceQuestions>
		<question>环境公益诉讼的原告是什么意思?</question>
		<question>什么样的鉴定依据算是民事公益诉讼</question>
		<question>检察机关提起公益诉讼是什么意思</question>
		<question>什么是行政诉讼?</question>
		</NotEquivalenceQuestions>
</Questions>

生成训练集的方法如下,对于等价问题,取任意两对等价问题集合中的数据生成训练集,对于不等价问题,取等价问题中的一个和不等价问题集合中的一个生成一对训练数据。
bert预训练数据的生成问题,个人认为这个文档中没有很好的上下文信息,对于next sentence的任务,生成的训练数据应该有自己生成,等价问题即可设置为next sentence,不等价的一对设为负例,但是还没有编程实践,如果大家有更好的方法可以和我讲。

  1. 模型设计的原因
  • text2image 的思路,在以前文本匹配中就被提出过。
  • 取bert模型的不同层可以融合不同层次的语义分别计算。
  • 采用inception 模块是由于之前看过n-gram做文本匹配,inception中不同大小的卷积模块可以看做分别对不同级别的gram做了一次相似度计算。

你可能感兴趣的:(深度学习)