1. 概述

深度语义模型(Deep Structured Sematic models, DSSM)是在2013年由微软的研究人员提出,主要解决的是在搜索的过程中,对于传统的依靠关键词匹配的方法的弊端(语义上的相似)提出的潜在语义模型。DSSM算法在实际工作中也被证明是卓有成效的算法,不仅在搜索中得到广泛的应用,同时也被使用在推荐系统的召回中。

2. 算法的基本思想

2.1. DSSM的网络结构

DSSM算法的网络结构如下所示:


从上述的网络结构图中可以看出,DSSM的核心思想是将不同的对象映射到统一的语义空间中,并在该空间中计算对象之间的相似度。 在其具体的计算过程包括两个方面:第一,将query和documents映射到同一个低维的向量空间中;第二,利用余弦计算相似性。

首先将query和documents分别表示成向量xQx_QxQ​和xDx_DxD​,在参考文献的论文中,作者针对向量的构建过程给出了一些具体的建议,针对具体的任务可以有选择的采用。得到query和documents的对应向量后,通过深层神经网络将其表示为同一个空间中的向量yQy_QyQ​和yDy_DyD​,即所谓的语义特征(Semantic feature)。具体的计算过程如下所示:

li=f(Wili−1+bi)l_i=f\left ( W_il_{i-1}+b_i \right )li​=f(Wi​li−1​+bi​)

其中,WiW_iWi​是第lil_ili​层网络的权重,bib_ibi​是第lil_ili​层网络的偏置。fff是第lil_ili​层网络的激活函数。

在得到query和documents的语义特征后,通过cosine计算query和documents之间的相似性:

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

2.2. DSSM模型的损失函数

假设给定的query为QQQ,document为DDD,那么相似的概率P(D∣Q)P\left ( D\mid Q \right )P(D∣Q)为:

P(D∣Q)=exp(γR(Q,D))∑D′∈Dexp(γR(Q,D′))P\left ( D\mid Q \right )=\frac{exp\left ( \gamma R\left ( Q,D \right ) \right )}{\sum _{{D}'\in \mathbf{D}}exp\left ( \gamma R\left ( Q,{D}' \right ) \right )}P(D∣Q)=∑D′∈D​exp(γR(Q,D′))exp(γR(Q,D))​

其中γ\gammaγ为平滑系数。在模型训练的过程中,我们希望使得相似的文档的概率较大,即对于正样本(Q,D+)\left ( Q,D^+ \right )(Q,D+),使得其概率最大,通过最大似然,可以得到最终的损失函数:

L(Λ)=−log∏(Q,D+)P(D+∣Q)L\left ( \Lambda \right )=-log\prod _{\left ( Q,D^+ \right )}P\left ( D^+\mid Q \right )L(Λ)=−log(Q,D+)∏​P(D+∣Q)

以上的损失函数是原始论文中提及的损失函数,同样,可以采用其他的损失函数形式,如直接使用相似性或者采用Triplet loss。

2.3. DSSM模型的训练

在训练的过程中,样本的构建也至关重要,对于QQQ,选择一个正样本D+D^+D+以及4个负样本{Dj−;j=1,⋯,4}\left \{ D_j^-;j=1,\cdots,4 \right \}{Dj−​;j=1,⋯,4},除了样本选择之外,需要计算损失函数的梯度,以便计算除网络中的参数WiW_iWi​和bib_ibi​。

参考文献

  • Learning deep structured semantic models for web search using clickthrough data

【深度学习算法原理】Deep Structured Semantic Models(DSSM)相关推荐

  1. DSSMs: Deep Structured Semantic Models

    Attention! 我的Dr.Sure项目正式上线了,主旨在分享学习Tensorflow以及DeepLearning中的一些想法.期间随时更新我的论文心得以及想法. Github地址:https:/ ...

  2. 论文翻译1-----DSSM:Deep Structured Semantic Models

    说明: 论文全部名称:Learning Deep Structured Semantic Models for Web Search using Clickthrough Data 论文中文全称:使用 ...

  3. 推荐系统(十七)双塔模型:微软DSSM模型(Deep Structured Semantic Models)

    推荐系统(十七)双塔模型:微软DSSM模型(Deep Structured Semantic Models) 推荐系统系列博客: 推荐系统(一)推荐系统整体概览 推荐系统(二)GBDT+LR模型 推荐 ...

  4. 深度学习算法原理_用于对象检测的深度学习算法的基本原理

    深度学习算法原理 You just got a new drone and you want it to be super smart! Maybe it should detect whether ...

  5. DSSM(DEEP STRUCTURED SEMANTIC MODELS)

    Huang, Po-Sen, et al. "Learning deep structured semantic models for web search using clickthrou ...

  6. TensorFlow深度学习算法原理与编程实战 人工智能机器学习技术丛书

    作者:蒋子阳 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2019-01-01 TensorFlow深度学习算法原理与编程实战 人工智能机器学习技术丛书 ISBN:97875170682 ...

  7. Python大数据综合应用 :零基础入门机器学习、深度学习算法原理与案例

    机器学习.深度学习算法原理与案例实现暨Python大数据综合应用高级研修班 一.课程简介 课程强调动手操作:内容以代码落地为主,以理论讲解为根,以公式推导为辅.共4天8节,讲解机器学习和深度学习的模型 ...

  8. Learning Deep Structured Semantic Models for Web Search using Clickthrough Data (DSSM)

    主要研究问题: 给定一个查询(query)和一组文档(document),返回一个排序(ranking),系统根据查询所对应文档的契合度高低排序. 论文主要结构: 一.Abstract 1.基于关键词 ...

  9. 深度学习算法原理——LSTM

    1. 概述 在循环神经网络RNN一文中提及到了循环神经网络RNN存在长距离依赖的问题,长短期记忆(Long Short-Term Memory,LSTM)网络便是为了解决RNN中存在的梯度爆炸的问题而 ...

  10. ZAO 背后的深度学习算法原理浅析

    ZAO最近火爆,成为现象级产品之一,引起大家的广泛关注,ATA上面已经有同学做了一些说明分析,链接如下: https://www.atatech.org/articles/148375?spm=ata ...

最新文章

  1. 阿里巴巴Java开发规约的IDEA插件使用
  2. cuda win10安装
  3. linux cpu占用100原因查询,如何根据查询异常时间节点和连接进而确定CPU使用率100%的原因...
  4. HIN2Vec:异质信息网络中的表示学习 | PaperDaily #18
  5. QT学习:容器类及QVariant类
  6. bzoj2049 [Sdoi2008]Cave 洞穴勘测——LCT
  7. Nginx+Tomcat动静态资源分离
  8. 推荐文章:机器学习:“一文读懂机器学习,大数据/自然语言处理/算法全有了...
  9. JavaScript学习笔记(四)--复杂数据类型Object
  10. Dubbo消费者服务的订阅
  11. PyTorch 成程序员“新宠”,TensorFlow 风光不再?
  12. python编程语言-python编程语言基础知识总结
  13. 蓝桥杯2017年第八届C/C++省赛C组第三题-算式900
  14. SSH框架 openSessionInView的配置
  15. 编程基本功:做自解释的测试文档
  16. 7.10 添加房间参数
  17. mysql frm 修复_使用mysqlfrm恢复frm表结构
  18. ASP.NET Web API实现简单的文件下载与上传
  19. Gtest 测试指导 入门基础(A)
  20. 安卓Android sqllite实现保存数据和读数据

热门文章

  1. 排序算法伪代码以及python实现——插入,归并,快速,堆,计数
  2. Recovery流程梳理
  3. 计算机原理加法指令流程图,加法器电路设计方案汇总(八款模拟电路设计原理详解)...
  4. C语言超级搞笑的代码,冷笑话我们程序员也会讲的啊!
  5. 关于传递函数的频率响应和低通滤波器
  6. Ping其他电脑ping不通的解决方法
  7. cups ipp oracle,架设Linux打印服务器通过Web界面CUPS管理其他电脑访问CUPS web管理界面IPP协议共享本机打印机...
  8. 形容人的内核是什么意思_cpu核数是什么意思
  9. python爬取京东商品信息_使用selenium爬取京东商品信息
  10. TCP序列号(Sequence Number)和确认号(Acknowledgment Number)