这篇论文提出了SIF sentence embedding方法, 作者提供的代码在Github.

引入

作为一种无监督计算句子之间相似度的方法, sif sentence embedding使用预训练好的词向量, 使用加权平均的方法, 对句子中所有词对应的词向量进行计算, 得到整个句子的embedding向量. 再使用句子向量进行相似度的计算.

在这篇论文之前, 也有与这篇文章思路非常相近的思路, 即都是使用词向量, 通过平均的方法得到句子向量, 只是在加权时权重计算方法上有区别. 具体来说有:

  • 对句子中所有单词直接求平均, 每个单词的权重相同, 得到sentence embedding
  • 使用每个词的TF-IDF值为权重, 加权平均, 得到sentence embedding

这篇论文使用smooth inverse frequency, sif作为每个单词的权重, 代替TF-IDF值, 获得了更好的效果. 除了使用新的词权重计算方法, 还在加权平均后, 减掉了principal component, 最终得到句子的embedding.

另外论文中还提到了这种方法的鲁棒性:

  • 使用不同语料(多种领域)训练得到的不同的word embedding, 均取得了很好的效果, 说明了对各种语料的友好.
  • 使用不同语料得到的词频, 作为计算词权重的因素, 对最终的结果影响很小.
  • 对于方法中的超参数, 在很大范围内, 获得的结果都是区域一直的, 即超参数的选择没有太大的影响.

理论

1. 生成模型

首先从潜变量生成模型(latent variable generative model)说起. 这个模型假设: 语料的生成是一个动态过程(dynamic process), 即第\(t\)个单词是在第\(t\)步生成的.

每个单词\(w\)对应着一个\(\mathbb{R}^d\)维的向量. 而这个动态过程是由discourse vector\(c_t\in{\mathbb{R}^d}\)的随机游走驱动的. discourse vector代表着这个句子what is being talked about, 作为潜变量, 代表着句子一个状态, 由于是动态的, 这个状态是随时间变化的, 因此记为\(c_t\).

单词\(w\)的向量\(v_w\)与当前时间的discourse vector\(c_t\)的内积, 表示着这个单词与整个句子之间的关系. 并且我们假设\(t\)时刻观测到单词\(w\)的概率为这个内积的对数线性(log linear)关系:

\[Pr(\text{w emitted at time t}| c_t)\propto{\exp(\langle c_t,v_w \rangle)}
\]

由于\(c_t\)是较小幅度的随机游走得到的, \(c_t\)与\(c_{t+1}\)之间只会差一个较小的随机差向量, 因此相邻的单词是由近似的discourse vector生成得到的. 另外计算表明这种模型的随机游走允许偶尔\(c_t\)有较大的jump, 这对共生概率的影响是很小的.

通过这种办法生成的单词向量, 与word2vec(CBOW)Glove生成的向量是相似的.

2. 随机游走模型的改进

借助上面的模型, 我们希望如下获得一个句子的我sentence embedding: 对discourse vector最大似然估计. 为了简化, 注意到\(c_t\)在整个句子生成单词的过程中, 变化很小, 因此我们将所有步的discourse vector假设为一个固定的向量\(c_s\). 可证明: 对\(c_s\)的最大似然估计就是对所有单词embedding向量的平均.

这篇论文对这种模型进行了改进, 加入了两项平滑项, 出于如下的考虑:

  • 有些单词在规定的上下文范围之外出现, 也可能对discourse vector产生影响
  • 有限单词的出现(如常见的停止词)与discourse vector没有关系

出于这两点考虑, 引入了两种平滑项, 首先是对数线性模型中的一个累加项(additive term)\(\alpha p(w)\),其中\(p(w)\)是单词\(w\)在整个语料中出现的概率(词频角度), \(\alpha\)是一个超参数. 这样, 即使和\(c_s\)的内积很小, 这个单词也有概率出现.

然后, 引入一个纠正项, common discourse vector\(c_0\in{\mathbb{R}^d}\), 其意义是句子的最频繁的意义, 可以认为是句子中最重要的成分, 常常可以与语法联系起来. 文章中认为对于某个单词, 其沿着\(c_0\)方向的成分较大(即向量投影更长), 这个纠正项就会提升这个单词出现的概率.

校正后, 对于给定的discourse vector\(c_s\), 单词\(w\)在句子\(s\)中出现的概率为:

\[Pr(\text{w emitted in sentence s}| c_s)\propto{\alpha p(w) + (1-\alpha)\frac{\exp(\langle \tilde{c}_s, v_w \rangle)}{Z_{\tilde{c}_s}}}
\]

其中, \(\tilde{c}_s=\beta c_0+(1-\beta)c_s,\ c_0\perp c_s\), \(\alpha\)和\(\beta\)都是超参数, \(Z_{\tilde{c}_s}=\sum\limits_{w\in{V}}\exp(\langle \tilde{c}_s, v_w \rangle)\)是归一化常数. 从公式中可以看出, 一个与\(c_s\)没有关系的单词\(w\), 也可以在句子中出现, 原因有:

  • 来自\(\alpha p(w)\)项的数值
  • common discourse vector \(c_0\)的相关性

3. 计算句子向量

句子向量就是上述模型中的\(c_s\), 使用最大似然法估计\(c_s\)向量. 首先假设所有单词的向量\(v_s\)是大致均匀分布在整个向量空间上的, 因此这里的归一化项\(Z_c\)对于不同的句子值都是大致相同的, 即对于任意的\(\tilde{c}_s\), \(Z\)值是相同的. 在此前提下, 得到似然函数:

\[p[s|c_s]=\prod\limits_{w\in{s}}p(w|c_s)=\prod\limits_{w\in{s}}[\alpha p(w) + (1-\alpha)\frac{\exp(\langle \tilde{c}_s, v_w \rangle)}{Z}]
\]

取对数, 单个单词记为

\[f_w(\tilde{c}_s)=\log[\alpha p(w) + (1-\alpha)\frac{\exp(\langle \tilde{c}_s, v_w \rangle)}{Z}]
\]

最大化上式, 具体的推到在论文中有详述的说明, 最终目标为:

\[\arg\max\limits_{c_s}\sum\limits_{w\in{s}}f_w(\tilde{c}_s)
\]

可以得到:

\[\tilde{c}_s\propto \sum\limits_{w\in{s}}\frac{a}{p(w)+a}v_w,\ a=\frac{1-\alpha}{\alpha Z}
\]

因此可以得到:

  • 最优解为句子中所有单词向量的加权平均
  • 对于词频更高的单词\(w\), 权值更小, 因此这种方法也等同于下采样频繁单词

最后, 为了得到最终的句子向量\(c_s\), 我们需要估计\(c_0\). 通过计算向量\(\tilde{c}_s\)的first principal component(PCA中的主成分), 将其作为\(c_0\). 最终的句子向量即为\(\tilde{c}_s\)减去主成份向量\(c_0\).

4. 算法总结

整个算法步骤总结如下图:

论文阅读 A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SEN- TENCE EMBEDDINGS的更多相关文章

  1. 论文阅读笔记 Improved Word Representation Learning with Sememes

    论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...

  2. [论文阅读] LCC-NLM(局部颜色校正, 非线性mask)

    [论文阅读] LCC-NLM(局部颜色校正, 非线性mask) 文章: Local color correction using non-linear masking 1. 算法原理 如下图所示为, ...

  3. 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)

    白翔的CRNN论文阅读 1.  论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...

  4. BITED数学建模七日谈之三:怎样进行论文阅读

    前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...

  5. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  6. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  7. Deep Reinforcement Learning for Dialogue Generation 论文阅读

    本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...

  8. 论文阅读笔记 Word Embeddings A Survey

    论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...

  9. 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)

    今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...

随机推荐

  1. 计算机网络-网络层(6)ICMP协议

    互联网控制报文协议(ICMP,Internet Control Message Protocol),被主机和路由器用来彼此沟通网络层的信息 ICMP报文是承载在IP分组中的,即lCMP报文是作为IP有 ...

  2. Neurosurgeon: Collaborative Intelligence Between the Cloud and Mobile Edge

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! ASPLOS ’17, April 08-12, 2017, Xi’an, China Abstract 如今的智能个人助理,如Apple ...

  3. Linux环境下MySQL 5.6安装与配置----亲测有效----纯离线安装

    一.安装MySQL 1.下载安装包 mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz 下载地址: https://dev.mysql.com/get/Downloa ...

  4. ZEQP仓储管理系统( WMS)开源

    ZEQP仓储管理系统 代码框架是用的前后台分离的方式 后台使用的是Asp.Net Core平台,开发所有业务,向前台提供Rest API接口. 使用的认证方式是JWT 前端有两个项目,一个是Web端, ...

  5. 浅谈python垃圾回收机制

    引入 ​ 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那 ...

  6. 阿里云体验实验室 教你《搭建Hadoop环境》

    体验平台简介 面向开发者和中小企业打造的一站式.全云端的开发平台,打开浏览器就可以开发.调试.上线,所测即所得,并结合无服务器的模式,重新定义云原生时代的研发工作方法论.旨在降低开发者上手成本和中小企 ...

  7. 数字电路基础(三)TTL与非门输入端接电压表的示数

    如下图所示,当ui输入低电平,电压表示数为0.3v,当ui输入高电平时,电压表示数为1.4v,分析如下 当ui=0.3 此时VT1导通,电流都从输入端流出,VT1的基极电位被钳位在1.0v(Ub1=0 ...

  8. 【Gin-API系列】Gin中间件之异常处理(六)

    本文我们介绍生产环境上如何通过捕捉异常recovery来完善程序设计和提高用户体验. Golang异常处理 golang 的异常处理比较简单,通常都是在程序遇到异常崩溃panic之后通过defer调用 ...

  9. 【学习中】Unity<中级篇> Schedule

    章节 内容 签到 Unity3D 实战技术第二版视频教程(中级篇) 1.游戏引擎发展史 2.Unity发展史 3.3D图形学与必要组件 5月19日 4.核心类_GameObject类 5月19日 5. ...

  10. 重要bug记录

    导唱功能:需求点分析:本地已下载歌曲播放,判断是否有音频原唱伴奏版权,无版权按钮显示“导唱”,有版权显示“播原唱”.程序实现逻辑: 1.下载歌曲时调用一个歌曲信息接口,返回歌曲的一些属性信息,其中包括 ...