专栏首页AI科技时讯DSSM: Learning deep structured semantic models for web search

DSSM: Learning deep structured semantic models for web search

1.背景

DSSM是Deep Structured Semantic Model的缩写,即我们通常说的基于深度网络的语义模型,其核心思想是将query和doc映射到到共同维度的语义空间中,通过最大化query和doc语义向量之间的余弦相似度,从而训练得到隐含语义模型,达到检索的目的。DSSM有很广泛的应用,比如:搜索引擎检索,广告相关性,问答系统,机器翻译等。

2.DSSM

2.1简介

典型的DNN结构是将原始的文本特征映射为在语义空间上表示的特征。DNN在搜索引擎排序中主要是有下面2个作用:

  1. 将query中term的高维向量映射为低维语义向量
  2. 根据语义向量计算query与doc之间的相关性分数

通常,

用来表示输入的term向量,

表示输出向量,

表示隐藏层,

表示第

层的参数矩阵,

表示 第

个偏置项。

我们使用

作为输出层和隐藏层的激活函数,有下列公式。

在搜索排序中,我们使用

来表示一个query,

来表示一个doc,那么他们的相关性分数可以用下面的公式衡量:

其中,

是query与doc的语义向量。在搜索引擎中,给定一个query,会返回一些按照相关性分数排序的文档。

通常情况下,输入的term向量使用最原始的bag of words特征,通过one-hot进行编码。但是在实际场景中,词典的大小将会非常大,如果直接将该数据输入给DNN,神经网络是无法进行训练和预测的。因此,在DSSM中引入了word hashing的方法,并且作为DNN中的第一层。

2.2 word hashing

word hashing方法是用来减少输入向量的维度,该方法基于字母的

-gram。给定一个单词(good),我们首先增加词的开始和结束部分(#good#),然后将该词转换为字母

-gram的形式(假设为trigrams:#go,goo,ood,od#)。最后该词使用字母

-gram的向量来表示。

这种方法的问题在于有可能造成冲突,因为两个不同的词可能有相同的

-gram向量来表示。下图显示了word hashing在2个词典中的统计。与原始的ont-hot向量表示的词典大小相比,word hashing明显降低了向量表示的维度。

2.3 DSSM的学习

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

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

其中

是一个softmax函数的平滑因子,

表示被排序的候选文档集合,在实际中,对于正样本,每一个(query, 点击doc)对,使用

表示;对于负样本,随机选择4个曝光但未点击的doc,用

来表示。

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

其中

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

3.总结

DSSM的提出主要有下面的优点:

  • 解决了LSA、LDA、Autoencoder等方法存在的一个最大的问题:字典爆炸(导致计算复杂度非常高),因为在英文单词中,词的数量可能是没有限制的,但是字母

-gram的数量通常是有限的

  • 基于词的特征表示比较难处理新词,字母的

-gram可以有效表示,鲁棒性较强

  • 使用有监督方法,优化语义embedding的映射问题
  • 省去了人工的特征工程

缺点:

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

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

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

CNN-DSSM:

https://link.zhihu.com/?target=http%3A//www.iro.umontreal.ca/~lisa/pointeurs/ir0895-he-2.pdf

LSTM-DSSM:

https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1412.6629.pdf

MV-DSSM:

https://link.zhihu.com/?target=https%3A//www.microsoft.com/en-us/research/wp-content/uploads/2016/02/frp1159-songA.pdf

本文分享自微信公众号 - AI科技时讯(aiblog_research),作者:知乎

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-23

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 欧氏距离和余弦相似度

    最近在做以图搜图的功能,在评价两个图像相似性时候,尝试了这两种指标,两者有相同的地方,就是在机器学习中都可以用来计算相似度,但是两者的含义有很...

    用户3578099
  • python包:urllib——使用urllib下载无限制链接图片

    需要将无限制链接转换为本地图片进行后续处理,这里需要用到python的urllib包,该包收集了多个涉及 URL 的模块的包:

    用户3578099
  • 目标检测图像数据增强(Data Augmentation)—— 旋转

    由于业务需求,需要对部分不符合检测结果的图像进行过滤,因此需要对之前的检测项目进行优化。常见问题有如下亮点:

    用户3578099
  • [WCF REST] 一个简单的REST服务实例

    微软在WCF 3.5中就通过提供基于Web HTTP的编程模式使我们很容易地创建基于REST的服务,WCF 4.0中对此进行了较大的改进。为了让读者对REST在...

    蒋金楠
  • Oracle 18c新特性:Schema-Only 帐号提升应用管理安全性

    在 Oracle 18c 中,一个特殊类型的帐号被引入到数据库当中,这特特性被称为 Schema-Only 帐号,这个帐号通过 NO AUTHENTICATIO...

    数据和云
  • 【Android】属性动画的使用理解

    属性动画的教程网上已经特别多了,本篇也不打算再去各种详解知识点,主要就是记录题主学习属性动画时的碰到的一些困惑,以及后来自己的理解。如果有人也碰到相似的问题,正...

    请叫我大苏
  • Python绘制傅里叶变换、反变换与带通滤波图像

    给定信号,对其进行傅里叶变换然后再进行反变换,绘制原始信号、傅里叶变换、傅里叶反变换的结果图像。给定信号,滤除其中某个频率范围的信号,绘制图像。

    Python小屋屋主
  • 浅谈小波分析

    小波的发展历史与驱动 傅里叶变换 短时傅里叶变换 小波变换 傅里叶变换 小波变换 三种变换的对比 小波变换 离散小波变换 连续小波变换 小波的多分辨率阐述 信号...

    用户1147754
  • C语言(各种基本定义)

    数组指针即“指向某个数组的指针”,指针数组即“存放了一堆指针的数组”,函数指针即“指向某个函数的指针”,这些与其说是编程语法,不如说是小学语文。

    用户2617681
  • 指针数组和数组指针

    指针数组 :就是指针的数组,数组的元素是指针;  数组指针:就是指向数组的指针。 简单举例说明:     int *p1[10];    声明了一个数组,数组的...

    lpxxn

扫码关注云+社区

领取腾讯云代金券