文本匹配、文本相似度模型之BiMPM

本文是我的匹配模型合集的其中一期,如果你想了解更多的匹配模型,欢迎参阅我的另一篇博文匹配模型合集

所有的模型均采用tensorflow进行了实现,欢迎start,[代码地址]https://github.com/terrifyzhao/text_matching

简介

本文是对论文BiMPM:BilateralMulti-PerspectiveMatchingforNaturalLanguageSentences的解读。该模型主要用于做文本匹配,即计算文本相似度。

文本匹配是NLP领域较为常见的技术,但是大部分的匹配方法都是从单一的角度去做匹配,例如ABCNN把两个句子通过同样权重的网络结构,把得到的向量进行相似度计算。BiMPM这个模型最大的创新点在于采用了双向多角度匹配,不单单只考虑一个维度,采用了matching-aggregation的结构,把两个句子之间的单元做相似度计算,最后经过全连接层与softamx层得到最终的结果,不过这也成了其缺点,慢。

结构

BiMPM的主要结构如图

在这里插入图片描述

可以看到,该模型一共包含五层,每一层各尽其职,接下来我们把这五层分开来详细说明。

Word Representation Layer

该层的目标是把输入的序列P与Q转变为d维的向量表示,该向量由两个部分组成,分别是普通的词向量和由字符构成的向量,字符向量的值是把所有的字符输入到LSTM中得到的结果。本层实际上即是文本的向量化表示embedding。

ContextRepresentationLayer

本层主要是用于提取P与Q的上下文信息,把上一层拿到的embedding输入到BiLSTM中,分别得到两个方向不同时刻的context embedding

在这里插入图片描述

在这里插入图片描述

Matching Layer

Matching Layer是该模型的核心层,多维度匹配,该层的目标是把每一个序列不同时刻的context与另一个序列的所有时刻的context做一个比较,并且考虑了两个方向,这里设计了一种 multi-perspective 的匹配方法,用于获取两个句子细粒度的联系信息,其中具体的比较细节我们会在下文讲解。

Aggregation Layer

本层的目的就是把上一层的结果聚集在一起,合并成一个固定长度的向量,采用的依旧是BiLSTM模型。

Prediction Layer

最后就是预测层了,这个阶段包括两个全连接层与一个softmax层或sigmoid层,具体看业务场景。

多维度匹配

接下来我们会把Matching Layer中提到的匹配机制进行一个详细说明,首先作者定义了一个多角度匹配的相似度函数

m = f m ( v 1 , v 2 ; w ) m = f_m(v_1,v_2;w) m=fm(v1,v2;w)

其中 v 1 v_1 v1 v 2 v_2 v2表示的是两个 d d d维度的向量, W ∈ R l × d W \in R^{l×d} WRl×d是权重,其维度为 ( l , d ) (l,d) (l,d)其中 l l l表示的是匹配的角度数量,结果 m m m是一个 l l l维度的向量, m = [ m 1 , . . . , m k , . . . , m l ] m=[m_1,...,m_k,...,m_l] m=[m1,...,mk,...,ml],每一个 m k m_k mk表示的是第 k k k个角度的匹配结果,其值的相似度计算方法如下

m k = c o s i n e ( W k ⋅ v 1 , W k ⋅ v 2 ) m_k=cosine(W_k·v_1,W_k·v_2) mk=cosine(Wkv1,Wkv2)

f m f_m fm实际上又有四种策略来求相似度,分别看下

Full-Matching

该方法会把每一个时刻的context与另一个序列的尾的context做一个相似度计算

在这里插入图片描述

Maxpooling-Matching

在这里插入图片描述

该方法会把P序列所有时刻的context与Q序列所有时刻的context做一个相似度计算,最后只保留相似度最大的那个值,

在这里插入图片描述

Attentive-Matching

在这里插入图片描述

该方法首先会计算P序列每一个时刻的context与Q序列每一个时刻的context的相似度

在这里插入图片描述

然后把得到的相似度作为对应时刻的权重与另一个序列做加权平均,针对整个序列计算出attentive vector

在这里插入图片描述
最后把每一个时刻的context与attentive vector做一个相似度计算

在这里插入图片描述

Max-Attentive-Matching

在这里插入图片描述

该方法其实和Attentive-Matching方法类似,不过是把最后生成attentive vector的方法改为了求最大值而不是加权平均

序列的每一个时间步长都通过这四种策略得到相似度的值,由于是双向的,最终将生成的8个向量串联起来作为的每个时间步长的匹配向量。

总结

BiMPM有两个优化的点,第一个是不单单只考虑词向量,同时兼顾了字向量,其次其更加注重句子之间交互信息,从不同层次不同粒度来匹配待比较的句子,加大了比较范围,效果必然是会有一定的提升,但是也因此引入了更多的参数,加大了训练难度。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值