论文|Sentence2Vec & GloVe 算法原理推导与实​现

Posted 搜索与推荐Wiki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文|Sentence2Vec & GloVe 算法原理推导与实​现相关的知识,希望对你有一定的参考价值。

万物皆可Embedding系列会结合论文和实践经验进行介绍,前期主要集中在论文中,后期会加入实践经验和案例,目前已更新:

后续会持续更新Embedding相关的文章,欢迎持续关注「搜索与推荐Wiki」


Sentence2vec

Sentence2vec 是2017年发表于ICLR(国际学习展示回忆)的一篇论文,其全称为:A Simple but tough-to-beat baseline for sentence embeddings

下面来看一下论文所介绍的内容(论文的内容比较晦涩难懂,小编水平也不高,如果不当之处,评论区留言,感谢!)。

1、概述

论文主要提出了一种无监督的,基于单词词向量计算句子embedding的方法,称之为Smooth Inverse Frequecy(SIF),使用加权平均的方法从word embedding到sentence embedding,然后再基于句子的embedding进行相似度计算,下面使用Sentence2vec来代替模型的思想。

论文中提出的计算方法比直接平均求句子embedding的方法效果要好一些,在一些任务中甚至比RNN、LSTM模型表现还要好一些。

与该论文中思路比较相近的做法有:

  • 直接使用词语的平均embedding来表示句子,即不带权平均
  • 使用TF-IDF值作为权重,进行带权计算(前提是句子中没有大量重复的词语,且使用tfidf值作为权重没有理论依据)

通过引入SIF,结合词语embedding加权计算句子embedding,不仅表现较好,而且有较好的鲁棒性,论文中提到了三点:

  • 使用不同领域的语料训练得到的不同词语embedding,均取得了不错的效果,说明算法对各种语料都比较友好
  • 使用不同语料计算得到的词频,作为词语的权重,对最终的结果影响很小
  • 对于方法中的超参数, 在很大范围内, 获得的结果都是区域一致的, 即超参数的选择没有太大的影响

2、理论

a)潜在变量生成模型

在介绍Sentence2vec之前,先看一下潜在变量生成模型(latent variable generative model),其将语料的生成过程看作是一个动态的过程,第 t t t个单词是在第 t t t步生成的,每个单词 w w w 对应一个实值向量 R d R^d Rd。这个动态过程是通过 discourse vector c t ∈ R d c_t \\in R^d ctRd 随机游走驱动的。discourse vector表达的是 what is being talked about。

discourse vector c t c_t ct 和 单词的向量 v w v_w vw 的内积表达的是 discourse和word之间的相关性,并且假设 t t 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, v_w>) Pr[wemittedattimetct]exp(<ct,vw>)

由于 c t c_t ct 是较小幅度的随机游走生成的, c t c_t ct c t + 1 c_t+1 ct+1 之间只是相差一个很小的随机差向量,因此相邻的单词由相似的discourses vector 生成,另外计算表明这种模型的随机游走允许偶尔 c t c_t ct 有较大的 jump,通过这种方法生成的词向量,与word2vec(CBOW)和Glove是相似的。

b)Sentence2vec 在随机游走上的改进

在给定句子 s s s的情况下,对控制该句子的向量 discourse vector 进行最大似然估计, 我们观察到在句子生成单词的时候,discourse vector c t c_t ct 变化特别小,为了简单起见,认为其是固定不变的,为 c s c_s cs,可以证明 对 c s c_s cs 的最大似然估计就是该句中所有单词向量的平均。

Sentence2vec对模型的改进为增加了两项平滑(smoothing term),原因是:有些单词在上下文之外出现,可能会对discourse vector产生影响;有些常见的停用词和discourse vector几乎没有关系。

两项平滑技术为:

  • 1、在对数线性模型中引入 了累加项 $ \\alpha p(w) , , p(w)$ 表示的是单词 w w w在整个语料中出现的概率, α \\alpha α 是一个超参数,这样即使和 c s c_s cs的向量内积很小,这个单词也有概率出现
  • 2、引入纠错项 c 0 ∈ R d c_0 \\in R^d c0Rd (a common discourse vector),其意义是句子的最频繁的意义可以认为是句子的最重要组成部分。常常可以与语法联系起来. 文章中认为对于某个单词, 其沿着 c 0 c_0 c0方向的成分较大(即向量投影更长), 这个纠正项就会提升这个单词出现的概率.

纠正后的单词 w w w在句子 s s s中出现的概率为:
P r [ w   e m i t t e d i n s e n t e n c e s ∣ c s ] = α p ( w ) + ( 1 − α ) e x p ( < c s ~ , v w > ) Z c s ~ Pr[w \\, emitted in sentence s | c_s] = \\alpha p(w) + (1-\\alpha) \\fracexp(<\\tildec_s, v_w>)Z_\\tildec_s Pr[wemittedinsentencescs]=αp(w)+(1α)Zcs~exp(<cs~,vw>)
其中:

  • c s ~ = β c 0 + ( 1 − β ) c s , c 0 ⊥ c s \\tildec_s = \\beta c_0 + (1- \\beta) c_s, c_0 \\perp c_s cs~=βc0+(1β)cs,c0cs
  • $ \\alpha, \\beta$为超参数
  • Z c s ~ = ∑ w ∈ V e x p ( < c s ~ , v w > ) Z_\\tildec_s = \\sum_w \\in V exp(<\\tildec_s, v_w>) Zcs~=wVexp(<cs~,vw>) 是归一化常数

从上面的公式中也可以看出,一个与 c s c_s cs 没有关系的词语 w w w 也可以在句子中出现,因为:

  • α p ( w ) \\alpha p(w) αp(w) 常数项
  • 与 common discourse vector c 0 c_0 c0的相关性

c)计算句子相关性

句子的向量,即上文提到的 c s c_s cs 可以通过最大似然函数去生成,这里假设组成句子的词语 v w v_w vw是统一分散的,因此这里归一化 Z c Z_c Zc 对于不同句子的值都是大致相同的,即对于任意的 c s ~ \\tildec_s cs~ Z Z Z值都是相同的,,在这个前提下,得到的似然函数为:
p [ s ∣ c s ] = ∏ w ∈ s p ( w ∣ c s ) = ∏ w ∈ s [ α p ( w ) + ( 1 − α ) e x p ( < v w , c s ~ > ) Z ] p[s | c_s] = \\prod_w\\in s p(w|c_s)= \\prod_w \\in s [\\alpha p(w) + (1-\\alpha) \\frac exp(<v_w, \\tildec_s>) Z] p[scs]=wsp(以上是关于论文|Sentence2Vec & GloVe 算法原理推导与实​现的主要内容,如果未能解决你的问题,请参考以下文章

Sentence2vec和Word2vec涉及停用词和命名实体

KOBO glo怎么装安卓HD 和 n905c也可以0

今日论文|谷歌:差分私有机器学习&谷歌:用模拟用户测量推荐系统性能&队列学习&MORE

近千篇机器学习 & 自然语言处理论文!都这儿了

电子病历管理系统参考论文

巨经典论文!推荐系统经典模型Wide & Deep