600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 文本匹配 文本相似度模型之DSSM

文本匹配 文本相似度模型之DSSM

时间:2019-11-19 07:19:15

相关推荐

文本匹配 文本相似度模型之DSSM

用于学习句子相似性的连体循环架构

转载来自:/p/53326791

github: /daiyizheng/shortTextMatch/blob/master/src/DL_model/classic_models/models/DSSM.py

DSSM是Deep Structured Semantic Model的缩写,即我们通常说的基于深度网络的语义模型,其核心思想是将query和doc映射到到共同维度的语义空间中,通过最大化query和doc语义向量之间的余弦相似度,从而训练得到隐含语义模型,达到检索的目的。DSSM有很广泛的应用,比如:搜索引擎检索,广告相关性,问答系统,机器翻译等。

DSSM

典型的DNN结构是将原始的文本特征映射为在语义空间上表示的特征。DNN在搜索引擎排序中主要是有下面2个作用:

将query中term的高维向量映射为低维语义向量根据语义向量计算query与doc之间的相关性分数

通常, xxx用来表示输入的term向量,yyy表示输出向量,li,i=1,...,N−1l_i, i=1,..., N-1li​,i=1,...,N−1表示隐藏层, WiW_iWi​表示第iii层的参数矩阵,bib_ibi​表示第iii个偏置项。

l1=W1xl_1=W_1xl1​=W1​x

li=f(Wili−1+bi),i=2,...,N−1l_i=f(W_il_{i-1}+b_i), i=2,...,N-1li​=f(Wi​li−1​+bi​),i=2,...,N−1

y=f(WNlN−1+bN)y=f(W_Nl_{N-1}+b_N)y=f(WN​lN−1​+bN​)

这里使用 tanhtanhtanh作为输出层和隐藏层的激活函数,有下列公式。

f(x)=1−e−2x1+e−2xf(x)=\frac{1-e^{-2x}}{1+e^{-2x}}f(x)=1+e−2x1−e−2x​

在搜索排序中,我们使用QQQ来表示一个query, DDD来表示一个doc,那么他们的相关性分数可以用下面的公式衡量

R(Q,D)=cosine(yQ,yD)=yQTyD∣∣yQ∣∣∣∣yD∣∣R(Q,D)=cosine(y_Q, y_D)=\frac{y_Q^Ty_D}{||y_Q||||y_D||}R(Q,D)=cosine(yQ​,yD​)=∣∣yQ​∣∣∣∣yD​∣∣yQT​yD​​

其中, yQy_QyQ​ 与 yDy_DyD​ 是query与doc的语义向量。在搜索引擎中,给定一个query,会返回一些按照相关性分数排序的文档。

通常情况下,输入的term向量使用最原始的bag of words特征,通过one-hot进行编码。但是在实际场景中,词典的大小将会非常大,如果直接将该数据输入给DNN,神经网络是无法进行训练和预测的。因此,在DSSM中引入了word hashing的方法,并且作为DNN中的第一层。

word hashing

word hashing方法是用来减少输入向量的维度,该方法基于字母的 n-gram。给定一个单词(good),我们首先增加词的开始和结束部分(#good#),然后将该词转换为字母 n-gram的形式(假设为trigrams:#go,goo,ood,od#)。最后该词使用字母 n-gram的向量来表示。

这种方法的问题在于有可能造成冲突,因为两个不同的词可能有相同的n-gram向量来表示。下图显示了word hashing在2个词典中的统计。与原始的ont-hot向量表示的词典大小相比,word hashing明显降低了向量表示的维度。

DSSM的学习

点击日志里通常包含了用户搜索的query和用户点击的doc,可以假定如果用户在当前query下对doc进行了点击,则该query与doc是相关的。通过该规则,可以通过点击日志构造训练集与测试集。

首先,通过softmax 函数可以把query 与样本 doc 的语义相似性转化为一个后验概率:

其中 γ\gammaγ是一个softmax函数的平滑因子, DDD表示被排序的候选文档集合,在实际中,对于正样本,每一个(query, 点击doc)对,使用(Q,D+)(Q, D^+)(Q,D+)表示;对于负样本,随机选择4个曝光但未点击的doc,用{Dj−;j=1,...,4}\{D_j^-;j=1,...,4\}{Dj−​;j=1,...,4}来表示。

在训练阶段,通过极大似然估计来最小化损失函数:

其中Λ\LambdaΛ表示神经网络的参数。模型通过随机梯度下降(SGD)来进行优化,最终可以得到各网络层的参数{Wi,bi}\{W_i, b_i\}{Wi​,bi​}。

总结

DSSM的提出主要有下面的优点:

解决了LSA、LDA、Autoencoder等方法存在的一个最大的问题:字典爆炸(导致计算复杂度非常高),因为在英文单词中,词的数量可能是没有限制的,但是字母 [公式] -gram的数量通常是有限的基于词的特征表示比较难处理新词,字母的 [公式] -gram可以有效表示,鲁棒性较强使用有监督方法,优化语义embedding的映射问题省去了人工的特征工程

缺点

word hashing可能造成冲突DSSM采用了词袋模型,损失了上下文信息在排序中,搜索引擎的排序由多种因素决定,由于用户点击时doc的排名越靠前,点击的概率就越大,如果仅仅用点击来判断是否为正负样本,噪声比较大,难以收敛

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。