论文地址:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/cikm2013_DSSM_fullversion.pdf
DSSM的全称是Deep Semantic Similarity Model
要点:
- 目的是进行语义相似度建模
- 输入的是一对语料 (X, Y)(在问答场景是query-query,在搜索场景是query-doc等)
- 基本思路是通过深度网络分别提取输入语义表征向量,通过计算向量距离来计算相似度(如cos)
- 训练的数据需要有正负例,需要知道哪些 (X, Y) 是语义相似的,哪些是不相似的。负例也可以通过一些方法构造
- 训练的目标是最大化让正例之间的距离减负例之间距离
- 模型训练完成后,可以预先计算好文本的语义表征向量,比如问答场景里,所有候选集的query语义向量都可以预先算好,线上只需要计算用户输入query的向量,然后计算向量距离就可以了
-
词序列的第一步表征使用了字符trigram,但这个方法不能用到中文中
image.png
1、特征表征部分
Word hashing layer
这一步是为了将不等长的输入词组转成等长的向量表示,常用的方法有很多种,比如最简单的按照词ngram做one-hot,或者按照词embedding做求和或平均。
DSSM用了字符的ngram,比如cat这个词的trigram就变成(词的开头和结尾用#表示)
cat → #cat# → #-c-a, c-a-t, a-t-#
这么做有以下几个好处
- 在英语中,只有50K 字符的trigrams,可以大大降低输入向量的维度
- 捕获sub-word的特征,比如英语中的前缀、后缀、词根等都有相似的语义
- 选择trigram而不是bigram,或者更大的ngram是为了在候选集和冲突率之间折中
对于50万的单词表,bigram的候选集是1607,但是冲突率是0.2%;trigram的候选集是3万,冲突率只有0.004%
2、深度部分
中间是多层的深度网络,下面是论文里面的结构
3、目标函数部分
4、样本选取和指标评估
论文中数据集使用了搜索点击日志,query和点击的doc作为一组正样本,曝光不点击的doc作为负样本。
使用NDCG@k(1、3、10)评估的模型的效果。
附:
NDCG的计算方法
NDCG Normalized Discounted cumulative gain是一种常用的评价搜索或者推荐结果的指标,直觉的想法是相关度越高的项出现在越靠前的位置,指标的得分应该越高。
每一个候选项都有相关度和顺序两个变量,我们来一步一步拆解
(1)CG就是候选项相关度的求和,这就不考虑顺序的影响
(2)DCG对不同位置上的相关度进行加权,位置i的权重是1/log2(i+1)
还有另一种算法,可以强化相关度的作用
(3)由于不同搜索词对应p可能不同,需要增加归一化
归一化使用理想情况下最大的DCG,也就是完全按照相关度从大到小排序后计算一次DCG。
参考: