论文阅读 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 ...
随机推荐
- pandas 数据子集的获取
有时数据读入后并不是对整体数据进行分析,而是数据中的部分子集,例如,对于地铁乘客量可能只关心某些时间段的流量,对于商品的交易可能只需要分析某些颜色的价格变动,对于医疗诊断数据可能只对某个年龄段的人群感 ...
- Ubuntu 统计文件夹下文件个数的命令
查看当前目录下的文件数量(不包含子目录中的文件) ls -l|grep "^-"| wc -l 查看当前目录下的文件数量(包含子目录中的文件) 注意:R,代表子目录 ls -lR| ...
- Mac上如果看不到.git目录的解决方法
Mac OS X上,如果需要查看.git目录下的隐藏文件,操作很简单: 做法是:打开一个Terminal终端窗口,输入: defaults write com.apple.finder AppleSh ...
- Kubernetes入门(二)——Dashboard 安装
Kubernetes集群搭建完成后,可以通过命令行方式可以了解集群资源的使用情况,但是这种方式比较笨拙且不直观,因此考虑给集群安装Dashboard,这样能更直观了解集群状态.本文Dashboard的 ...
- antdv时间选择a-date-picker设置日期可选范围(近一周、近半月、近一月等) - moment.js
Vue->Template: <a-date-picker v-model="value" :disabled-date="disabledDate" ...
- make编译出错 usr/bin/ld: /data/app/openssl/lib/libcrypto.a(ecs_asn1.o): relocation R_X86_64_PC32 against symbol `ECDSA_SIG_it' can not be used when making a shared object; recompile with -fPIC
当make编译出现错误 usr/bin/ld: /data/app/openssl/lib/libcrypto.a(ecs_asn1.o): relocation R_X86_64_PC32 agai ...
- XMLHttpRequest 简单封装
当开发简单页面的时候,不需要引入任何js库,这时需要封装一个用到 XMLHttpRequest 对象的好用的接口请求. simple 封装如下 ajaxRequest({ url: '', metho ...
- 终于有架构师用401页PDF+194张图表把设计模式讲明白了
十几年来,IT 界也发生了翻天覆地的变化,各种开源框架层出不穷,机器学习大兴其道.但是,在面向对象编程中,设计模式的重要性却不曾改变.与以前一样,在大规模的企业系统开发中,Java和C#仍处于主导地位 ...
- win10找不到wifi
禁用->启用 就能用了.
- 点击穿透事件-----CSS新属性
面试被问,一脸懵,被提示,还蒙,好丢脸的感觉....赶紧百度了解 .noclick{ pointer-events: none; /* 上层加上这句样式可以实现点击穿透 */ } 就是说重叠在一起的两 ...