DSSM

老早就改总结的一篇了

参考:

https://www.cnblogs.com/wmx24/p/10157154.html 

https://mp.weixin.qq.com/s?__biz=MzI2MDU3OTgyOQ==&mid=2247488050&idx=1&sn=5cbc4b48dc49f541d96a418769263d22&scene=21#wechat_redirect

背景:做语义相似的召回(经典:给爷爷的手机 & 诺基亚)

模型结构:

还是从下往上说:

最下的一层500k其实是单词的数量不是模型中的任意一层,按照以往的做法就是一个500维的one-hot向量输入了;

dssm这里做了一个word-hashing,把单词每三个字母一个单元做了切分,总共3w个(第二层的30k)这样的单元,然后同样做word-hashing版的one-hot,这一层叫输入层;(会有同样的单词是一样的one-hot,但是比例极低,选用三个字母也是综合考虑了单词冲突和向量空间:

再上就是三层dnn(用的激活函数是tanh,初始化函数很复杂,且分层预训练并没有什么用),输出向量128维,这一层叫表示层;

得到输出向量后使用cos距离计算query和每个doc之间的余弦相似度,再过一个softmax,然后用logloss做极大似然,这一层叫匹配层:

这里D表示整个样本空间(其实是做了负采样,正负比大概1:4,采样比例不影响),D+表示用户搜索完query点击过的样本(有监督)

train的时候就梯度下降训练,但是serve的时候感觉就还是用knn就行

特点:

1.有监督,使用最大似然函数进行优化(传统的输入层都是LDA主题模型或者w2v embedding那样的无监督)

2.使用word-hashing方法解决大规模且稀疏的词典问题(英文的话以3个字母一个单元,汉字的话以单字作为一个单元)

3.将用户的Query行为和Document映射到同一语义空间中,通过余弦相似度计算相似性(显然了)

缺点:

1.word-hashing还是词袋模型,缺少语序信息

2.端到端结果不太可控

问题:

激活函数为什么要用tanh

余弦相似度算完后为什么还要过softmax


DSSM的变体改天再写(CNN_DSSM、LSTM-DSSM、应用双塔)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容