DSSM深度语义匹配原理与Tensorflow实现

    在工业界DSSM(Deep Structured Semantic Models)已经演化成一种语义匹配框架,不仅用于文本的匹配,也用于推荐系统的User-Item的匹配,本文描述与实现DSSM在文本匹配上的应用,主要内容如下:

  • DSSM原理
  • 数据预处理
  • 模型实现
  • 模型训练
  • 模型预测

DSSM原理

    DSSM的主要结构如下:

                          

主要分为表示层和匹配层,表示层可使用全连接、RNN、Transformer等等网络得到query和doc的向量,匹配层一般使用cosine相似度来计算query和1个正样本doc和N个负样本doc的相似度。这里就不讲解原始论文里DSSM的原理了,只讲其在文本上是如何使用的,有兴趣的朋友可以参考原论文《Learning Deep Structured Semantic Models for Web Search using Clickthrough Data》。

  • 表示层

原始论文中主要针对英文,为了降维做了word hashing,而中文常用汉字只有1万左右。我们将query和doc的字直接传入embedding,然后接一层双向的GRU,假设每个字的embedding表示为\omega _{it},则GRU表示为:

                                                               

然而,并不是每个字都是我们所需要的,所以在GRU后面再接一层Attention,其表示为:

                                                              

即通过一个线性层对GRU的输出进行变换,然后通过softmax公式计算出每个字的重要程度,最后与GRU的输出求和得到句子的表示。

  • 匹配层

   得到query和doc的向量表示之后(一般为64或128维向量),计算他们之间的cosine相似度:

                                                            

并通过softmax将query与正样本doc的相似度计算转换为后验概率,计算如下:

                                                              

其中\gamma为softmax平滑因子,可设置为固定值(如20,50等)也可以用一个参数去学习。D+为query对应的正样本,D'为随机采样的query对应的N个负样本。

训练时通过极大似然估计最小化损失函数:

                                                             

 

数据预处理

这里我们采用某新闻语料,训练样本格式为每行:标题\t正文,作为一条样本。

  • 将句子转换成ID序列

                
  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值