论文阅读 A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SEN- TENCE EMBEDDINGS
这篇论文提出了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)关系:
\]
由于\(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\)中出现的概率为:
\]
其中, \(\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\)值是相同的. 在此前提下, 得到似然函数:
\]
取对数, 单个单词记为
\]
最大化上式, 具体的推到在论文中有详述的说明, 最终目标为:
\]
可以得到:
\]
因此可以得到:
- 最优解为句子中所有单词向量的加权平均
- 对于词频更高的单词\(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的更多相关文章
- 论文阅读笔记 Improved Word Representation Learning with Sememes
论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...
- [论文阅读] LCC-NLM(局部颜色校正, 非线性mask)
[论文阅读] LCC-NLM(局部颜色校正, 非线性mask) 文章: Local color correction using non-linear masking 1. 算法原理 如下图所示为, ...
- 论文阅读(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 ...
- BITED数学建模七日谈之三:怎样进行论文阅读
前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...
- 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- Deep Reinforcement Learning for Dialogue Generation 论文阅读
本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...
- 论文阅读笔记 Word Embeddings A Survey
论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...
- 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)
今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...
随机推荐
- 算法-图(3)用顶点表示活动的网络(AOV网络)Activity On Vertex NetWork
对于给定的AOV网络,必须先判断是否存在有向环. 检测有向环是对AOV网络构造它的拓扑有序序列,即将各个顶点排列成一个线性有序的序列,使得AOV网络中所有直接前驱和直接后继关系都能得到满足. 这种构造 ...
- mr原理简单分析
背景 又是一个周末一天一天的过的好快,今天的任务干啥呢,索引总结一些mr吧,因为前两天有面试问过我?我当时也是简单说了一下,毕竟现在写mr程序的应该很少很少了,废话不说了,结合官网和自己理解写起. 官 ...
- latex:备忘代码
1.脚注代码: \footnote{欧几里德,约公元前330--340年.} 结果为: 2.改变某个字的字体形状,表示强调 \emph{勾股定理} 结果为(勾股数这三个字与其他字不一样): 3.正文中 ...
- 如何寻找决策最优解?熵权TOPSIS助你科学决策
熵权topsis是一种融合了熵值法与TOPSIS法的综合评价方法.熵值法是一种客观赋值法,可以减少主观赋值带来的偏差:而topsis法是一种常见的多目标决策分析方法,适用于多方案.多对象的对比研究,从 ...
- Java多线程_同步工具CyclicBarrier
CyclicBarrier概念:CyclicBarrier是多线程中的一个同步工具,它允许一组线程互相等待,直到到达某个公共屏障点.形象点儿说,CyclicBarrier就是一个屏障,要求这一组线程中 ...
- java基本数据类型总结 类型转换 final关键字的用法
java基本数据类型总结 Java数据类型总结 数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式.接触每种语言的时候,都会存在数据类型的认识,有复杂的. ...
- Win 10 蓝屏,出现DRIVER_POWER_STATE_FAILURE的解决方法
笔者个人笔记本电脑,用的是华硕的飞行堡垒FZ系列,上个月装了个Ubuntu的系统,之后换回Windows后,电脑疯狂蓝屏,错误代码只有这个DRIVER_POWER_STATE_FAILURE.一开始我 ...
- 想学习SEO可以看哪些书籍
http://www.wocaoseo.com/thread-28-1-1.html 除了一些常见的比如入门推荐<走进搜索引擎>和进阶推荐<这就是搜索引擎--核心技术详解>之外 ...
- 前端用vue怎么接收并导出文件
window.location.href = "excel地址" 如果是 get 请求,那直接换成 window.open(url) 就行了 创建一个隐藏的 iframe,把 if ...
- Python模拟保护和私有成员
保护成员:以一个下划线开头.Python不会做特殊处理 私有成员:以两个下划线开头.Python会做mangling