论文阅读 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 ...
随机推荐
- Spring Security拦截器加载流程分析--练气中期
写在前面 上回我们讲了spring security整合spring springmvc的流程,并且知道了spring security是通过过滤器链来进行认证授权操作的.今天我们来分析一下sprin ...
- 牛客网PAT练习场-到底买不买
题目地址:https://www.nowcoder.com/pat/6/problem/4065 题意:用数组统计好字符,最后进行相减,最后进行统计 /** * *作者:Ycute *时间:2019- ...
- Flying Pages:在单击之前预加载页面,打开网页快得飞起
Flying Pages能够实现:在用户点击网页的链接之前,就预加载这个网页,当再点击这个网页时,页面便能飞速打开,能为网站优化加分.接下来,就由LOYSEO来讲解Flying Pages的使用方法. ...
- Mysql启动后停止的解决方法
安装mysql后,服务无法正常启动,报错如下: 解法方法: 1 以管理员身份运行命令提示符 2 用命令进行mysql安装目录的bin目录: cd C:\Prog ...
- 力扣Leetcode 199. 二叉树的右视图
199. 二叉树的右视图 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, ...
- Unity内生成深度贴图
https://qiita.com/bokkuri_orz/items/08cbaeae6a34fed7f903 https://www.cnblogs.com/sifenkesi/p/4721649 ...
- Axios拦截器配置
Axios 拦截器的配置如下 分三块:基础配置.请求之前拦截.响应之前拦截 发送所有请求之前和操作服务器响应数据之前对这种情况过滤. http request 请求拦截器 每次发送请求之前判断是否存在 ...
- Splay 记录
luogu 模板 P3391 [模板]文艺平衡树(Splay). 知识点:1.splay模板题,练习splay,rotate顺序:x变成z的儿子,x的一个儿子变为y的一个儿子(具体哪个看代码),y变为 ...
- sql server 2008 merge matched判定条件
SQL Server 2008 开始支持 MERGE语句 -- 源表 CREATE TABLE test_from (id INT, val VARCHAR(20)); -- 目标表 CRE ...
- Count(*) 与 count(field) 一样吗?
有这么个表: 执行 select count(*) from hy_test select count(deptno) from hy_test 都得到 5 但执行 select count(name ...