DSSM (Deep Structured Semantic Models)用于文本相似度匹配场景,是为了平衡搜索的关键词,和被点击的文本标题之间的相关性。

论文地址:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/cikm2013_DSSM_fullversion.pdf

目录

1、DSSM原理

1.1、wordhash

2、DSSM模型训练

3、DSSM总结

4、DSSM应用


1、DSSM原理

通过query和document的点击曝光日志,用DNN把query和document表达为低维语义向量,并通过余弦相识度来计算两个语义向量的距离,最终训练出语义相识度模型。

该模型既可以用来预测两个句子的语义相似度,又可以获得某句子的低维语义Embedding向量。

(总而言之,核心就是将文本信息转为embbeding后,两个embedding求相似度)

It uses a DNN to map high-dimensional sparse text features into low-dimensional dense features in a semantic space. The first hidden layer, with 30k units, accomplishes word hashing. The word-hashed features are then projected through multiple layers of non-linear projections. The final layer’s neural activities in this DNN form the feature in the semantic space.

在原始的paper中,dssm主要用来建模每一个query与多个documents的相似度,通过原始的text,word hashing之后,经过多层线性投影,获得128维的隐语义向量,进行相似度计算。

Q代表Query信息,D表示Document信息。

(1)Term Vector:表示文本的Embedding向量;

(2)Word Hashing技术:为解决Term Vector太大问题,对bag-of-word向量降维;(在搜索引擎中,给定一个query,会返回一些按照相关性分数排序的文档。通常情况下,输入的term向量使用最原始的bag of words特征,通过one-hot进行编码。但是在实际场景中,词典的大小将会非常大,如果直接将该数据输入给DNN,神经网络是无法进行训练和预测的。因此,在DSSM中引入了word hashing的方法,并且作为DNN中的第一层。)

(3)Multi-layer nonlinear projection:表示深度学习网络的隐层;

(4)Semantic feature :表示Query和Document 最终的Embedding向量;

(5)Relevance measured by cosine similarity:表示计算Query与Document之间的余弦相似度;

(6)Posterior probability computed by softmax:表示通过Softmax 函数把Query 与正样本Document的语义相似性转化为一个后验概率;(具体公式可以看参考1)

我们拆分一下,这样的塔式结构,单独的结构:

DSSM module主要包括两个部分:

  • 特征的抽象提取,主要是为了提取出对任务有效的模型特征;
  • loss函数,主要是为了定义metric标注,建模问题相似度描述;

DSSM module中,特征的抽取部分f(x), g(x) 可以是包括CNN、RNN、FC在内的任意网络类型,或者组合,loss 函数针对建模问题不同,解决分类应用时,例如交叉熵问题时,使用交叉熵;当处理回归问题时,使用cosine距离;解决排序问题时,则使用pairwise loss函数。

1.1、wordhash

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

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

2、DSSM模型训练

query、点击 doc、未点击doc 共享 W

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

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

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

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

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

3、DSSM总结

优点:

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

缺点:

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

对于中文而言,处理方式与英文有很多不一样的地方。中文往往需要进行分词,但是我们可以仿照英文的处理方式,将中文的最小粒度看作是单字(在某些文献里看到过用偏旁部首,笔画,拼音等方法)。因此,通过这种word hashing方式,可以将向量空间大大降低。

4、DSSM应用

DSSM文本匹配模型在苏宁商品语义召回上的应用

【深度学习】DSSM召回模型(2)

【深度学习】DSSM代码解析(3)

参考:

实践DSSM召回模型 - 王多鱼的文章 - 知乎

DSSM论文阅读与总结 - 小孩不笨的文章 - 知乎

蚂蚁金融NLP竞赛——文本语义相似度赛题总结

keras版本yolov3提示str object has no attribute decode

使用kears训练的时候,遇到问题

original_keras_version = f.attrs['keras_version'].decode('utf8')
AttributeError: 'str' object has no attribute 'decode

查看了一下我的h5py==3.1

解决办法:

卸载原来的h5py模块,安装2.10版本

pip install h5py==2.10 -i https://pypi.tuna.tsinghua.edu.cn/simple/

【深度学习】DSSM模型介绍(1)相关推荐

  1. NVIDIA GPUs上深度学习推荐模型的优化

    NVIDIA GPUs上深度学习推荐模型的优化 Optimizing the Deep Learning Recommendation Model on NVIDIA GPUs 推荐系统帮助人在成倍增 ...

  2. 谷歌、阿里们的杀手锏:三大领域,十大深度学习CTR模型演化图谱

    作者 | 王喆 来源 | 转载自知乎专栏王喆的机器学习笔记 今天我们一起回顾一下近3年来的所有主流深度学习CTR模型,也是我工作之余的知识总结,希望能帮大家梳理推荐系统.计算广告领域在深度学习方面的前 ...

  3. 谷歌、阿里们的杀手锏:3大领域,10大深度学习CTR模型演化图谱(附论文)

    来源:知乎 作者:王喆 本文约4000字,建议阅读8分钟. 本文为你介绍近3年来的所有主流深度学习CTR模型. 今天我们一起回顾一下近3年来的所有主流深度学习CTR模型,也是我工作之余的知识总结,希望 ...

  4. 深度学习CTR模型最全演化图谱 [王喆观点]

    毕业于清华大学计算机系的王喆学长回顾了近3年来的所有主流深度学习CTR (click through rate) 模型,并梳理推荐系统.计算广告领域在深度学习方面的前沿进展.内容来源:https:// ...

  5. [深度学习] 分布式Horovod介绍(四)

    [深度学习] 分布式模式介绍(一) [深度学习] 分布式Tensorflow介绍(二) [深度学习] 分布式Pytorch 1.0介绍(三) [深度学习] 分布式Horovod介绍(四) 实际应用中, ...

  6. [深度学习] 分布式Pytorch介绍(三)

    [深度学习] 分布式模式介绍(一) [深度学习] 分布式Tensorflow介绍(二) [深度学习] 分布式Pytorch介绍(三) [深度学习] 分布式Horovod介绍(四)  一  Pytorc ...

  7. [深度学习] 分布式模式介绍(一)

    [深度学习] 分布式模式介绍(一) [深度学习] 分布式Tensorflow介绍(二) [深度学习] 分布式Pytorch 1.0介绍(三) [深度学习] 分布式Horovod介绍(四) 一  分布式 ...

  8. 深度学习主流框架介绍(PyTorch、TensorFlow、Keras、Caffe、Theano、MXNET)

    深度学习主流框架介绍(PyTorch.TensorFlow.Keras.Caffe.Theano.MXNET) 1.Theano Theano是最早的深度学习框架之一,由 Yoshua Bengio ...

  9. 深度学习推荐模型-DIN

    深度学习推荐模型-DIN 本文参考链接,仅供个人学习: https://github.com/datawhalechina/team-learning-rs/tree/master/DeepRecom ...

  10. 深度学习推荐模型-DeepCrossing

    深度学习推荐模型-DeepCrossing 本文参考链接,仅供个人学习:https://github.com/datawhalechina/team-learning-rs/tree/master/D ...

最新文章

  1. python中的几种copy用法_Python3中copy模块常用功能及其他几种copy方式比较
  2. Call Exec in PeopleCode
  3. 在Eclipse Indigo安装UML2 Tools(反向工程)
  4. DOS Network一月项目月报
  5. 黑苹果macOS Sierra 10.12 安装教程(venue11 pro测试)
  6. linux top cpu瓶颈,Linux命令----分析CPU的瓶颈
  7. activereports_报表 ActiveReports 迎来 .Net Core 时代!一键创建 .Net Core 项目
  8. JVM 性能调优监控工具
  9. LintCode-7-二叉树的序列化和反序列化
  10. java executor spring_java 线程池(ExecutorService与Spring配置threadPoolTaskExecutor)
  11. 10-RabbitMQ-整合SpringBoot
  12. Delphi Web前端开发教程(6):基于TMS WEB Core框架
  13. Android+8.0+微信表情,微信8.0表情为什么不动?微信8.0哪些表情有动画效果?
  14. 虚幻引擎 4 渲染流程分析
  15. 软考高级 真题 2014年下半年 信息系统项目管理师 综合知识
  16. b站视频素材哪里找?怎么找b站素材?
  17. 海康sdk docker虚拟化
  18. deepin更新失败_更新失败
  19. 估值调整 - 凸性调整
  20. confluence 制作流程图_超好用的流程图绘图工具你还没get吗?

热门文章

  1. py+selenium+IE10【IE已停止工作】【已解决】
  2. VisualVM安装插件报错 总结
  3. android编程strings,Android开发: strings.xml文件中的错误
  4. ubuntu root 用户切换到普通用户
  5. java中的synthetic
  6. 微信小程序去除console.log()
  7. 如何将 DICOM 图像转换为 JPG 或 PNG
  8. 反编译APK分析APP的加密算法
  9. HTML基础一:标题,段落,换行,强调,符号等
  10. 互联网骨干网全面解析