论文阅读 A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SEN- TENCE EMBEDDINGS
Posted databingo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文阅读 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_tin{mathbb{R}^d})的随机游走驱动的. discourse vector代表着这个句子what is being talked about, 作为潜变量, 代表着句子一个状态, 由于是动态的, 这个状态是随时间变化的, 因此记为(c_t).
单词(w)的向量(v_w)与当前时间的discourse vector(c_t)的内积, 表示着这个单词与整个句子之间的关系. 并且我们假设(t)时刻观测到单词(w)的概率为这个内积的对数线性(log linear)关系:
[Pr( ext{w emitted at time t}| c_t)propto{exp(langle c_t,v_w angle)}]
由于(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_0in{mathbb{R}^d}), 其意义是句子的最频繁的意义, 可以认为是句子中最重要的成分, 常常可以与语法联系起来. 文章中认为对于某个单词, 其沿着(c_0)方向的成分较大(即向量投影更长), 这个纠正项就会提升这个单词出现的概率.
校正后, 对于给定的discourse vector(c_s), 单词(w)在句子(s)中出现的概率为:
[Pr( ext{w emitted in sentence s}| c_s)propto{alpha p(w) + (1-alpha)frac{exp(langle ilde{c}_s, v_w angle)}{Z_{ ilde{c}_s}}}]
其中, ( ilde{c}_s=eta c_0+(1-eta)c_s, c_0perp c_s), (alpha)和(eta)都是超参数, (Z_{ ilde{c}_s}=sumlimits_{win{V}}exp(langle ilde{c}_s, v_w angle))是归一化常数. 从公式中可以看出, 一个与(c_s)没有关系的单词(w), 也可以在句子中出现, 原因有:
- 来自(alpha p(w))项的数值
- 与common discourse vector (c_0)的相关性
3. 计算句子向量
句子向量就是上述模型中的(c_s), 使用最大似然法估计(c_s)向量. 首先假设所有单词的向量(v_s)是大致均匀分布在整个向量空间上的, 因此这里的归一化项(Z_c)对于不同的句子值都是大致相同的, 即对于任意的( ilde{c}_s), (Z)值是相同的. 在此前提下, 得到似然函数:
[p[s|c_s]=prodlimits_{win{s}}p(w|c_s)=prodlimits_{win{s}}[alpha p(w) + (1-alpha)frac{exp(langle ilde{c}_s, v_w angle)}{Z}]]
取对数, 单个单词记为
[f_w( ilde{c}_s)=log[alpha p(w) + (1-alpha)frac{exp(langle ilde{c}_s, v_w angle)}{Z}]]
最大化上式, 具体的推到在论文中有详述的说明, 最终目标为:
[argmaxlimits_{c_s}sumlimits_{win{s}}f_w( ilde{c}_s)]
可以得到:
[ ilde{c}_spropto sumlimits_{win{s}}frac{a}{p(w)+a}v_w, a=frac{1-alpha}{alpha Z}]
因此可以得到:
- 最优解为句子中所有单词向量的加权平均
- 对于词频更高的单词(w), 权值更小, 因此这种方法也等同于下采样频繁单词
最后, 为了得到最终的句子向量(c_s), 我们需要估计(c_0). 通过计算向量( ilde{c}_s)的first principal component(PCA中的主成分), 将其作为(c_0). 最终的句子向量即为( ilde{c}_s)减去主成份向量(c_0).
4. 算法总结
整个算法步骤总结如下图:
以上是关于论文阅读 A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SEN- TENCE EMBEDDINGS的主要内容,如果未能解决你的问题,请参考以下文章
论文解读-SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS
论文解读-SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS
阅读Frustratingly Simple Few-Shot Object Detection
论文解读——《A Simple Framework for Contrastive Learning of Visual Representations》