zoukankan      html  css  js  c++  java
  • 学习笔记(17)- 《应用深度学习进行答案选择》IBM Watson

    本文系论文阅读笔记

    原始论文:https://arxiv.org/abs/1508.01585

    题目和作者

    Applying Deep Learning to Answer Selection: A Study and An Open Task

    应用深度学习进行答案选择:一项研究和一个开放任务

    Feng, M., Xiang, B., Glass, M. R., Wang, L., & Zhou, B. (2016). Applying deep learning to answer selection: A study and an open task. 2015 IEEE Workshop on Automatic Speech Recognition and Understanding, ASRU 2015 - Proceedings, 813–820. https://doi.org/10.1109/ASRU.2015.7404872

    IBM公司,IBM Watson团队

    摘要

    使用普通的深度学习框架,解决non-factoid类型的问答任务。方法不依赖任何语言学工具,可以应用在不同的语言和领域。文中介绍并比较了多种体系结构。我们创建并发布了保险领域的问答语料,成立了新的问答任务。实验结果证明,我们比基准实验的结果优秀很多,不同的技术促进了效果的进一步提升。这项高挑战的任务,在测试集的top1的准确率可以达到65.3%,这表明其具有很大的实际应用潜力。

    索引词:答案选择、问答、卷积神经网络CNN、深度学习、口语问答系统

    1 介绍

    本文解决口语问答系统的问答模块。从【匹配】和【选择】的角度看待问答。

    语料地址:

    https://github.com/shuzi/insuranceQA.git

    和仓库里面的不太一样,仓库里面更新更多。

    2 模型描述

    介绍深度学习框架,及其变体。两个系统的主要思路是相同的:学习给定问题和候选答案的向量表示,然后使用相似度计算他们的匹配度。
    首先做了2个基准实验,便于比较。

    2.1 基准系统

    第一个基准系统是词袋模型。
    步骤如下:

    1. 训练词向量。问题和答案的每个单词,都有向量表示。
    2. 基于单词的idf权重累加,计算问题和答案的向量表示。这样每个问题、每个候选答案,都有向量表示。
    3. 计算每个问题和答案对儿之间的cos相似度。cos相似度最高的候选答案,就是这个问题的正确答案。
    

    第二个基准系统是信息检索系统。

    采用最先进的加权频率模型WD(weighted dependency model)

    WD模型采用基于词汇和基于词汇邻近度的排序特征的加权组合来为每个候选答案打分。

    思路是,当考虑到频率时,问题中的二元、一元应该得到较高的权重,
    因此,特征权重是由重要性分配的,重要性因素是作为模型训练过程的一部分来学习的。

    【思路:使用BERT模型+本文的思路,再试试?】

    2.2 基于CNN的系统

    本文提出了基于CNN的QA框架。
    CNN有3个因素,可以提升机器学习系统的效率:稀疏交互(Sparse interaction) 、参数共享(Parameter sharing) 、等变表示(Equivariant representation)

    稀疏交互 。和传统神经网络不同,每个输出都受每个输入的影响。在CNN中,filter的尺寸(核大小)比 输入层的尺寸小很多。结果就是,输出只是和输入的窄窗口进行交互。

    Sparse interaction contrasts with traditional neural networks where each output is interactive with each input. In a CNN, the filter size (or kernel size) is usually much smaller than the input size. As a result , the output is only interactive with a narrow window of the input.

    参数共享,指的是在卷积操作的时候,对过滤参数进行重复使用。然而传统神经网络中的权重矩阵元素,只是在计算输出的时候使用一次。

    Parameter sharing refers to reusing the filter parameters in the convolution operations, while the element in the weight matrix of traditional neural network will be used only once to calculate the output.

    等变表示和‘k-MaxPooling’思路有关,经常和CNN联合使用。本文(k=1),所以CNN的每一个过滤器代表某些特征,在经过卷积操作之后,1-MaxPooling的值代表了输入包含特征的最高程度。由于卷积,这个特征在输入中的位置是不相关的。这个特性,在NLP应用中,非常有用。

    Equivariant representation is related to the idea of (k)-MaxPooling which is usually combined with a CNN.

    下面是我们的CNN实现的示例证明。

    (点乘,卷积)

    1. 左边(W)是输入的句子。每个单词由3维的单词向量表示,输入长度是4.

    2. 右边矩阵(F)表示filter。2维的过滤器,大小是3 X 2。

    3. 卷积操作的输出是3维的向量(O),假设是0补白,进行一个比较小的卷积。

    2.3 训练和损失函数

    后面会描述不同的结构。不同的结构,都使用相同的训练和测试机制。本文的损失排名,和文章【6】【7】相同。

    在训练阶段,每个训练的问题(Q),有一个正例答案(A^{+})(标准答案)。训练实例由(A^{+})(A^{-})(错误答案)组成,从所有答案空间中抽样出来。

    A training instance is constructed by pairing this A+ with a negative answer A−(a wrong answer) sampled from the whole answer space.

    深度学习框架为每一个问题生成向量表示,以及两个候选集:(V_{Q}), (V_{A^{+}}),(V_{A^{-}})

    计算相似度:
    (cos(V_{Q},V_{A^{+}}))(cos(V_{Q},V_{A^{-}}))

    两个相似度的比较,使用差运算:

    (cos(V_{Q},V_{A^{+}}) - cos(V_{Q},V_{A^{-}}) < m,m是差)

    When this condition is satisfied, the implication is that the vector space embedding either ranks the positive answer below the negative answer, or does not sufficiently rank the positive answer above the negative answer.

    如果条件满足,这意味着,向量空间嵌入要么把正答案排在负答案下面,要么没有把正答案排在否定答案上面。

    如果满足以下条件,(cos(V_{Q},V_{A^{+}}) - cos(V_{Q},V_{A^{-}}) >= m),不更新参数,直到边距小于m时才采样一个新的反例(为了减少运行时间,我们在本文中设置了50次最大值)。
    因此,损失函数定义为:

    在测试阶段,我们计算问题(Q)和每一个候选答案(V_{candidate})之间的cos相似度(cos(V_{Q},V_{candidate}))

    选择cos相似度最大的候选集,作为正确答案。

    2.4 体系结构

    这个部分,我们提出了QA任务的几个框架。

    下面逐个说明。

    结构1

    Figure 1 展示结构1.

    1. (Q)是输入的问题,作为第一个隐层((HL_{Q}))的输入。

    2. 隐层((HL))定义为(z=tanh(Wx+B))

      (W)是权重矩阵,(B)是偏置向量,(x)是输入,(z)是激活函数(tanh)的输出。

    3. 接下来是CNN层的输出(CNN_{Q}),用来抽取问题的侧面特征(side features)。(见上文卷积示例部分)

    4. P是MaxPooling层(本文一贯使用1-MaxPooling)

    5. T是tanh层

    和问题一样,答案(A)首先经过隐层(HL_{A}),然后(CNN_{A})抽取特征,最后(1-MaxPooling)(P)和 (tanh) 层T起作用。

    最终的结果是问题和答案的向量表示。最终的输出,是向量之间的cos相似度。

    表2的第三行,是结构1的结果。

    结构2

    和结果1的主要不同点是,问题和答案共享同一个HL和CNN权重。表1的第四行,是结构2的结果。

    结构3

    我们也考虑了在CNN之后增加一个隐层。

    问题边的CNN之后,增加了一个(HL_{Q})

    答案边的CNN之后,增加了一个(HL_{A})

    表2的第五行,是这个结构的实验结果。

    结构4

    结构4和结构3类似,除了问题和答案的第二个隐层共享一个(HL_{QA})权重。

    表2的第6行和第7行,是结构4的实验结果。

    结构5

    设置了2层(CNN_{QA})

    2.2部分,我们讲了卷积的输出是一个向量(那个例子是3维)。只有单个filter的时候,这才成立。

    用了多个过滤器,结果就是一个矩阵了。

    如果在2.2的例子中,使用4个过滤器,输出的结果是如下矩阵:

    每行是一个filter的输出;

    每列是输入的三元组。

    each column represents a bigram of the input.

    这个矩阵,是下一层(CNN_{QA})的输入。

    For this second layer, every bigram is effectively one “word” and the previous filter’s output for that bigram is its word embedding.

    表2和第11行,是结构5的实验结果。

    结构6

    结构6和结构5类似,除了利用layer-wise监督。

    每一个(CNN_{QA})之后,都进行1-MaxPooling和tanh,因此损失函数可以被计算,反向传播得以进行。

    表2的第12行,是结构6的实验结果。

    我们还尝试了另外3种技术,改进结构2。

      1. First, the CNN filter quantity has been increased, see row 8 9 and 10 of Table 2.
      1. Second, the convolution operation has been augmented to include skip-bigrams.
      1. 改进了相似度度量。
        直到现在,我们使用了cos相似度,它在向量空间模型中广泛采用。但是,cos相似度是该任务的最好选项吗?表3是相似度度量研究的结果,一些指标包括超参数和各种超参数的实验。

    我们提出了2种新颖的指标:GESD和AESD。

    We propose two novel metrics (GESD and AESD) which demonstrate superior performance.

    3. 实验装置(setup)

    本文的深度学习框架使用java。为了提高速度,采用HOGWILD方法(异步梯度下降,无锁更新)。

    每个线程同时处理一个训练实例,更新神经网络的权重。
    任何线程之间不存在锁。

    word2vec训练100维度的单词向量,作为初始值。

    单词向量也是参数,在QA任务中也会进行优化。

    采用SGD(Stochastic Gradient Descent)随机梯度下降法作为优化策略。
    损失函数中,还增加了L2范式( L2-norm)。

    本文参数如下:

    L2-norm的权重:0.0001
    学习率:0.01
    margin m : 0.009 
    

    这些超参数是根据之前的实验选择的,这个数据在深度学习方面的实验,它们在合理范围内不是很敏感。
    这项工作所使用的计算资源是巨大的。我们慷慨占用了由75台机器组成的Power 7集群。每台机器有32个物理核心,每个核心支持2-4个超线程。
    由于没有锁定,HOGWILD方法将带来一些随机性。
    即使使用了锁定,线程调度程序也会改变运行示例之间的顺序,结果仍然存在随机性。

    因此,对于表2中的每一行(除了第1行和第2行)和表3,
    我们在开发集进行了10次实验,开发集得分最好的实验,用来计算测试集的得分。

    4 结果和讨论

    本部分讨论详细的实验结果分析。
    从表2和表3可以得出结论:

    • (1) baseline 1 only utilizes word embeddings and baseline 2 is based on traditional term based features. Our proposed method can reach significantly better accuracy which demonstrates the superiority of deep learning approach;

    能轻易打败base1和base2,因为base1只利用了单词向量,base2基于传统的term特征。

    我们提出的方法可以达到更好的精度,这证明了深度学习方法的优越性;

    • (2) using separate hidden layer (HL) or CNN layers for Q and A has worse performance compared to a shared HL or CNN layer (Table 2, row 3 vs. 4, row 5 vs. 6). This is reasonable because for a shared layer network, the corresponding elements in Q and A vector are guaranteed to represent the same CNN filter convolution result while for network with separate Q and A layers, there is no such constraint and the optimizer has to learn over a set of double sized parameters. Hence the optimizer faces greater difficulty;

    对问题和答案,使用单独的隐层HL或者CNN,不如共享HL和CNN。
    这个是可以解释的,因为在一个共享层的网络中,Q和A的向量中的对应元素,保证代表相同的CNN滤波卷积结果。而对于具有独立的Q和A层的网络,则不存在这样的约束,优化器必须学习一组双倍大小的参数。因此,优化器面临更大的困难

    • (3) adding a HL after the CNN degrades the performance (Table 2, row 4 vs. 6 and 7). This proves that CNN already captures useful features for QA matching and unnecessary mapping the features to another space makes no sense at all;

    在CNN之后添加HL,性能表现下降。

    这表明CNN已经捕捉到QA匹配的有用的特征,没有必要将特征映射到另外一个空间,一点意义都没有。

    • (4) increasing the CNN filter quantity can capture more features which gives notable improvement (Table 2, row 4 vs. 8, 9 and 10);

    增加CNN的过滤器的数量,可以捕捉到更多的特征,这对结果有明显的改善。

    • (5) two layers of CNN can represent a higher level of abstraction with wider range in the input. Hence going deeper by using two CNN layers improves the accuracy (Table 2, row 4 vs. 11);

    2层CNN可以表达高层次的抽象特征,输入范围更广。

    因此,通过使用两个CNN层来进一步提高准确性

    • (6) effective learning in deep networks is often a difficult task. Layer-wise supervision can alleviate the problem (Table 2, row 11 vs. 12);

    深度网络的有效学习,通常是一个困难的事情。
    分层管理可以缓解这个问题

    • (7) combining bigram and skip-bigram features brings gain on Test1 but not on Test2 (Table 2, row 4 vs. 13, row 8 vs. 14, row 9 vs. 15);

    将bigram和skip-bigram特征进行组合,在Test1取得了进步,但是在Test2没有提升。

    • (8) Table 3 shows that with the same model capacity, similarity metric plays an important role and the widely used cosine similarity is not the best choice for this task.

      The similarity in Table 3 can be categorized into three classes:

      • L1-norm based metric which is the semantic distance of Q and A summed from each coordinate axis;
      • L2-norm based metric which is the straight-line semantic distance of Q and A;
      • inner product based metric which measures the angle between Q and A.

      We propose two new metrics that combine L2-norm and inner product by multiplication (GESD Geometric mean of Euclidean and Sigmoid Dot product) and addition (AESD Arithmetic mean of Euclidean and Sigmoid Dot product). The proposed two metrics are the best among all compared metrics. Finally, in the bottom of Table 3 it is clear that with more filters, the proposed metric can achieve even better performance.

    表3表明,在模型容量相同的情况下,相似度度量起着重要的作用,而广泛使用的余弦相似度并不是该任务的最佳选择。
    表3的相似度可以分为3类:

    • L1范式,Q和A的语义距离,从每个坐标轴求和;
    • L2范式,Q和A的直线距离
    • 内积,Q和A的角

    【重点】

    我们提出了2种新的度量方法,L2范式和内积相乘、相加

    • GESD Geometric mean of Euclidean and Sigmoid Dot product
    • AESD Arithmetic mean of Euclidean and Sigmoid Dot product

    所提出的两个指标是所有比较指标中最好的。最后,在表3的底部可以清楚地看到,使用更多的过滤器,所提出的度量可以获得更好的性能。

    5 相关工作

    深度学习技术在机器学习任务中得到了广泛的应用,其性能往往优于传统方法。
    其中许多应用程序专注于与分类相关的任务,例如图像识别[9]、语音[10][11][12]和机器翻译[13][14]。本文是在前人利用深度学习进行NLP任务研究的基础上提出的:Gao等人提出了一种基于CNN的网络,该网络将源-目标文档对映射到嵌入向量,使源文档与其感兴趣目标之间的距离最小化。Lu和Li[16]提出了一种基于CNN的深度网络的短文本匹配任务;Hu等人还使用了几种基于CNN的网络进行句子匹配;Kalch- brenner等人使用CNN进行情绪预测和问题分类;Kim[18]在情绪分析中使用CNN;Zeng等人[19]使用CNN进行关系分类;Socher等人[20][21]使用递归网络进行释义检测和解析;Iyyer等人提出了一种递归网络用于factoid问题的求解;Weston等人使用CNN进行hashtag预测;Yu等人[23]使用CNN进行答案选择;Yin 和 Schu ̈tze [24]使用biCNN进行段落识别。

    我们的工作遵循了之前许多工作的精神,我们利用CNN将自然语言的句子映射成嵌入向量,从而计算相似度。

    然而,本文在各种不同的架构上进行了大量的实验,而这些架构在之前的工作中并没有涉及。此外,我们还探索了不同的相似度度量、基于跳跃双图的卷积和分层监督,这些在以前的工作中都没有出现过。

    6 结论

    本文采用深度学习框架,从答案选择的角度对口语问答系统进行了研究。

    该框架不依赖于任何语言工具,可以很容易地适应不同的语言或领域。

    我们的工作有力地证明了基于深度学习的QA是一个令人鼓舞的研究方向。

    其科学贡献可概括如下:

    (1)在保险领域创建一个新的QA任务,并发布一个新的语料库,使不同的方法可以进行公平的比较
    (2)提出了一个通用的深度学习框架,并对QA任务进行了几个变体的比较实验
    (3)利用新颖的技术进行改进:多层CNN分层监管,讨论了不连续卷积,结合l2范数和内积信息的新型相似度度量对CNN进行增强
    (4)本文的最佳成绩非常有希望:对于这个具有挑战性的任务(从规模为500的题库中选择一个答案),测试语料库的最高一项正确率可达65.3%
    (5)对于想要进行这一任务的研究人员,本文提供了有价值的指导:
    - 采用共享层结构;
    - 不需要在CNN之后添加隐藏层;
    - 两个层次的CNN与分层训练提高准确性;不
    - 连续的卷积有时会有帮助;
    - 相似度度量起着至关重要的作用,提出的相似度度量是首选的,最后通过增加滤波器的数量来改进。
    
  • 相关阅读:
    从键盘输入两个数字,根据订单或大或小的输出
    软考路(3)——数据流图的尖
    HDU 3988 Harry Potter and the Hide Story(数论-整数和素数)
    排序算法门外汉理解-Shell排序
    流量计算-Jstorm提交Topology过程(下一个)
    CentOS在安装配置 Ngnix_tomcat_PHP_Mysql
    C++基于该模型模板包括节目外实例
    同ListView该接口无法通过手势滑动左右切换界面问题解决方法
    用彩虹表破解MD5、LM Hash等复杂加密密码
    logstash
  • 原文地址:https://www.cnblogs.com/xuehuiping/p/12268535.html
Copyright © 2011-2022 走看看