本文是阅读 ICLR 会议论文 “A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS” 所作笔记。
论文 GitHub:https://github.com/PrincetonML/SIF
本文提出了一种基于无监督学习的 Sentence Embedding
方法,其效果超过了目前(截止论文发表)主流的 Sentence Embedding
方法。流程如下:
Word Embedding
,通过对无标签的语料库;Word Embedding
已经成为了自然语言处理和信息检索中的基石。最近的研究则主要是 Sentence Embedding
,之前已经有很多的研究方法,如词向量的简单组合、CNN、RNN……2016 年 Wieting et al 在 PPDB 上对标准的 Word Embedding
进行修改,训练一个 word averaging model
,但是若无修改的过程,直接对初始的词向量进行平均操作,效果并不好。
本文提出的算法 SIF (smooth inverse frequency)
优势:
是一种词汇的表示方法。将词汇表示为低维度的连续向量,具有其语义、词汇特征。计算方法:
Our work:
在 Random Walk 模型中对潜在的变量进行近似推理。
Random Walk:在文章中生成缺失词的产生式模型
Our work:
通过 Word Embedding 计算 paraphrastic sentence embedding,并且根据 paraphrase 对 word embedding 更新,初始化和训练过程中均为有监督的。
潜在变量生成模型(latent variable generative model)假设:语料的生成是一个动态的过程,即第 t 个单词在第 t 步生成。每个单词对应一个 R d R^d Rd 空间里的向量。
单词 w w w 的向量 v w v^w vw与当前时间的 discourse vector c t c^t ct 的内积,,表示着这个单词与整个句子之间的关系。 并且我们假设t时刻观测到单词 w w w 的概率为这个内积的对数线性 (log linear) 关系:
P r [ w e m i t t e d a t t i m e t ∣ c t ] ∝ e x p ( < c t , v w > ) . Pr[w \ emitted \ at \ time \ t \ | c_t] \propto exp(
因为 c t c_t ct 是由较小的随机漫步得到的( c t + 1 c_{t+1} ct+1 和 c t c_t ct 只相差一个较小的随机向量),所以相邻的词是由相似的 discourse vector 得到的。同时,偶尔 c t c_t ct 有大的 jump,对 co-occurrence probabilities 影响不大。
通过这种办法生成的单词向量与 Glove 和 word2vec 很像。
我们希望定义 sentence embedding
为:对 discourse vector 的最大后验估计(MAP)。因为整个句子中 c t c_t ct 变化很小,为了化简,用 c s c_s cs 代表一个句子中的所有 c t c_t ct。
基于前文的 Simple Method 做如下改进,引入两种平滑项,原因是:
两种平滑项分别是:
修正后的模型为:
P r [ w e m i t t e d a t t i m e t ∣ c t ] = α p ( w ) + ( 1 − α ) e x p ( < c ~ s , v w > ) Z c ~ s , w h e r e c ~ s = β c 0 + ( 1 − β ) c S , c 0 ⊥ c s Pr[w \ emitted \ at \ time \ t \ | c_t]=\alpha p(w)+(1-\alpha)\frac{exp(<\tilde{c}_s,v_w>)}{Z_{\tilde{c}_s}}, \\ where \ \tilde{c}_s=\beta c_0+(1-\beta)c_S,c_0 \perp c_s Pr[w emitted at time t ∣ct]=αp(w)+(1−α)Zc~sexp(<c~s,vw>),where c~s=βc0+(1−β)cS,c0⊥cs
α \alpha α 和 β \beta β 都是超参数, Z c ~ s = ∑ w ∈ V e x p ( < c ~ s , v w > ) Z_{\tilde{c}_s}=\sum_{w\in V}exp(<\tilde{c}_s,v_w>) Zc~s=∑w∈Vexp(<c~s,vw>) 是归一化常数(normalizing constant)。这样即使一个单词无关于 discourse vector 也可以出现,因为来自 α p ( w ) \alpha p(w) αp(w) 的数值和与 c 0 c_0 c0 的相关性。
sentence embedding
被定义为 c s c_s cs 的最大似然估计向量,(因为前验概率相同,这里的 MLE 等同于上文的 MAP),因为 v s v_s vs 是大致均与分布在整个向量空间上的,因此这里的归一化项 Z c Z_c Zc 在各个维度(不同句子?)上也是大致相同的。所以假设 Z c ~ s Z_{\tilde{c}_{s}} Zc~s 也是大致相同的,则由修正后的模型得出句子的似然估计是:
p [ s ∣ c s ] = ∏ w ∈ s P ( w ∣ c s ) = ∏ w ∈ s [ α p ( w ) + ( 1 − α ) e x p ( < c ~ s , v w > ) Z ] p[s|c_s]=\prod_{w \in s}P(w|c_s)=\prod_{w \in s} [\alpha p(w)+(1-\alpha)\frac{exp(<\tilde{c}_s,v_w>)}{Z}] p[s∣cs]=w∈s∏P(w∣cs)=w∈s∏[αp(w)+(1−α)Zexp(<c~s,vw>)]
f w ( c ~ s ) = l o g [ α p ( w ) + ( 1 − α ) e x p ( < c ~ s , v w > ) Z ] f_w(\tilde{c}_s)=log[\alpha p(w)+(1-\alpha)\frac{exp(<\tilde{c}_s,v_w>)}{Z}] fw(c~s)=log[αp(w)+(1−α)Zexp(<c~s,vw>)]
做偏分得:
∇ f w ( c ~ s ) = 1 α p ( w ) + ( 1 − α ) e x p ( < c ~ s , v w > ) / Z 1 − α Z e x p ( < v w , c ~ s > ) \nabla f_w(\tilde{c}_s)=\frac1{\alpha p(w)+(1-\alpha)exp(<\tilde{c}_s,v_w>) / Z} \frac{1-\alpha}{Z}exp(
通过泰勒展开,得到:
KaTeX parse error: No such environment: equation at position 7: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲\begin{aligned}…
所以,对 c ~ s \tilde{c}_s c~s 的最大似然估计:
a r g m a x ∑ w ∈ s f w ( c ~ s ) ∝ ∑ w ∈ s a p ( w ) + a v w , w h e r e a = 1 − α α Z arg \ max\sum_{w\in s}f_w({\tilde{c}_s}) \propto \sum_{w\in s}\frac{a}{p(w)+a}v_w,where \ a = \frac{1-\alpha}{\alpha Z} arg maxw∈s∑fw(c~s)∝w∈s∑p(w)+aavw,where a=αZ1−α
因此,可得,最优解就是句子中所有单词向量的加权平均,对于频率高的单词,其权重也更小。
最后,为了得到句子向量 c s c_s cs,我们需要估计 c 0 c_0 c0,通过计算向量 c s c_s cs 中的主成分(first principal component),即用 c s c_s cs 减去 c 0 c_0 c0 向量。
详细过程:
通过证明,Word2vec 的下采样概率和我们的权重模型是相似的。
最后论文用数据集进行了验证,本文不再赘述,感兴趣的可以取 github 开源代码或论文后半部分阅读。