A Deep Relevance Matching Model for Ad-hoc Retrieval
https://github.com/KATEhuang920909
\quad 本文主要讨论了文本检索领域中相关度匹配的问题,主要有以下几点:1.深入讨论了NLP任务中的语义匹配和相关度匹配的不同点,根据这些不同点来调整模型的结构。2.提出DRMM模型,该模型细腻度的考虑了query和document之间的字符级相关性、使用了匹配直方图映射来表征query-document之间的相关性特征,同时使用门结构来学习query字符的重要性,结果达到了SOTA(2017);3.做了大量对比实验,同时和其他模型比较,分析DRMM的优点。
信息检索可以看成文本匹配问题,对于文本匹配问题,给出两个文本 T 1 和 T 2 T_1和T_2 T1和T2,其匹配程度可以用如下公式表示:
m a t c h ( T 1 , T 2 ) = F ( Φ ( T 1 ) , Φ ( T 2 ) ) . . . ( 1 ) match(T_1,T_2) = F(\varPhi(T_1),\varPhi(T_2)) ...(1) match(T1,T2)=F(Φ(T1),Φ(T2))...(1)
\quad 其中 Φ 将 文 本 映 射 成 特 征 向 量 , F \varPhi将文本映射成特征向量,F Φ将文本映射成特征向量,F计算两个向量匹配分数。该任务主要应用于释义识别、QA问答、对话系统中。
根 据 Φ 和 F \quad根据\varPhi和F 根据Φ和F两个函数的选择不同,我们可以将模型分为表征式 模型和交互式模型
\quad 表征式模型尝试在神经网络中获得每一个文本较好的表征方式,然后在两个表征向量之间进行匹配,在匹配公式(1)中, Φ \varPhi Φ是一种较为复杂的特征表征函数,F是特征向量的匹配函数,例如,在DSSM中, Φ \varPhi Φ是前馈神经网络,F是余弦相似度函数;在CDSSM中, Φ \varPhi Φ是卷积神经网络,F也是余弦相似度函数;在ARC-I中, Φ \varPhi Φ是卷积神经网络,F是多层感知机(MLP)。如果不考虑损失函数的差异,表征式模型可以看成孪生网络(Siamese Network) 结构。
\quad 首先获取文本的初始表征形式(字符、词语、句子等embedding),然后建立建立交互函数对文本间的信息进行交互,然后利用神经网络去学习这些交互信息,最终获取文本的相关性。
\quad 在该模式中, Φ \varPhi Φ通常为文本信息的基本表征方式,F是较为复杂第深度模型。例如在ARC-II和MatchPyramid中, Φ \varPhi Φ获取文本的词向量,F是CNN模型用来抽取文本间的交互矩阵信息。
\quad 如果不考虑损失函数的差异,交互式模型可以看作是层次化的深度神经网络模型。
\quad 这一部分,我们讨论信息检索和其他nlp任务的区别,一些任务例如释义识别、QA问答、对话系统中主要考虑语义匹配。
\quad 语义匹配任务中,两段文本结构相似,且通常会考虑以下三个因素:
\quad 1.相似度匹配信号(?):和准确的单词匹配相比,捕获单词、短语和句子的语义相关性/相似性更重要,比如在释义识别中,需要识别楚两个不同表达方式的句子是否具有相同的含义。
\quad 2.语法结构:在很多情况下,与将句子看成字词的序列相比,充分使用句法结构可能会更有用,例如在QA问答当中,许多问题都有相同的语法结构,充分利用该结构更能学习到该问题的语义内容。
\quad 3.全局匹配:语义匹配考虑两个句子之间的全局匹配信息,这种方式是基于文本的长度较短以及主题信息较为明确。在QA问答中,若query和知识库的问句具有相同的全局语义,则一般能返回正确答案。
\quad 在信息检索中,主要考虑相关性匹配,例如document是否与query有相关性,在该任务中,query一般很短且具有较强信息的关键字,但是document 一般较长,且每句话可能含有不同的语义信息。因此,为了评判query和document之间的相关性,通常会考虑一下三个因素:
\quad 1.精确的匹配信息:尽管语义匹配也是目前ad-hoc检索的一个重要方向,但是对于检索来说,query中的字词与document里面的字词的匹配度可以作为两段文本的匹配度的重要信息。
\quad 2.query中字、词、短语的重要性:query中的关键字词是query中的重要信息, 赋予不同的权重可以更准确的召回检索结果。
\quad 3.多样性匹配:相关性的段落可能在document的任一个位置,因此我们不能把document看作整体去进行匹配。
\quad 整体结构如下图所示:
\quad 基于相关性匹配的分析,作者针对性的对三个重要关注点进行改良,通过query-document之间的匹配交互信息和匹配直方图获得,来获取term级别的匹配信号;引入门结构学习query中的term的重要程度。
\quad 输入文本为 q = w 1 q , . . . , w M q q={w_1^{q},...,w_M^{q}} q=w1q,...,wMq, d = w 1 d , . . . , w M d d={w_1^{d},...,w_M^{d}} d=w1d,...,wMd,其中 w i q , i = 1 , . . . , M , w j q , j = 1 , . . . , N , w_i^{q},i=1,...,M,w_j^{q},j=1,...,N, wiq,i=1,...,M,wjq,j=1,...,N,为query的词向量和document的词向量,则局部交互层的交互公式可以写成如下形式:
I i = w i ( q ) ⨂ d , i = 1 , . . . , M I_i = w_i^{(q)} \bigotimes d, i=1,...,M Ii=wi(q)⨂d,i=1,...,M
⨂ 为 q u e r y 和 d o c u m e n t \bigotimes 为query和document ⨂为query和document之间的匹配交互操作
由于每一个query和document的长度不一,因此采用匹配直方图映射的方法,具体公式如下:
z i ( 0 ) = h ( I i ) z_i^{(0)} = h(I_i) zi(0)=h(Ii)
\quad 其中h为映射方法,常用的有 C H ( c o u n t − b a s e d h i s t o g r a m ) CH(count-based histogram) CH(count−basedhistogram)、 N H ( n o r m a l i z e d h i s t o g r a m ) NH(normalized histogram) NH(normalizedhistogram)、 L C H ( l o g − c o u n t − b a s e d h i s t o g r a m ) LCH (log-count-based histogram) LCH(log−count−basedhistogram),其中CH为统计每个切分段内的个数作为对应的值,NH在CH基础上做归一化,LCH在CH基础上取对数。
\quad 例如,交互匹配采用cos计算terms间相似度,则相似度值在[-1,1]之间,如果一个query的term与document的匹配向量为[1,0.2,0.7,0.3,-0.1,0.1],直方图的切分段为:{[-1,-0.5],[-0.5,0),[0,0.5},[0.5,1),[1,1]},则匹配直方图向量为:[0,1,3,1,1],该向量长度为直方图切分个数,每个切分段内的相似度值的统计值为对应切分点的向量值。
全连接神经网络,公式如下:
z i ( l ) = t a n h ( w ( l ) z i ( l − 1 ) + b ( l ) ) , i = 1 , . . . , M , l = 1 , . . . , L z_i^{(l)} = tanh(w^{(l)}z_i^{(l-1)}+b^{(l)}), i =1,...,M,l=1,...,L zi(l)=tanh(w(l)zi(l−1)+b(l)),i=1,...,M,l=1,...,L
L为神经网络的层数。
这里直接使用softmax,通过门结构学习每一个term交互向量经前馈神经网络以后的向量权重值,公式如下:
g i = e x p ( w g x i ( q ) ) ∑ j = i M e x p ( w g x j ( q ) ) i = 1 , 2 , . . . , M g_i =\frac {exp(w_gx_i^{(q)})}{\sum_{j=i}^{M} exp(w_g x_j^{(q)})} i=1,2,...,M gi=∑j=iMexp(wgxj(q))exp(wgxi(q))i=1,2,...,M
i 为 q u e r y 的 第 i 个 i t e m , g i 为 对 应 i t e m 的 权 重 i为query的第i个item,g_i为对应item的权重 i为query的第i个item,gi为对应item的权重
送入门结构的item的表示方式有两种:Term Vector和IDF ,前者与局部交互的输入向量相同,后者为逆文档频率,可以获得query中的term的重要性信息。
最终的得分公式如下:
S = ∑ i = 1 M g i z i ( L ) S=\sum_{i=1}^M g_i z_i^{(L)} S=∑i=1Mgizi(L)
其 中 g i 为 门 结 构 学 习 到 的 t e r m 权 重 , z i 为 每 个 t e r m 的 输 出 向 量 其中g_i为门结构学习到的term权重,z_i为每个term的输出向量 其中gi为门结构学习到的term权重,zi为每个term的输出向量
损失函数采用pair-wise ranking loss,这里使用了hinge loss,公式如下:
L ( q , d + , d − ; Θ ) = m a x ( 0 , 1 − s ( q , d + ) + s ( q , d − ) ) L(q,d^+,d^-;\Theta) =max(0,1-s(q,d^+)+s(q,d^-)) L(q,d+,d−;Θ)=max(0,1−s(q,d+)+s(q,d−))
这里s(q,d)表示q和d的匹配分数, Θ \Theta Θ为 各类参数
同时设定了优化器adagrad和mini-batches为20。