深度语义匹配模型-DSSM 及其变种
转自:http://ju.outofmemory.cn/entry/316660
感谢分享~
DSSM这篇paper发表在cikm2013,短小但是精炼,值得记录一下
ps:后来跟了几篇dssm的paper,一并记录在这里
DSSM
DSSM的结构
DSSM 最大的卖点在检索场景下 使用点击数据来训练语义层次的匹配,简单的来说,传统检索场景下的匹配主要有:
- 字面匹配:
TFIDF、BM25等 - 使用
LSA类模型进行语义匹配,但是效果不好
而DSSM训练出来之后,检索场景下用户输入query之后,可以根据该query计算各个doc的语义相似度。
这里上图最直接:

上面是 DSSM 训练的架构图:
- 输入的是一个
query和这个query相关的doc,这里的输入特征可以是最简单的one-hot,而需要train的是这个query下各个doc的相关性(DSSM里面使用点击率来代替相关性) 由于这种
one-hot的输入可能会有两个问题:- 导致
vocabulary太大 会出现
oov的问题因此输入特征之后的第一层是做一个叫做
Word Hashinging的操作
- 导致
- 接下来就是传统的神经网络了
$$l_i=f(W_il_{i-1}+b_i),i = 2,…,N-1 \\
y=f(W_Nl_{N-1}+b_N) $$
这里的
f是激活函数,文中使用$tanh$来计算:$f(x)=\frac{1-e^{-2x}}{1+e^{-2x}}$ - 得到的$y$就是语义特征了,query和doc之间的相关性就可以直接使用特想之间的相似性来度量,这里使用cosine来计算
$$R(Q,D)=cosine(y_Q,y_D) = \frac{y_Q^Ty_D}{||y_Q||||y_D||}$$ - 最终得到的相似度就可以去训练query和doc的相关性了
因此整个结构就可以看做做了一层 Word Hashing 之后去训练 DNN 网络
Word Hashing
Word Hashing 是paper非常重要的一个 trick ,以英文单词来说,比如 good ,他可以写成 #good# ,然后按tri-grams来进行分解为 #go goo ood od# ,再将这个tri-grams灌入到 bag-of-word 中,这种方式可以非常有效的解决 vocabulary 太大的问题(因为在真实的web search中vocabulary就是异常的大),另外也不会出现 oov 问题,因此英文单词才26个,3个字母的组合都是有限的,很容易枚举光。
那么问题就来了,这样两个不同的单词会不会产出相同的tri-grams,paper里面做了统计,说了这个冲突的概率非常的低,500K个word可以降到30k维,冲突的概率为0.0044%
但是在中文场景下,这个
Word Hashing估计没有这么有效了
因为直接使用了word hashing,因为无法记录上下文信息
训练DSSM
上面是前向计算过程,在进行训练的时候需要计算给定 Query 下与 Doc 的相关性:
$$P(D|Q) = \frac{exp(\gamma R(Q,D))}{\sum_{d_i \in D} exp(\gamma R(Q,D))}$$
最终他需要优化的损失函数为:
$$L(\Lambda) = - \text{log} \prod_{(Q,D^+)} P(D^+|Q)$$
$D^+$表示被点击的文档,这里就是最大化点击文档的相关性的最大似然
CDSSM
CDSSM (又称 CLSM :Convolutional latent semantic model)在一定程度上他可以弥补 DSSM 会丢失上下文的问题,他的结构也很简单,主要是将 DNN 替换成了 CNN

他的前向步骤主要计算如下:
1. 使用指定滑窗大小对输入序列取窗口数据(称为 word-n-gram )
2. 对于这些 word-n-gram 按 letter-trigram 进行转换构成representation vector(其实就是 Word Hashing )
3. 对窗口数据进行一次卷积层的处理(窗口里面含有部分上下文)
4. 使用 max-pooling 层来取那些比较重要的 word-n-gram
5. 再过一次FC层计算语义向量
6. 他最终输出的还是128维
> 因为使用 CDSSM 来做语义匹配的工作也是比较合适的
## DSSM-LSTM
既然是为了记录输入句子的上下文,这个无疑是 Lstm 这个模型更为擅长,因此又有了一种 Lstm 来构造的 DSSM 模型

这篇相对于 CDSMM 来说改的更为简单,其实就是将原始 DSSM 的模型替换为了 LSTM 模型…
MV-DSSM
MV-DSSM 里面的 MV 为 Multi-View ,一般可以理解为多视角的 DSSM ,在原始的DSSM中需要训练的有 Query 和 Doc 这两类的embedding,同时里面DNN 的所有权重都是共享的,而 MV-DSSM 他可以训练不止两类的训练数据,同时里面的深度模型的参数是相互独立:

基于 Multi-View 的 DSSM 是的参数变多了,由于多视角的训练,输入的语料也可以变得不同,自由度也更大了,但是随之带来的问题就是训练会变得越来越困难^_^
总结
DSSM 类的模型其实在计算相似度的时候最后一步除了使用Cosine,可能再接入一个MLP会更加好,因为Cosine是完全无参的。
DSSM 的优势:
DSSM看起来在真实检索场景下可行性很高,一方面是直接使用了用户天然的点击数据,出来的结果可行度很高,另一方面文中的doc可以使用title来表示,同时这个部分都是可以离线进行语义向量计算的,然后最终query和doc的语义相似性也是相当诱人DSSM出的结果不仅可以直接排序,还可以拿中间见过做文章:semantic feature可以天然的作为word embedding嘛
DSSM 的劣势:
- 用户信息较难加入(不过可以基于
MVDSSM改造) - 貌似训练时间很长啊
参考
- Huang P S, He X, Gao J, et al. Learning deep structured semantic models for web search using clickthrough data[C]// ACM International Conference on Conference on Information & Knowledge Management. ACM, 2013:2333-2338.
- Shen, Yelong, et al. “A latent semantic model with convolutional-pooling structure for information retrieval.” Proceedings of the 23rd ACM International Conference on Conference on Information and Knowledge Management. ACM, 2014.
- Palangi, Hamid, et al. “Semantic modelling with long-short-term memory for information retrieval.” arXiv preprint arXiv:1412.6629 (2014).
- Elkahky, Ali Mamdouh, Yang Song, and Xiaodong He. “A multi-view deep learning approach for cross domain user modeling in recommendation systems.” Proceedings of the 24th International Conference on World Wide Web. International World Wide Web Conferences Steering Committee, 2015.
深度语义匹配模型-DSSM 及其变种的更多相关文章
- DSSM:深度语义匹配模型(及其变体CLSM、LSTM-DSSM)
导语 在NLP领域,语义相似度的计算一直是个难题:搜索场景下Query和Doc的语义相似度.feeds场景下Doc和Doc的语义相似度.机器翻译场景下A句子和B句子的语义相似度等等.本文通过介绍DSS ...
- 基于PaddlePaddle的语义匹配模型DAM,让聊天机器人实现完美回复 |
来源商业新知网,原标题:让聊天机器人完美回复 | 基于PaddlePaddle的语义匹配模型DAM 语义匹配 语义匹配是NLP的一项重要应用.无论是问答系统.对话系统还是智能客服,都可以认为是问题和回 ...
- 从零开始搭建FAQ引擎--深度语义匹配
从零开始搭建FAQ引擎--深度语义匹配
- 深度树匹配模型(TDM)
深度树匹配模型(TDM) 算法介绍 Tree-based Deep Match(TDM)是由阿里妈妈精准定向广告算法团队自主研发,基于深度学习上的大规模(千万级+)推荐系统算法框架.在大规模推荐系统的 ...
- ACM MM | 中山大学等提出HSE:基于层次语义嵌入模型的精细化物体分类
细粒度识别一般需要模型识别非常精细的子类别,它基本上就是同时使用图像全局信息和局部信息的分类任务.在本论文中,研究者们提出了一种新型层次语义框架,其自顶向下地由全局图像关注局部特征或更具判别性的区域. ...
- 论文:利用深度强化学习模型定位新物体(VISUAL SEMANTIC NAVIGATION USING SCENE PRIORS)
这是一篇被ICLR 2019 接收的论文.论文讨论了如何利用场景先验知识 (scene priors)来定位一个新场景(novel scene)中未曾见过的物体(unseen objects).举例来 ...
- 基于海明距离的加权平均值人职匹配模型(Sqlserver2014/16内存表实现)
最近给某大学网站制作一个功能,需要给全校所有的学生提供就业单位发布职位的自动匹配,学生登陆就业网,就可以查看适合自己的职位,进而可以在线投递. 全校有几万名学生,注册企业发布的职位也有上万,如何在很短 ...
- NLP语义匹配
参考资料 [搜狗语义匹配技术前沿]https://www.jiqizhixin.com/articles/2018-10-25-16?from=synced&keyword=%E6%90%9C ...
- 学习笔记CB008:词义消歧、有监督、无监督、语义角色标注、信息检索、TF-IDF、隐含语义索引模型
词义消歧,句子.篇章语义理解基础,必须解决.语言都有大量多种含义词汇.词义消歧,可通过机器学习方法解决.词义消歧有监督机器学习分类算法,判断词义所属分类.词义消歧无监督机器学习聚类算法,把词义聚成多类 ...
随机推荐
- tornado 07 数据库—ORM—SQLAlchemy—查询
tornado 07 数据库—ORM—SQLAlchemy—查询 引言 #上节课使用query从数据库查询到了结果,但是query返回的对象是直接可用的吗 #在query.py内输入一下内容 from ...
- Python web前端 06 运算符 循环
Python web前端 06 运算符 循环 一.运算符 #JS六大数据类型 #number 数字 #string 字符串 #boolean 布尔型 #function 函数 #undefined 未 ...
- CSS3 选择器 修改 整数个样式
.blogbottom ul li:nth-child(4n){margin-right:0px;} 说明:4n就是每第4个.
- numpy-1
NumPy数组 NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的元数据 大部分操作仅针对于元数据,而不改变底层实际的数据. 关于NumPy数组有几点必 ...
- HDU6311 Cover (欧拉路径->无向图有最少用多少条边不重复的路径可以覆盖一个张无向图)
题意:有最少用多少条边不重复的路径可以覆盖一个张无向图 ,输出每条路径的边的序号 , 如果是反向就输出-id. 也就是可以多少次一笔画的方式画完这个无向图. 题解:我们已知最优胜的情况是整个图是欧拉图 ...
- 1095 解码PAT准考证 (25 分)
PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级:B 代表乙级: 第 2~4 位是考场编号,范围从 101 到 999: 第 5~10 位是考试日期,格式为年.月. ...
- js去掉浏览器右键点击默认事件(+vue项目开启右键行为)
js去掉浏览器右键点击默认事件 1.阻止整个页面所有的右击事件 document.oncontextmenu = function(){ return false;} 2.特定的区域/元素 docum ...
- Oracle9i之xmltype应用(1)
oracle从9i开始支持一种新的数据类型-- xmltype,用于存储和管理xml数据,并提供了很多的functions,用来直接读取xml文档和管理节点.下面将介绍xmltype的一些基本使用. ...
- 搭建Redis报错
2018-10-26 报错信息 You need tcl 8.5 or newer in order to run the Redis test 原因 缺少 tcl 插件 解决方式 wget http ...
- Linux-密码复杂度限制
前言 设置一个复杂的密码,可以有效的提升系统的安全性.在Linux上有PAM(Pluggable Authentication Modules)里面有一个pam_cracklib.so来控制密码的复杂 ...