博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【论文笔记】
阅读量:4289 次
发布时间:2019-05-27

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

Improving Answer Selection and Answer Triggering using Hard Negatives
作者:李瑾
单位:燕山大学



目录

一、概述

  答案选择和答案触发是基于选择的问答的两个子任务。答案选择有一个前提假设-----对于所有的问题候选答案集中都至少有一个正确回答;而答案触发则更接近于我们的真实世界,对于某一问题,在候选答案中可能不存在正确回答。

  这篇文章主要从以下三个点在这两个任务上做了改进。即本文的三个创新点

  • 使用孪生神经网络(siamese network)使问答无交互,提供低延时
  • 在答案选择任务中使用triplet loss损失函数,在答案触发任务中使用quadruplet loss损失函数
  • 在训练过程中选择难负样例(hard negative)

二、数据集选择

  作者选择了三个数据集(InsuranceQA 、SelQA、LargeQA)来验证选择难样例对于提高模型性能的有效性,以及孪生神经网络+triplet loss/quadruplet loss + 难负样例组合对于提升模型性能的作用。

  其中,InsuranceQA是一个特定领域的问答数据集,其余两个都是开放域问答数据集。SelQA数据集是2016年发布的用来验证答案选择和答案触发的数据集,LargeQA数据集是使用社区问答构建的数据集。

三、方法

3.1 难样例(Hard Negative)选择

  作者使用余弦相似度计算问答之间的相似度,从中选择相似度最高的负样本作为难样例。公式如下:

S ( x , y ) = c o s i n e ( f ( x ) , f ( y ) ) (1) S(x,y) = cosine(f(x) , f(y))\tag1 S(x,y)=cosine(f(x),f(y))(1)
a i H = a r g m a x j : a j ∉ A q i , 1 ⩽ j ⩽ b ( S ( q i , a j ) ) ) (2) a_{i}^{H} = \underset{j:a_{j}\notin A_{q_{i}},1\leqslant j\leqslant b}{argmax}(S(q_{i},a_{j})))\tag2 aiH=j:aj/Aqi,1jbargmax(S(qi,aj)))(2)

  公式(1)问题和答案分别经过孪生神经网络(表示为 f f f)独立编码, S S S表示余弦相似度。

  公式(2)中 a i H a_{i}^{H} aiH表示难样例,在选择难样例的过程中,只计算问题( q i q_{i} qi)和非正确答案( a j a_{j} aj)的相似度,这里的b表示的是一个batch size的大小。

3.2 Triplet Loss损失函数

L t r i p l e n t = m a x ( 0 , m − S ( q , a + ) + S ( q , a − ) ) (3) L_{triplent} = max(0,m-S(q,a^{+})+S(q,a^{-}))\tag3 Ltriplent=max(0,mS(q,a+)+S(q,a))(3)

由这个公式可以看出,当问题与正确回答的相似度小于问题与非正确回答的相似度时损失函数值增大,在训练过程中为降低损失函数值逐步使得问题与正确答案的相似度大于与非正确答案的相似度。

3.3 Quadruplet Loss损失函数

L q u a d = m a x ( 0 , m 1 − S ( q , a + ) + S ( q , a − ) ) + m a x ( 0 , m 2 − S ( q , a + ) + S ( q ′ , a − ) ) (4) L_{quad} = max(0,m_{1} - S(q,a^{+})+S(q,a^{-})) + \\ max(0,m_{2}-S(q,a^{+})+S(q^{'},a^{-}))\tag4 Lquad=max(0,m1S(q,a+)+S(q,a))+max(0,m2S(q,a+)+S(q,a))(4)

  与Triplet Loss类似,区别在于对于当前问题,当问题与正确回答的相似度小于问题与非正确回答的相似度时损失函数值增大,当当前问题与正确答案之间的相似度小于问题域中其他问题与当前问题非正确回答的相似度时损失函数值也会增大,这就意味着在训练的过程中还要求当前问题与正确回答的相似度要高于其他问题与当前问题非正确回答的相似度。

四、实验和分析

4.1 孪生神经网络的选择

  作者使用三种孪生神经网络进行了实验:

  1. LSTM-CNN:首先将句子向量输入CNN中,然后通过最大池化(Max-Pooling)或者最大最小池化(Max-Min-Poolingooling)生成定长的特征向量输入LSTM中。
  2. bag-of-words model:通过对于维度的词向量获得句子特征。
  3. Transformer encoder

4.2 实验结果和分析

表1
表2
表3

  表1是作者提出模型在InsuranceQA数据集上的实验结果对比,表2是在LargeQA数据集上的实验结果,表3是在SelQA数据集上的实验结果。可以看出,选择难样例要比随机选择负样例的模型性能好,同时,在InsuranceQA数据集上使用Transformer encoder+Hard Negatives的效果最好。

  观察在三个数据集上的实验结果可以发现,使用难样例在特定领域的数据集InsuranceQA上的提升效果最好,可以说明该方法更适用于特定领域。

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

你可能感兴趣的文章
Log4j容器深入探究
查看>>
记glide框架使用中所遇到的问题
查看>>
学习AOP之透过Spring的Ioc理解Advisor
查看>>
Jquery一个简单的注册验证
查看>>
SpringMVC基础_ControllerAdvice
查看>>
Toast还能显示图片你知道么?
查看>>
安卓三状态切换按钮TriStateToggleButton
查看>>
Spring框架-AOP细节
查看>>
java.lang.Instrument 代理Agent使用
查看>>
Javascript:指针、帽子和女朋友
查看>>
Android中的ALERTDIALOG使用_优就业
查看>>
java使用javacsv读取csv文件 导入Mysql数据库
查看>>
Toolbar 不为人知的助手,ActionMenuView
查看>>
Java回调方法详解
查看>>
如何获取url中的参数并传递给iframe中的报表
查看>>
以前端架构师的思想看问题:解决单页应用,系统角色请求抢占session发送请求问题
查看>>
jsessionid问题解决方案
查看>>
MySQL和Oracle的delete,truncate
查看>>
idea使用心得(2)-安装设置与创建web项目
查看>>
将项目放到服务器tomcat上运行
查看>>