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

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

0. 深度文本匹配发展总结

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

0.1 常用数据集

  • SNLI:570K条人工标注的英文句子对,label有三个:矛盾、中立和支持
  • MultiNLI:433K个句子对,与SNLI相似,但是SNLI中对应的句子都用同一种表达方式,但是MultiNLI涵盖了口头和书面语表达,可能表示形式会不同(Mismatched)
  • Quora:400k个问题对,每个问题和答案有一个二值的label表示他们是否匹配
  • WikiQA
    问题是相对应的句子的数据集,相对比较小。

0.2 模型发展

  1. 单语义模型,简单的用全连接、CNN或RNN编码两个句子然后计算句子之间的匹配度,没有考虑到句子中短语的局部结构。
  2. 多语义模型,从多个粒度解读句子,考虑到和句子的局部结构。
  3. 匹配矩阵模型,考虑待匹配的句子间不同单词的交互,计算两两之间的匹配度,再用深度网络提取特征,更精细的处理句子中的联系。
  4. 深层次的句子间模型,这是近几年STOA模型,随着attention等交互机制论文的发表,最新的论文用更精细的结构去挖掘句子内和句子间不同单词之间的联系,得到更好的效果。
    这部分和我想的类似,之前希望做的是基于文本的词、句、段落、篇章四个粒度进行匹配,而且在2017年transformer出现之后,使用attention成为提升模型得分的最直接的方式。

0.3 单语义模型

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

0.3.1 DSSM模型创新点

  • 用三个字母的word hashing代替了BOW模型,降低单词向量维度
    word hashing理论是对单词进行拆分,文中使用'good'举例,在单词两侧增加开始和结束标记'#',然后将这个词'#good#'打散为n-grams,这里结果是'#go','goo','ood','od#',最后使用n-grams向量表示这个词。
image.png

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

  • 使用全连接神经网络处理句子

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

0.4 多语义模型

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

0.4.1 MV-LSTM模型

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

image.png

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

0.4.2 创新点

  • 使用了当时比较新的Bi-LSTM网络,将句子的时序考虑进去,同时也有了对更长句子信息的捕捉能力。
  • 使用Interaction tensor计算句子之间的两两匹配度,从多个角度解读句子。
  • 匹配计算公式采用了带参数的计算公式。
    S(u,v) = f(u^TM^{1:c}v + W_{uv}[u;v]^T + b)

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

0.5 匹配矩阵模型

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

image.png

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

0.6 深层次句间交互模型

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

0.6.1 BiMPM

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

  • 双边,不是之前BiLSTM那种双边,而是从问句到答句,再从答句到问句
  • 多角度,使用了4种方式(Full-matching/Maxpooling-matching/Attentive-matching/Max-attentive matching)对句子之间的交互关系进行处理
image.png

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

image.png
  • Full-matching:句子中的每个单词与另一个句子中最后一个隐藏层输出结果做匹配
  • Maxpooling-matching:与另一个句子每一个隐藏层输出作匹配,选取其中最大值
  • Attentive-matching:利用这个单词的embedding和另一个句子各个单词的embeddings分别计算余弦相似度,然后用softmax归一化作为attention权重,加权求和再进行带参余弦相似度计算
  • Max-attentive matching:与Attentive相似,先计算出attention权重,然后取最大值,作相似度匹配

0.6.2 DIIN(Densely IIN)

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

image.png

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

什么是highway networks?

深层神经网络相比于浅层神经网络具有更好的效果,在很多方面都已经取得了很好的效果,特别是在图像处理方面已经取得了很大的突破,然而,伴随着深度的增加,深层神经网络存在的问题也就越大,像大家所熟知的梯度消失问题,这也就造成了训练深层神经网络困难的难题。
2015年Rupesh Kumar Srivastava等人受到LSTM门机制的启发提出的网络结构(Highway Networks)很好的解决了训练深层神经网络的难题,Highway Networks 允许信息高速无阻碍的通过深层神经网络的各层,这样有效的减缓了梯度的问题,使深层神经网络不在仅仅具有浅层神经网络的效果。

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

0.6.3 DRCN

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

小结

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容