3.文本相似度计算-DSSM算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.⽂本相似度计算-DSSM算法
1. 前⾔
最近在学习⽂本相似度的计算,前⾯两篇⽂章分别介绍了和,这两篇⽂章的思路主要在机器学习的框架下⾯,本⽂准备换⼀个思路,从深度学习的⾓度来处理⽂本相似度的问题。

本⽂介绍DSSM(Deep Structured Semantic Models)深度学习架构。

2. DSSM原理
DSSM的原理很简单,通过搜索引擎⾥Query和Doc的海量的点击曝光⽇志,⽤DNN把Query和Doc转化为低纬语义向量,并通过cosine距离来计算两个语义向量的距离,并且根据⽤户的点击选择Doc当做标签值进⾏有监督学习,最终训练出语义相似度模型。

该模型既可以⽤来预测两个句⼦的语义相似度,⼜可以获得某句⼦的低纬语义向量表达。

这⾥的⼀个重要的概念是低纬语义向量,它的意思是把⼀句⽂本通过⼀定的⽅式转换到⼀个固定维度的空间上,这样就可以对不同句⼦间计算相似度了。

然后我们的任务就是需要去找各种⽅法在尽量保存⽂本本⾝信息的情况下,获得⼀个低维语义向量。

AutoEncoder算法也是⼀种获得低纬语义向量的⽅法。

2.1 DSSM架构
DSSM的架构图如下所⽰:
我们从下到上的看数据流动的过程。

输⼊数据:Q代表⽤户的输⼊,D_i代表⽐对的第i个⽂档。

Term Vector层可以理解为输⼊层,我们简单的理解成把⽂本做one-hot处理后的词向量。

这⼀层的矩阵维度在50W左右,矩阵太⼤,并且太稀疏,不容易训练。

Word Hashing层可以理解为数据预处理层,这⼀层主要是通过n-gram的⽅式降低矩阵维度。

举个例⼦,假设⽤letter-trigams来切分单词(3个字母为⼀组,#表⽰开始和结束符),boy这个单词会被切为#-b-o,b-o-y,o-y-#。

这样做的好处有两个:⾸先是压缩空间,50万w个词的one-hot向量空间可以通过letter-trigram压缩为⼀个3w维的向量空间。

其次是增强范化能⼒,三个字母的表达往往能代表英⽂中的前缀和后缀,⽽前缀后缀往往具有通⽤的语义,在通过BOW对⽂本向量化。

这⾥之所以⽤ 3 个字母的切分粒度,是综合考虑了向量空间和单词冲突:
以50w个单词的词库为例,Bigram的切分粒度的单词冲突为1192(冲突的定义:⾄少有两个单词的letter-bigram向量完全相同),⽽TriGram的单词冲突降为22效果很好,且转化后的向量空间3w维不是很⼤,综合考虑选择TriGram的切分粒度。

Multi-layer nonlinear projection这⼀层就是DNN的处理了。

上⾯的架构图中画了3层DNN结构。

做了⼀个降维操作,3w->300->300->128。

l_1=W_1x
l_i=f(W_il_{i-1}+b_i)
y=f(W_Nl_{N-1}+b_N)
Relevance层是把Query的向量和Doc中的所有向量做⼀个cosine的相似度计算。

P(D|Q) = \frac{exp(\gamma R(Q,D))}{\sum_{d_i \in D} exp(\gamma R(Q,D))}
softmax层把计算出的概率进⾏归⼀化输出。

最终的loss是
L(\Lambda) = - \text{log} \prod_{(Q,D^+)} P(D^+|Q)
2.2 DSSM优缺点
从整体上看,DSSM还是对传统的机器学习和深度学习的⽅法进⾏了组合,先⽤n-gram进⾏矩阵压缩,再通过DNN⽹络进⼀步压缩,再通过cosine计算相似度,softmax输出归⼀化的相似度概率。

优点:
1. DSSM ⽤字向量作为输⼊既可以减少切词的依赖,⼜可以提⾼模型的范化能⼒,因为每个汉字所能表达的语义是可以复⽤的。

2. 传统的输⼊层是⽤Embedding的⽅式(如Word2Vec的词向量)或者主题模型的⽅式(如LDA的主题向量)来直接做词的映射,再把
各个词的向量累加或者拼接起来,由于Word2Vec和LDA都是⽆监督的训练,这样会给整个模型引⼊误差,DSSM采⽤统⼀的有监督训练,不需要在中间过程做⽆监督模型的映射,因此精准度会⽐较⾼。

缺点:
1. 上⽂提到 DSSM 采⽤词袋模型(BOW),因此丧失了语序信息和上下⽂信息。

2. DSSM采⽤的是端到端的模型,预测结果不可控。

3. DSSM是弱监督模型,因为引擎的点击曝光⽇志⾥Query和Doc的语义信息⽐较弱。

⾸先搜索引擎有⾃⼰的排序算法,排序算法决定了
那些Doc显⽰在第⼀页。

因为第⼀页的被点击率⼤⼤⼤于后⾯的Doc的点击率。

所以⽤户点击第⼀页的概率的置信度不是太⾼。

Processing math: 0%。

相关文档
最新文档