DSSM模型理解与其在广告推荐场景下的使用(1)

        个人目前所接触的深度模型中,都和神经网络有关,所以在学习和使用深度模型之前,有必要了解和熟悉神经网络的原理,以及后向优化过程,其实就是链式求导,最好自己跟着教学推到一遍。这样有关神经网络的变种模型也比较好理解。

        DSSM在论文Learning Deep Structured Semantic Models for Web Search using Clickthrough Data中有详细介绍,首先结合网上其他人的经验和个人理解来总结一下该模型的原理:

        传统的输入层是用 Embedding 的方式(如 Word2Vec 的词向量)或者主题模型的方式(如 LDA 的主题向量)来直接做词的映射,再把各个词的向量累加或者拼接起来,由于 Word2Vec 和 LDA 都是无监督的训练,这样会给整个模型引入误差,DSSM 采用统一的有监督训练,不需要在中间过程做无监督模型的映射,因此精准度会比较高。像LDA这种语义模型,对于ctr预估场景下,是非监督模型,这在实际应用中并没有达到理想效果。使用深度模型结构,将查询和document处理成一个共同的低维空间中,在此空间中,给定查询的document已经被计算为他们之间的距离。

DSSM全称为Deep Structured Semantic Models,即深度结构化语义模型,DSSM分为三层:1)  输入层,2) 表示层,3) 匹配层,4) 匹配得分。

 1)  输入层

        英文的输入层处理方式是通过word hashing。这样做的好处有两个:首先是压缩空间,50 万个词的 one-hot 向量空间可以通过 letter-trigram 压缩为一个 3 万维的向量空间。其次是增强范化能力,三个字母的表达往往能代表英文中的前缀和后缀,而前缀后缀往往具有通用的语义。


        文章中之所以使用3 个字母的切分粒度,是综合考虑了向量空间和单词冲突,以 50 万个单词的词库为例,2 个字母的切分粒度的单词冲突为 1192(冲突的定义:至少有两个单词的 letter-bigram 向量完全相同),而 3 个字母的单词冲突降为 22 效果很好,且转化后的向量空间 3 万维不是很大,综合考虑选择 3 个字母的切分粒度。

中文表示可以采用one-hot

    DSSM 的表示层采用 BOW(Bag of words)的方式,相当于把字向量的位置信息抛弃了,整个句子里的词都放在一个袋子里了,不分先后顺序。

 2)  表示层

        表示层为DNN模型。

 3) 匹配层和匹配得分

        在匹配时,Query 和 Doc 的语义相似性可以用这两个语义向量(128 维) 的 cosine 距离来表示:

这里模型的基本思想基本已经完成了,但是为了优化神经网络的参数,即训练模型,需要将Q和D的相似度进行进一步处理,这里使用softmax 函数,将R(Q,D)转化为一个后验概率:


其中 r 为 softmax 的平滑因子,D 为 Query 下的正样本,D-为 Query 下的负样本(采取随机负采样),D 为 Query 下的整个样本空间。

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

从而更新得到各网络层的参数{Wi,bi}。


整个流程图如下:

        缺点:这里DSSM 采用词袋模型(BOW),因此丧失了语序信息和上下文信息。另一方面,DSSM 采用弱监督、端到端的模型,预测结果不可控。

        针对 DSSM 词袋模型丢失上下文信息的缺点,CLSM[2](convolutional latent semantic model)应运而生,又叫 CNN-DSSM。CNN-DSSM 与 DSSM 的区别主要在于输入层和表示层。

    DSSM本质是将用户和商品map到同一个语义空间,从而为用户推荐那些在mapped 空间中和用户有最大相似度的商品。

参考文献:

https://blog.csdn.net/u011734144/article/details/79617104

你可能感兴趣的:(DSSM模型理解与其在广告推荐场景下的使用(1))