论文阅读:DSSM

论文地址: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、深度部分

中间是多层的深度网络,下面是论文里面的结构


image.png

3、目标函数部分

image.png

4、样本选取和指标评估

论文中数据集使用了搜索点击日志,query和点击的doc作为一组正样本,曝光不点击的doc作为负样本。

使用NDCG@k(1、3、10)评估的模型的效果。

附:

NDCG的计算方法

NDCG Normalized Discounted cumulative gain是一种常用的评价搜索或者推荐结果的指标,直觉的想法是相关度越高的项出现在越靠前的位置,指标的得分应该越高。

每一个候选项都有相关度和顺序两个变量,我们来一步一步拆解

(1)CG就是候选项相关度的求和,这就不考虑顺序的影响


image.png

(2)DCG对不同位置上的相关度进行加权,位置i的权重是1/log2(i+1)


image.png

还有另一种算法,可以强化相关度的作用


image.png

(3)由于不同搜索词对应p可能不同,需要增加归一化

归一化使用理想情况下最大的DCG,也就是完全按照相关度从大到小排序后计算一次DCG。

参考:

https://zhuanlan.zhihu.com/p/53326791

https://www.cnblogs.com/by-dream/p/9403984.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容