论文解读-SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS

2023-10-13 05:10

本文主要是介绍论文解读-SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.论文摘要

该论文是在 ICLR 2017提出的一个无监督的句子嵌入的方法:使用维基百科等无标签的语料训练得到词向量,然后通过词向量加权平均获得句子表征向量。然后使用PCA/SVD再对句向量进行一次修正得到最终得句向量。

2. 计算句子表征的算法

先来看下论文中提出的句子表征的算法:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MLXldGtS-1623306848424)(./1620303452165.png)]
上面的算法过程中有两个重点:
为什么可以通过句子中的单词向量加权平均来获得句子初始的向量的表征?(公式(1))
为什么得到句子的初始向量之后要做一个修正(公式(2))

论文围绕着这两个问题进行了解答。

3. 随机游走模型

论文首先介绍了随机游走模型:将句子生成看出是一个动态过程,在第t时刻下的语篇向量 c t c_t ct决定生成第t个词。语篇向量表示的是这个时刻句子语义。不同时刻的语篇向量的游走变化会导致生成不同的词。词典中的每一个词都有一个词向量 v w v_w vw

一个时刻t ,生成的词是w的概率,可以由如下的公式表示:
Pr ⁡ [ w emitted at time  t ∣ c t ] ∝ exp ⁡ ( ⟨ c t , v w ⟩ ) . \operatorname{Pr}\left[w \text { emitted at time } t \mid c_{t}\right] \propto \exp \left(\left\langle c_{t}, v_{w}\right\rangle\right) . Pr[w emitted at time tct]exp(ct,vw).

假定在文本生成的过程中,语篇向量是在做一个缓慢的游走(意味着 c t c_t ct添加一个很小的位移向量就能获得 c t + 1 c_{t+1} ct+1),所以相近的词对应的语篇向量都是比较接近的。

假设一句话各个位置单词出现时,语篇向量变化不大,所以将使用一个固定的语篇向量 c s c_s cs来近似表示各个时刻的语篇向量 c t c_t ct

Pr ⁡ [ w emitted at time  t ∣ c s ] ∝ exp ⁡ ( ⟨ c s , v w ⟩ ) . \operatorname{Pr}\left[w \text { emitted at time } t \mid c_{s}\right] \propto \exp \left(\left\langle c_{s}, v_{w}\right\rangle\right) . Pr[w emitted at time tcs]exp(cs,vw).

从上述公式可以看出,某个时刻的语篇向量 c s c_s cs和词向量 v w v_w vw内积越大,该词越有可能出现。

对于停用词,在不同的句子中都有可能出现,所以这些停用词的词向量的模长尽量长一点,才能与不同的语篇向量的内积都比较大。

论文对上面的模型进行了两个主要的修改:
Pr ⁡ [ w emitted in sentence  s ∣ c s ] = α p ( w ) + ( 1 − α ) exp ⁡ ( < c ~ s , v w > ) Z c ~ s where  c ~ s = β c 0 + ( 1 − β ) c s , c 0 ⊥ c s w h e r e Z c ~ s = ∑ i n ( < c ~ s , v w i > ) \begin{matrix} \operatorname{Pr}\left[ w\text{ emitted in sentence } s\mid c_{s}\right] =\alpha p(w)+(1-\alpha )\frac{\exp\left(\left< \tilde{c}_{s} ,v_{w}\right> \right)}{Z_{\tilde{c}_{s}}}\\ \text{where }\tilde{c}_{s} =\beta c_{0} +(1-\beta )c_{s} ,c_{0} \perp c_{s}\\ where\ Z_{\tilde{c}_{s}} =\sum _{i}^{n}\left(\left< \tilde{c}_{s} ,v_{w_{i}}\right> \right) \end{matrix} Pr[w emitted in sentence scs]=αp(w)+(1α)Zc~sexp(c~s,vw)where c~s=βc0+(1β)cs,c0cswhere Zc~s=in(c~s,vwi)

(1) 增加平滑项
在模型中引入一个加法项 α p ( w ) α p(w) αp(w) ,其中的 p ( w ) p(w) p(w)表示单词在整个语料库中的概率, α α α是一个标量,这保证了一个词的向量与语篇向量的内积很小很小的情况下,整个词也是可能被话语向量生成出来。论文也对这种平滑操作称为:SIF(smooth inverse frequency)

(2) 引入公共语篇向量 c 0 c_0 c0
引入了一个公共的语篇向量 c 0 c_0 c0,其表示所有句子都具有的公共语义。但句子间的差异需要有差异的那部分语义来体现的。所以在计算句子间的语义相似度的时候,需要先删除公共语义部分。

假定所有词向量大致满足均匀分布,且模长一致, Z c ~ s Z_{\tilde{c}_{s}} Zc~s 可以近似看成是一个定值。
Pr ⁡ [ w emitted in sentence  s ∣ c s ] = α p ( w ) + ( 1 − α ) exp ⁡ ( < c ~ s , v w > ) Z \operatorname{Pr}\left[ w\text{ emitted in sentence } s\mid c_{s}\right] =\alpha p(w)+(1-\alpha )\frac{\exp\left(\left< \tilde{c}_{s} ,v_{w}\right> \right)}{Z} Pr[w emitted in sentence scs]=αp(w)+(1α)Zexp(c~s,vw)

4.基于随机游走模型求解句子向量

根据上述的随机游走篇章模型可知一句话的概率为:
p [ s ∣ c s ] = ∏ w ∈ s p ( w ∣ c s ) = ∏ w ∈ s [ α p ( w ) + ( 1 − α ) exp ⁡ ( ⟨ v w , c ~ s ⟩ ) Z ] p\left[s \mid c_{s}\right]=\prod_{w \in s} p\left(w \mid c_{s}\right)=\prod_{w \in s}\left[\alpha p(w)+(1-\alpha) \frac{\exp \left(\left\langle v_{w}, \tilde{c}_{s}\right\rangle\right)}{Z}\right] p[scs]=wsp(wcs)=ws[αp(w)+(1α)Zexp(vw,c~s)]

通过最大似然来求得语篇向量 c s c_s cs使得上述句子概率 p ( s ) p(s) p(s) 概率最大。

先分析一下 p ( w ∣ c s ) p(w|c_s) p(wcs)。令 f w ( c ~ s ) = l o g ( p ( w ∣ c s ) ) f_{w}\left(\tilde{c}_{s}\right)=log(p(w|c_s)) fw(c~s)=log(p(wcs))
f w ( c ~ s ) = log ⁡ [ α p ( w ) + ( 1 − α ) exp ⁡ ( ⟨ v w , c ~ s ⟩ ) Z ] f_{w}\left(\tilde{c}_{s}\right)=\log \left[\alpha p(w)+(1-\alpha) \frac{\exp \left(\left\langle v_{w}, \tilde{c}_{s}\right\rangle\right)}{Z}\right] fw(c~s)=log[αp(w)+(1α)Zexp(vw,c~s)]

f w ( c ~ s ) f_{w}\left(\tilde{c}_{s}\right) fw(c~s)进行求导:
∇ f w ( c ~ s ) = 1 α p ( w ) + ( 1 − α ) exp ⁡ ( ⟨ v w , c ~ s ⟩ ) / Z 1 − α Z exp ⁡ ( ⟨ v w , c ~ s ⟩ ) v w . \nabla f_{w}\left(\tilde{c}_{s}\right)=\frac{1}{\alpha p(w)+(1-\alpha) \exp \left(\left\langle v_{w}, \tilde{c}_{s}\right\rangle\right) / Z} \frac{1-\alpha}{Z} \exp \left(\left\langle v_{w}, \tilde{c}_{s}\right\rangle\right) v_{w} . fw(c~s)=αp(w)+(1α)exp(vw,c~s)/Z1Z1αexp(vw,c~s)vw.

然后通过泰勒展开式:
f w ( c ~ s ) ≈ f w ( 0 ) + ∇ f w ( 0 ) ⊤ c ~ s = constant  + ( 1 − α ) / ( α Z ) p ( w ) + ( 1 − α ) / ( α Z ) ⟨ v w , c ~ s ⟩ . \begin{aligned} f_{w}\left(\tilde{c}_{s}\right) & \approx f_{w}(0)+\nabla f_{w}(0)^{\top} \tilde{c}_{s} \\ &=\text { constant }+\frac{(1-\alpha) /(\alpha Z)}{p(w)+(1-\alpha) /(\alpha Z)}\left\langle v_{w}, \tilde{c}_{s}\right\rangle . \end{aligned} fw(c~s)fw(0)+fw(0)c~s= constant +p(w)+(1α)/(αZ)(1α)/(αZ)vw,c~s.

通过上述可知,假定 c ~ s \tilde{\boldsymbol{c}}_{s} c~s 模长固定的情况下,与 v w v_w vw同方向的时候 f w ( c ~ s ) f_{w}\left(\tilde{c}_{s}\right) fw(c~s)结果最大。

假定 c ~ s \tilde{c}_{s} c~s 服务单位球面上的均匀分布,因此当 c ~ s \tilde{\boldsymbol{c}}_{s} c~s ∑ w ∈ s a p ( w ) + a v w \sum_{w \in s} \frac{a}{p(w)+a} v_{w} wsp(w)+aavw 同方向时, ∑ w ∈ s f w ( c ~ s ) \sum_{w \in s} f_{w}\left(\tilde{c}_{s}\right) wsfw(c~s) 结果最大。
arg ⁡ max ⁡ ∑ w ∈ s f w ( c ~ s ) ∝ ∑ u ∈ s a p ( w ) + a v w , where  a = 1 − α α Z . \arg \max \sum_{w \in s} f_{w}\left(\tilde{c}_{s}\right) \propto \sum_{u \in s} \frac{a}{p(w)+a} v_{w}, \text { where } a=\frac{1-\alpha}{\alpha Z} . argmaxwsfw(c~s)usp(w)+aavw, where a=αZ1α.

所以一个句子的初始向量可以定义为:
c ~ s ← 1 ∣ s ∣ ∑ w ∈ s a a + p ( w ) v w \tilde{c}_{s}\leftarrow \frac{1}{|s|}\sum _{w\in s}\frac{a}{a+p(w)} v_{w} \ \ c~ss1wsa+p(w)avw  

目前为止回答了第一问题:为什么可以通过句子中的单词向量加权平均来获得句子初始的向量的表征。下面回答一下为什么得到句子的初始向量之后要做一个修正。

上面提到但句子间的差异需要有差异的那部分语义来体现的。所以在计算句子间的语义相似度的时候,需要先删除公共语义部分。

论文中使用的删除句子公共语义部分的方法是:
将前面求解都的句子集合S中所有的句子表征向量 c ~ s \tilde{\boldsymbol{c}}_{s} c~s以列向量 拼接成一个矩阵 X X X。假定 u u u是矩阵的第一奇异向量。

最终的句子表征向量可以通过如下公式求得:
c s ← c ~ s − u u ⊤ c ~ s c_{s}\leftarrow \tilde{\boldsymbol{c}}_{s}-uu^{\top } \tilde{\boldsymbol{c}}_{s}\ csc~suuc~s 

5.实验结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YIpaAmr4-1623306848432)(./1620387002501.png)]

从论文中的实验来看,论文提出的句子表征算法(图中的GloVe+WR) ,比基于词向量通过tfidf加权或者平均方式来获得句向量的方式要好。(图中的tfidf-GloVe,avg-Glove)

参考资料

A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS

这篇关于论文解读-SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/200972

相关文章

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super