前言
本文是针对经典的DSSM(Deep Structured Semantic Models)的原理细究。模型2013提出的,时间虽然很早,但是很经典,所以才翻出来看看。我们通常说的基于深度网络的语义模型,其核心思想是将query和doc映射到到共同维度的语义空间中,通过最大化query和doc语义向量之间的余弦相似度,从而训练得到隐含语义模型,达到检索的目的。DSSM有很广泛的应用,比如:搜索引擎检索,广告相关性,问答系统,机器翻译等。论文见下:
Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
模型细节
DSSM是Representation-Based模型,其中Query端 Encoder 和 Doc端 Encoder都是使用 MLP实现,最后Score计算使用的是cosine similarity,后续模型的改进很多都是使用更好的Encoder结构,比如LSTM、GRU等结构,结构如下:
输入处理
结构图中的Term Vector是基于单词词表的one hot表示,DSSM的输入使用了叫作Word Hashing的方式,该方法基于字母的n-gram。给定一个单词(good),我们首先增加词的开始和结束部分(#good#),然后将该词转换为字母n-gram的形式(假设为trigrams:#go,goo,ood,od#)。最后该词使用字母n-gram的向量来表示。在英文里面,3-gram 向量纬度变成了 最大是272727。这样做有如下好处:
- 英文单词维度是无限的,但是字母级别的n-gram是有限的,极大压缩维度
- 字母n-gram 可以捕捉同一单词的不同语态时态语境变化
- out-of-vocubulary 鲁棒性,(前后缀,语态时态词的相似变化)
- collision:不同单词的letter n-gram表示一样认为是一次碰撞
论文使用的数据集是点击日志,里面通常包含了用户搜索的query和用户点击的doc,可以假定如果用户在当前query下对doc进行了点击,则该query与doc是相关的。