专栏首页null的专栏深度学习算法原理——Deep Structured Semantic Models(DSSM)

深度学习算法原理——Deep Structured Semantic Models(DSSM)

论文地址:Learning deep structured semantic models for web search using clickthrough data

深度语义模型(Deep Structured Sematic models, DSSM)是在2013年由微软的研究人员提出,主要解决的是在搜索的过程中,对于传统的依靠关键词匹配的方法的弊端(语义上的相似)提出的潜在语义模型。

1. DSSM的网络结构

其具体的计算过程包括两个方面:

  • 将query和documents映射到同一个低维的向量空间中;
  • 利用余弦计算相似性。

首先将query和documents分别表示成向量xQx_QxQ​和xDx_DxD​,通过深度网络将其表示为同一个空间中的向量yQy_QyQ​和yDy_DyD​。计算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​​

而xxx与yyy之间,通过深层的神经网络连接(注意:上图中l1l_1l1​层时word hashing)。对于正常的过程中,lil_ili​层的输出为:

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表示成向量xQx_QxQ​和xDx_DxD​,有多种不同的方法,在文章中,作者针对英文文本设计了word hashing的方法。在中文场景下我们也可以使用预训练好的词向量。我们重点需要理解如何去训练这个网络。

2. DSSM的训练

在上面的计算过程中,我们将相似性转换成后验的分布,以保证越相似的概率值越大: 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γ为平滑因子。训练的过程中,对于QQQ,选择一个正样本D+D^+D+以及4个负样本{Dj−;j=1,⋯ ,4}\left \{ D_j^-;j=1,\cdots,4 \right \}{Dj−​;j=1,⋯,4},损失函数为:

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)

在文章的APPENDIX部分,作者给出了网络中参数的具体计算过程。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 可扩展机器学习——概述

    注:这是一份学习笔记,记录的是参考文献中的可扩展机器学习的一些内容,英文的PPT可见参考文献的链接。这个只是自己的学习笔记,对原来教程中的内容进行了梳理,有些图...

    zhaozhiyong
  • 优化算法——遗传算法

    遗传算法是我进入研究生阶段接触的第一个智能算法,从刚开始接触,到后来具体去研究,再到后来利用遗传算法完成了水利水电的程序设计比赛,整个过程中对遗传算法有了更深刻...

    zhaozhiyong
  • 简单易学的机器学习算法——梯度提升决策树GBDT

    梯度提升决策树(Gradient Boosting Decision Tree,GBDT)算法是近年来被提及比较多的一个算法,这主要得益于其算法的性能,以及该算...

    zhaozhiyong
  • Android 仿微信, QQ 裁剪

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/...

    用户2965908
  • 【leetcode算法-判断回文数】

    用户5640963
  • 【LeetCode】35. 搜索插入位置

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

    韩旭051
  • PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头2

            之前的博文中介绍了IMAGE_FILE_HEADER结构,现在来讨论比较复杂的“可选文件头”结构体。(转载请指明来自breaksoftware的...

    方亮
  • BOM

    BOM 浏览器对象模型 定义了js操作浏览器的属性和方法 open(页面地址的url,打开的方式) 第一个参数,如果为空,默认打开一个空白的页码 第二个...

    河湾欢儿
  • 《Drools7.0.0.Final规则引擎教程》第4章 4.4 约束(Pattern的一部分)

    4.4.3 约束(Pattern的一部分) 前面我们已经介绍了条件约束在Pattern中位置了,那么什么是条件约束呢?简单来说就是一个返回true或者false...

    用户1161110
  • KVC/KVO的理解

    要操作一个对象首先要把它找出来,KVC底层机制实现了其一步步的查找规则。了解它的处理机制更有利于设计我们的类,方法实现等操作。

    Light413

扫码关注云+社区

领取腾讯云代金券