- 全文由『说文科技』原创出品,文章同步更新于同名公众号。版权所有,翻版必究。
这篇发表于2013年CIKM上的搜索领域文章。核心思想就是两点:提出使用 clickthrough data 来训练deep structured semantic 模型。反复读后再回顾这篇文章,惊叹作者写作真好!结构相当清晰,逻辑非常流畅。标题里面的『 Deep Structure』对应在Introduction中的Hinton的研究路子;『using Clickthrough Data』则对应LSA模型的另外一条路子。现在来看这些思想已成规矩,在当年却是开创先河的存在!
1. 摘要
摘要里面首先就提到了作者的思想:
简言之:使用一个具有deep structure的语义模型将query 和 document都映射到一个低维空间中,并计算两者向量空间上的距离来度量相关性。通过使用点击数据最大化在给定查询下点击文档的条件概率,对所提出的深度结构化语义模型进行有区别的训练。同时作者提出了一个叫做word hashing的技术,该技术能有效提升语义模型处理大词汇表上的能力,从而使得DSSM模型可以应用在具有大词表的问题上。
2. 现存工作
-
matching keywords的方式:不精确,原因是同一个概念经常受库中文档和query的不同词汇、语言风格影响。
这里的关键词匹配其实就是通常所说的倒排。 -
当前的
lsa
模型处理语义差异问题的方法是:将出现在的相似context
的的不同term
聚合成同一个语义簇,这么做也能达到使用语义向量进行检索的目的。- 从LSA 扩展到PLSA(probabilistic LSA)以及 LDA 同样被提出用于语义检索。
- 使用无监督数据训练,效果较差。
关于LSA
模型的研究线条有二:
第一、使用Clickthrough data
学习模型。这类工作很多,不再列举。
第二、Hinton等人提出 Semantic hashing
。然而这些方法依然存在问题:
-
使用无监督的数据训练模型
-
存在
scalability challenge
再度重复叙述一下本文的核心思想:
与之前方法的显著不同点:
- 之前的方法使用无监督训练,本文提出的
DSSM
使用的是 监督学习的方式。数据来源于Web document ranking
- 针对large vocabularies 这个问题,提出 word hashing 这个方法。这个方法的具体做法是:
本质上,DSSM这个工作就是在这两方面的工作上进行了一个提升:
3. 模型相关
3.1. 模型架构
将纯文本信息映射成语义空间的一个向量(DNN for computing Semantic Features
),使用的结构如下图所示:
- 模型的输入:
a high-dimensional term vector, e.g. raw counts of terms in a query or a document without normalization.
- 模型的输出:
concept vector in a low-dimensional semantic feature space.
3.2. 训练细节
-
训练数据:使用点击数据
-
训练目标:最大化『被点击的document的条件概率』 (这很符合常理,就是要让训练的过程符合后验过程)
使用softmax 公式计算每篇文档被召回的概率:
- 其中γ\gammaγ是softmax 函数中的平滑因子,这个是一个经验值。
- D 表示待被排序的候选文档,理想情况下,D应该包含所有的可能的文档。现实情况肯定是无法全部罗列所有的文档到D中,所以作者只包含了点击的document,和4个未点击的document。
有了正负样本后,训练目标就很简单了 => 最大化正样本召回的概率
-
激活函数
使用 tanh 作为激活函数:
-
为了避免过拟合
- 将点击数据分割成两部分:训练集和验证集。在训练集上训练,然后取验证集上效果最好时的参数。
-
模型有3个隐藏层
也就是下面这三层:
3.3. word hashing技术
目的:用于减少 bag-of-words term vector
的维度。(如果是词表大小的one-hot向量,那么得几万维;如果拆分后,可能one-hot的向量纬度就只有几千。)其实这种方法和后面的分词方法本质上是一样的。
其实 word-hashing
技术就是 n-gram
思想。下面以单词 good
为例,介绍如何做一个 hashing
。
step1. 在单词前后拼接#符号,得到 #good#
step2. 将得到的字符串按照 n-grams
拆分,取n=3,那么得到 #go, goo, ood, od#
step3. 那么最后可以用letter n-grams
的向量表示这个单词。(我理解就是one-hot
的方法表示这个bag-of-words
)
哈希技术可能存在的问题就是冲突,因为可能有两个单词通过 word-harshing
技术得到的 vector
可能是一样的(因为 bag of words 是一样的),作者根据两个词表给出了一个统计:
通过上表可以看到:
- 当词表大小是:40k,按照上述的word hashing技术(letter-trigram),得到的token数不过是10306个。
- 40k 的词表中按照hash技术处理后,只有2个冲突,这个冲突概率非常小,可以忽略不计。
- 即使词表大小达到了500k,使用Trigram的方式也就只有22个冲突而已,冲突的概率是0.0044%。
4. 疑问
-
large vocabularies
是啥意思?
就是直接理解,大量词汇。 -
input 中的 term vector 是啥?
-
size 如何:可以视作是 IR 中原始的 bag-of-words 特征。也就是被用于检索Web document词汇
-
layer-wise pre-training 是啥意思?
-
DSSM 指的是
Deep Structured Semantic Model
,读完整篇文章后,再回复三个问题:有多Deep ?什么样的structure?什么样的semantic?- 有多Deep?
提出了一个三层隐藏层的模型。 - 什么样的structure?
- 什么样的semantic?
- 有多Deep?
5. 好句分享
These models are trained on clickthrough data using objectives that tailor to the document ranking task.
tailor to 迎合,使…适用于