Pytorch学习记录-TextMatching几个经典模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pytorch学习记录-TextMatching几个经典模型相关的知识,希望对你有一定的参考价值。

参考技术A Pytorch学习记录-TextMatching文本匹配01
本文是对知乎上 这篇文章 的阅读笔记,查了一下ACL和arXiv历年来关于TextMatching的论文,不知道如何下手,就找找别人的文献综述看看,但是似乎和我想象的不大一样,还是得先实现一个基于深度神经网络的模型才行。

本文基于知乎《深度文本匹配发展总结》,希望作为对之后文献阅读的一个路径。

经典模型是DSSM(2013),来自论文《Learning Deep Structured Semantic Models for Web Search using Clickthrough Data》

模型的结构。使用DNN将高维度稀疏文本特征映射到语义空间中的低维密集特征中。第一个隐藏层,具有30k单位,完成word hashing。然后通过多层非线性投影投射word hashing特征。
此DNN中的最后一层神经活动形成了语义空间中的特征。

这个模型的缺点也很明显,没有考虑单词之间的时序联系,相似度匹配用的余弦相似度是一个无参匹配公式。

经典模型是MV-LSTM模型(2015),来自中国科学院《A Deep Architecture for Semantic Matching with Multiple Positional Sentence Representations》

使用Bi-LSTM构建神经网络,对LSTM隐藏层的输出进行匹配,作者认为这个模型能够考察每个单词在不同语境下的含义,然后使用Bi-LSTM处理句子可以实现用变长的窗口逐步解读句子,从多粒度考察句子的效果。

模型中 和 就是输入的句子,首先通过Bi-LSTM获得位置语句表示(表示为虚线橙色框)。然后,k-Max汇集从每个交互矩阵中选择前k个相互作用(在图中表示为蓝色网格)。最后通过多层感知器MLP计算匹配分数。

因为语言的表示有多样性,带参数的公式比不带参数的公式显得更加合理,然后对匹配矩阵进行K-Max的动态池化操作,也就是挑选K个最大的特征,最后采用全连接层进行维度压缩和分类。

来自论文《Text Matching as Image Recognition》
这篇论文从3个角度构建匹配矩阵。更精细的考虑句子间单词的两两关系,构建出3个矩阵进行叠加,把这些矩阵看作是图片,用卷积神经网络对矩阵进行特征提取。

论文中一共有3种方式构建匹配矩阵,Indicator是一个这个句子的单词是否在另一个句子中出现的指示矩阵,第二个是单词之间的点积,第三个是余弦相似度。三个匹配矩阵叠加再用CNN在矩阵上进行特征提取是这篇整体的思想。

在做实际匹配处理的时候,通常会出现训练集、测试集中出现语料库中没有的单词(OOV问题)。深层次句间交互模型的单词使用Glove预训练和characters卷积拼接作为单词的embedding输入。characters卷积是对每个字母随机赋予一个向量,对单词的所有字母卷积得出特征作为单词的补充特征,这些特征是为了缓解OOV的问题。

2017年IBM《Bilateral Multi-Perspective Matching for Natural Language Sentences》
双边、多角度句子匹配。
文章创新点

模型的整体框架图,输入是预训练的glove embeddings 和 chars embeddings,经过BiLSTM的编码之后,对每一个step的LSTM的输出进行从p到q和从q到p的两两配对,有四种组合方式,然后将所有的结果进行拼接和预测结果。
使用四种匹配方式,匹配公式采用带参数的余弦相似度

2018年纽约大学《Natural Language Inference over Interaction Space》
Interactive Inference Network(IIN,交互式推理网络)
DenseNet可以在经过复杂的深度神经网络之后,还可以很大程度上保留原始特征的信息。(但是为了保留原始特征,现在是不是使用attention机制会更好?)。

模型的整体框架,可以看到输入部分有四个部分的特征(Glove,char,EM(exact match),POS)。这是一个分级多阶段处理的网络,包括5个部分,每个组件都与不同类型的实现兼容。机器学习中可能存在的所有方法,例如决策树,支持向量机和神经网络方法,都可以转移以替换该体系结构中的某些组件。

什么是highway networks?

使用highway network对特征进行编码,这个编码的输出构造一个句子内的attention,(具体就是公式 ,对单词a和单词b的向量和它们的点积进行拼接,再做一个线性的映射得到一个权重参数,经过softmax归一化后成为句内attention的权重参数)然后是参考了LSTM的设计,对highway出来的向量和带了句内交互的attention项的向量用门机制进行了过滤,得到每个单词的向量表示,然后将向量表示两两之间做一个匹配形成匹配矩阵,最后用DenseNet对匹配矩阵进行特征提取。

2018年首尔大学《Semantic Sentence Matching with Densely-connected Recurrent and Co-attentive Information》
这篇论文的创新点在于:1、采用了固定的glove embedding和可变的glove embedding拼接并提升了模型效果。2、采用stack层级结构的LSTM,在层级结构上加入了DenseNet的思想,将上一层的参数拼接到下一层,一定程度上在长距离的模型中保留了前面的特征信息。3、由于不断的拼接导致参数增多,用autoencoder进行降维,并起到了正则化效果,提升了模型准确率。

怎么感觉模型越来越复杂,而且使用的模型结构和之前看到的不太一样,GEC部分还好理解,为什么文本匹配部分更加庞杂。

以上是关于Pytorch学习记录-TextMatching几个经典模型的主要内容,如果未能解决你的问题,请参考以下文章

pytorch学习记录

PyTorch学习记录:onnx模型部署

免费送书|《深度学习入门之pytorch》一书

萌新深度学习与Pytorch入门记录:Win10下环境安装

PyTorch深度学习:用PyTorch实现线性回归

源码学习成功运行RESD代码及踩坑记录 - Pytorch版