DSSM论文阅读与总结

DSSM(Deep Structured Semantic Model)是一种基于深度网络的语义模型,通过将query和doc映射到共同的语义空间,最大化它们之间的余弦相似度,解决搜索引擎检索、广告相关性等问题。它克服了LSA、LDA等方法的字典爆炸问题,使用wordhashing技术降低向量空间,并通过有监督学习优化语义embedding。

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

1.背景

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

2.DSSM

2.1简介

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

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

2.2 word hashing

 

2.3 DSSM的学习

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

3.总结

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

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

缺点:

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

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

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

CNN-DSSM:http://www.iro.umontreal.ca/~lisa/pointeurs/ir0895-he-2.pdf

LSTM-DSSM:https://arxiv.org/pdf/1412.6629.pdf

MV-DSSM:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/frp1159-songA.pdf

 

水平有限,本文如有错误的地方,请私信或者留言指出,谢谢。

### DSSM模型概述 DSSM(Deep Structured Semantic Model)是一种深度学习框架下的语义匹配模型,最初由微软研究院提出并应用于网页搜索领域[^3]。该模型旨在通过深层神经网络来捕捉查询词文档之间的潜在关系,从而实现更精准的信息检索。 #### 模型结构特点 DSSM采用双塔架构设计,在训练过程中分别构建两个独立的子网路处理输入端的不同对象——即用户行为数据和目标物品描述信息。这两个分支最终会输出各自对应的低维稠密向量表示形式,进而计算两者间的余弦相似度得分作为预测结果[^1]。 具体来说: - **左塔**:负责编码用户的兴趣偏好或者历史交互记录; - **右塔**:专注于表征候选项目的属性特征。 这种分离式的建模方式不仅有助于提高系统的可扩展性和灵活性,而且能够有效降低大规模稀疏矩阵运算带来的性能瓶颈问题[^5]。 #### 工作机制解析 在实际操作层面,DSSM利用点击日志中的正负样本对来进行监督式学习,以此不断调整参数直至收敛至最优解。对于每一对<Query, Document>组合而言,如果存在真实的浏览/购买事件,则标记为正面实例;反之则视为负面案例参迭代更新过程[^2]。 此外,为了更好地适应特定应用场景的需求,研究者们还针对原始版本做了诸多改进措施,比如引入注意力机制增强局部关联权重、融合多源异构数据扩充表达空间等等[^4]。 ```python import tensorflow as tf class DSMM(tf.keras.Model): def __init__(self, vocab_size, embedding_dim=128, hidden_units=[1024, 512]): super(DSMM, self).__init__() # 定义共享层 self.embedding_layer = tf.keras.layers.Embedding(input_dim=vocab_size + 1, output_dim=embedding_dim) # 构造双向LSTM单元 self.lstm_left = tf.keras.layers.Bidirectional( tf.keras.layers.LSTM(hidden_units[0], return_sequences=True)) self.lstm_right = tf.keras.layers.Bidirectional( tf.keras.layers.LSTM(hidden_units[0], return_sequences=True)) # 添加全连接层 self.dense_layers = [ tf.keras.layers.Dense(unit, activation='relu') for unit in hidden_units] # 输出层 self.out_layer = tf.keras.layers.Dense(1, activation=None) def call(self, inputs): query_ids, doc_ids = inputs embedded_query = self.embedding_layer(query_ids) encoded_query = self.lstm_left(embedded_query) embedded_doc = self.embedding_layer(doc_ids) encoded_doc = self.lstm_right(embedded_doc) # 计算cosine similarity cosine_similarities = tf.reduce_sum(encoded_query * encoded_doc, axis=-1) / ( tf.norm(encoded_query, axis=-1) * tf.norm(encoded_doc, axis=-1)) logits = self.out_layer(cosine_similarities) return logits ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值