Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
https://github.com/KATEhuang920909/deep_text_match
传统文本相似性如BM25、tf-idf等,无法发现语义的query-doc相似对,因此DSSM为计算语义相似度提供了一种方法。
DSSM模型结构如下:
在输入层用到了word hashing操作,这里用了n-grams方式进行hash,例如trigram将boy切分:#-b-o, b-o-y, o-y-#。这样可以将将50万个单词压缩到三万个,bigram可以压缩到1607个,但是会产生更多碰撞冲突,即不同单词会用同一个n-gram形式表示,paper中做了一些统计如下:
因此作者选择了tri-gram,然后one-hot。中文可以以字为最小单位,常用字为1.5万左右,因此可以直接one-hot。
表示层为多层DNN,隐藏层神经元大小均为300,最后一层为128,激活函数tanh。
匹配层用余弦距离得出相似分数,然后接入softmax将query和doc之间的相似性转化为一个概率值,公式如下:
,
其中,
γ
\gamma
γ为平滑引子,
D
∈
(
D
+
,
D
−
)
D \in (D^+ ,D^-)
D∈(D+,D−),D为整个样本空间,D+为正样本,D-为负样本。
极大似然估计
利用随机梯度下降(SGD)使模型收敛。
DSSM用字向量,减少切词产生的误差,同时送入模型的编码方式为one-hot,最大程度上减少了基于词向量累加或者拼接这种方式所带来的误差,缺点就是未考虑语序上下文信息
CDSSM:1.添加word-trigram,即构建大小为3的滑动窗口,然后拼接起来,维度大小为90K;2.在word-hash层后面接入卷积层和池化层,这样可以一定程度保留了上下文信息。整体结构如下:
图中feature map 为 300*1,采用max-pooling,然后接128维输出层。
优缺点: 上下文信息有效的保存,间隔较远的上下文信息无法保留