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

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

本文是阅读 ICLR 会议论文 "A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS" 所作笔记。

论文 GitHub:https://github.com/PrincetonML/SIF

Abstract

本文提出了一种基于无监督学习的 Sentence Embedding 方法,其效果超过了目前(截止论文发表)主流的 Sentence Embedding 方法。流程如下:

  1. 计算 Word Embedding ,通过对无标签的语料库;
  2. 用加权词向量来表征一个句子;
  3. 用 PCA/SVD 来改善它们

Introduction

Word Embedding 已经成为了自然语言处理和信息检索中的基石。最近的研究则主要是 Sentence Embedding ,之前已经有很多的研究方法,如词向量的简单组合、CNN、RNN……2016 年 Wieting et al 在 PPDB 上对标准的 Word Embedding 进行修改,训练一个 word averaging model,但是若无修改的过程,直接对初始的词向量进行平均操作,效果并不好。

本文提出的算法 SIF (smooth inverse frequency)

  1. 计算词向量的加权平均值:\(weight(w) = \frac{a}{a+p(w)}\)
  2. common component removal: remove the projection of the average vectors on there first component

优势:

  1. 领域自适应 well-suited
  2. 加权方法的健壮性:使用不同语料库的词频并不影响性能
  3. 通过调整 a 是可以到达最优解的,且选择范围大

Word Embeddings

是一种词汇的表示方法。将词汇表示为低维度的连续向量,具有其语义、词汇特征。计算方法:

  • internal representations from neural network models of text
  • low rank approximation of co-occurrence statistics

Our work:

在 Random Walk 模型中对潜在的变量进行近似推理。

Random Walk:在文章中生成缺失词的产生式模型

Phrase/Sentence/Paragraph embeddings

Our work:

通过 Word Embedding 计算 paraphrastic sentence embedding,并且根据 paraphrase 对 word embedding 更新,初始化和训练过程中均为有监督的。

A Simple Method for Sentence Embedding

潜在变量生成模型(latent variable generative model)假设:语料的生成是一个动态的过程,即第 t 个单词在第 t 步生成。每个单词对应一个 \(R^d\) 空间里的向量。

单词 \(w\) 的向量 \(v^w\)与当前时间的 discourse vector \(c^t\) 的内积,,表示着这个单词与整个句子之间的关系。 并且我们假设t时刻观测到单词 \(w\) 的概率为这个内积的对数线性 (log linear) 关系:

\[Pr[w \ emitted \ at \ time \ t \ | c_t] \propto exp(<c_t,v_w>) .\]

因为 \(c_t\) 是由较小的随机漫步得到的(\(c_{t+1}\)\(c_t\) 只相差一个较小的随机向量),所以相邻的词是由相似的 discourse vector 得到的。同时,偶尔 \(c_t\) 有大的 jump,对 co-occurrence probabilities 影响不大。

通过这种办法生成的单词向量与 Glove 和 word2vec 很像。

Our improved Random Walk model

我们希望定义 sentence embedding 为:对 discourse vector 的最大后验估计(MAP)。因为整个句子中 \(c_t\) 变化很小,为了化简,用 \(c_s\) 代表一个句子中的所有 \(c_t\)

基于前文的 Simple Method 做如下改进,引入两种平滑项,原因是:

  • 有些单词在规定的上下文范围之外出现
  • 有些频率高的单词(停止词、连接词)与 discourse vector 无关

两种平滑项分别是:

  • \(\alpha p(w)\),在对数线性模型中,\(p(w)\)\(w\) 在整个语料库中出现的频率,\(\alpha\) 是超参数,这样即使和 \(c_s\) 的内积很小,也有可能出现
  • \(c_0\),纠正项,代表着最频繁的 discourse vector,通常和语法联系起来。

修正后的模型为:

\[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 \]

\(\alpha\)\(\beta\) 都是超参数,\(Z_{\tilde{c}_s}=\sum_{w\in V}exp(<\tilde{c}_s,v_w>)\) 是归一化常数(normalizing constant)。这样即使一个单词无关于 discourse vector 也可以出现,因为来自 \(\alpha p(w)\) 的数值和与 \(c_0\) 的相关性。

Computing the sentence embedding

sentence embedding 被定义为 \(c_s\) 的最大似然估计向量,(因为前验概率相同,这里的 MLE 等同于上文的 MAP),因为 \(v_s\) 是大致均与分布在整个向量空间上的,因此这里的归一化项 \(Z_c\) 在各个维度(不同句子?)上也是大致相同的。所以假设 \(Z_{\tilde{c}_{s}}\) 也是大致相同的,则由修正后的模型得出句子的似然估计是:

\[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}]\]

\[f_w(\tilde{c}_s)=log[\alpha p(w)+(1-\alpha)\frac{exp(<\tilde{c}_s,v_w>)}{Z}]\]

做偏分得:

\[\nabla f_w(\tilde{c}_s)=\frac1{\alpha p(w)+(1-\alpha)exp(<\tilde{c}_s,v_w>) / Z} \frac{1-\alpha}{Z}exp(<v_w,\tilde{c}_s>)\]

通过泰勒展开,得到:

\[\begin{equation}\begin{aligned} f_w(\tilde{c}_s)& \approx f_w(0)+\nabla f_w(0)^{\top} \tilde{c}_s \\ &=constant + \frac{(1-\alpha)/(\alpha Z)}{p(w)+(1-\alpha)/(\alpha Z)} <v_w,\tilde{c}_s> \end{aligned}\end{equation}\]

所以,对 \(\tilde{c}_s\) 的最大似然估计:

\[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} \]

因此,可得,最优解就是句子中所有单词向量的加权平均,对于频率高的单词,其权重也更小。

最后,为了得到句子向量 \(c_s\),我们需要估计 \(c_0\),通过计算向量 \(c_s\) 中的主成分(first principal component),即用 \(c_s\) 减去 \(c_0\) 向量。

详细过程:

通过证明,Word2vec 的下采样概率和我们的权重模型是相似的。

最后论文用数据集进行了验证,本文不再赘述,感兴趣的可以取 github 开源代码或论文后半部分阅读。

# NLP

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×