语义相似度匹配(一)—— DSSM模型

一、简介

论文:Learning Deep Structured Semantic Models for Web Search using Clickthrough Data

微软13年提出的计算文本相似度的深度学习模型,核心思想是将query和doc映射到到共同维度的语义空间中,通过最大化query和doc语义向量之间的余弦相似度,从而训练得到隐含语义模型,达到检索的目的。DSSM有很广泛的应用,比如:搜索引擎检索,广告相关性,问答系统,机器翻译等。

网络框架如下:

二、 原理

对输入文本的one-hot向量,通过Word Hashing达到降维的效果,接下来送到传统的神经网络抽取语义特征,计算语义特征之间的相似度。

2.1 Word hashing

需要注意的是原论文中的DSSM处理的数据是英文数据,对于英文数据来说,英文单词的数量是很庞大的,可以看作无限集合,但是26个英文字母对应的ngram集合就是有限的集合。论文采用对单词进行切分为ngram形式,从而达到一个初步降维的效果。

例如,对于单词good,首先添加前后标记“#good#”,进一步切分为trigram形式,[ #go, goo, ood, od#]。这样可能面临一个问题,可能有的单词对应的ngram word hashing结果是相同的,会有冲突,作者进行了统计,得到如下结论:

1. word hashing能有效达到降维效果 

2. 冲突的比例很少

另外Word Hashing还有个优点是:基于词的特征表示比较难处理新词,字母的 ngram可以有效表示,鲁棒性较强。

2.2 全连接层

采用全连接, 通过输入乘W权重,再加上bias;激活函数采用了tanh激活函数:

经过N层全连接层之后得到y值,即通过全连接层抽取特征得到的向量值

2.3 相似度计算

相似度计算:

最后通过余弦相似度计算query和document之间的相似度:

概率值计算:

最后通过softmax进行归一化:

这里需要注意一下, 这里添加了个作为平滑因子,这里这个平滑因子很重要,控制值的大小,越大,正例值越大,负例值越小,对训练阶段有影响。 对训练梯度影响比较大,有时候收敛比较快,有时候会导致过拟合。

2.4 损失函数

损失函数采用了对数损失函数,且只对正例数据最大化:

这里采用对数损失函数的原因,是因为前面使用了概率计算,这样在训练阶段通过极大似然估计来最小化损失函数,模型通过梯度下降来优化。

三、实验效果

四、优缺点:

DSSM算法有以下优缺点:

优点:

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

缺点:

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

五、扩展

中文处理

大家注意到,论文中是对英文数据进行处理,包括Word Hashing 只对英文有效,对于中文反而会起到反作用,引起维度爆炸。但是作者利用DL得到特征表示,最后通过余弦计算相似度的思想是可以借鉴的。 这里想起来要说一点,论文提到可以通过存储特征表示的y值,从而达到降低线上时间成本。

这里我们对于中文的使用过程中,通常将DNN替换成BiLSTM+attention或者BERT,输入端直接用词向量作为输入即可。

模型变种

对DSSM的优化出现了很多的变种,有CNN-DSSM,LSTM-DSSM,MV-DSSM等。大多对隐藏层做了一些修改,原论文如下:

CNN-DSSM:http://www.iro.umontreal.ca/~lisa/pointeurs/ir0895-he-2.pdf

LSTM-DSSM:https://arxiv.org/pdf/1412.6629.pdf

MV-DSSM:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/frp1159-songA.pdf

七、参考链接:

DSSM论文阅读与总结 https://zhuanlan.zhihu.com/p/53326791

DSSM(以及CNN-DSSM,LSTM-DSSM) https://blog.csdn.net/jokerxsy/article/details/107169406 

DSSM算法-计算文本相似度  https://www.cnblogs.com/wmx24/p/10157154.html

基于深度学习的语义匹配若干模型DSSM,ESIM, BIMPM, ABCNN https://blog.csdn.net/pengmingpengming/article/details/88534968

才疏学浅,如哪里有错误,请指出,谢谢!

部分参考其它博文,如有侵权,请联系我!

猜你喜欢

转载自blog.csdn.net/katrina1rani/article/details/110125255