论文|sentence2vec&glove算法原理推导与实​现

搜索与推荐Wiki 搜索与推荐Wiki     2022-10-21     312

关键词:

万物皆可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(glove:globalvectorsforwordrepresentation阅读总结

论文:GloVe:GlobalVectorsforWordRepresentationcs224视频:https://www.bilibili.com/video/BV1pt411h7aT?t=4017&p=3目录一、背景介绍二、实验方法三、模型理解1、和其他模型的关系2、模型复杂度四、实验结果0、实验设置1、单词类比任... 查看详情

glove词向量

参考技术AGlove词向量出自于论文《Glove:GlobalVectorsforWordRepresentation》Glove的全称是GlobalVectorsforWordRepresentation,中文意思是全局词向量,它是一个基于全局词频统计(count-based&overallstatistics)的词表征(wordrepresentation)工具。跟word2vec... 查看详情

glove:globalvectorsforwordrepresentation阅读总结

论文:GloVe:GlobalVectorsforWordRepresentationcs224视频:https://www.bilibili.com/video/BV1pt411h7aT?t=4017&p=3目录一、背景介绍二、实验方法三、模型理解1、和其他模型的关系2、模型复杂度四、实验结果0、实验设置1、单词类比任... 查看详情

globalvectorsforwordrepresentation

参考论文: GloVe:GlobalVectorsforWordRepresentation参考博客:https://blog.csdn.net/coderTC/article/details/73864097理解GloVe模型:glove模型类似于word2vec模型,都是一种词的全局向量的表示方法。模型目标:进行词的向量化表示,使得向量之间... 查看详情

预训练的 GloVe 矢量文件(例如 glove.6B.50d.txt)中的“unk”是啥?

】预训练的GloVe矢量文件(例如glove.6B.50d.txt)中的“unk”是啥?【英文标题】:Whatis"unk"inthepretrainedGloVevectorfiles(e.g.glove.6B.50d.txt)?预训练的GloVe矢量文件(例如glove.6B.50d.txt)中的“unk”是什么?【发布时间】:2018-08-2018:01... 查看详情

glove原理详细解读

...库的全局信息。什么是共现?单词出现在单词的环境中(论文给的环境是以为中心的左右10个单词区间)叫共现。什么是共现矩阵?共现矩阵是单词对共现次数的统计表。我们可以通过大量的语料文本来构建一个共现统计矩阵。例... 查看详情

keras深度学习实战——使用glove模型构建单词向量(代码片段)

Keras深度学习实战——使用GloVe模型构建单词向量0.前言1.GloVe算法模型1.1模型目标1.2GloVe算法计算细节3.实现GloVe模型构建单词向量3.1数据集3.2模型实现相关链接0.前言在《使用fastText模型构建单词向量》一节中,我们学习了如何构... 查看详情

keras深度学习实战——使用glove模型构建单词向量(代码片段)

Keras深度学习实战——使用GloVe模型构建单词向量0.前言1.GloVe算法模型1.1模型目标1.2GloVe算法计算细节3.实现GloVe模型构建单词向量3.1数据集3.2模型实现相关链接0.前言在《使用fastText模型构建单词向量》一节中,我们学习了如... 查看详情

glove理解

...dn.net/leyounger/article/details/78206832 2018.10.28大概了解了下glove思想:先构造文档中出现的共现矩阵,Xij的意义为:在整个语料库中,单词i和单词j共同出现在一个窗口中的次数。然后通过代价函数 学习词向量。(具体的推导公... 查看详情

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

基于面向对象技术的病案管理系统的设计与实现http://www.cnki.net/KCMS/detail/detail.aspx?QueryID=0&CurRec=2&filename=1018069753.nh&dbname=CMFD201801&dbcode=CMFD&pr=&urlid=&yx=&v=MDI2NzBoMVQzcV 查看详情

GloVe for Python 3.7 版本

】GloVeforPython3.7版本【英文标题】:GloVeforPython3.7version【发布时间】:2020-05-3120:43:13【问题描述】:我正在尝试在Python3.7版上从Pypi安装GloVe包,但它一直返回下面写的相同错误。有什么方法可以使用手套吗?我也尝试从https://githu... 查看详情

cvpr2021论文合集下载论文分类汇总

论文合集下载百度链接:https://pan.baidu.com/s/1NCCV1rXMQR8ExxTxTYs4Ng提取码:8ny0压缩包中包括:CVPR2020+ICCV2019+ECCV2020+AAAI2020+NIPS2020等论文合集下载链接和提取码已更新(2021-03-05)CVPR2021论文&&代码&... 查看详情

text随机放置旋转gloves.pde(代码片段)

查看详情

巨经典论文!推荐系统经典模型wide&deep

今天我们剖析的也是推荐领域的经典论文,叫做Wide&DeepLearningforRecommenderSystems。它发表于2016年,作者是GoogleAppStore的推荐团队。这年刚好是深度学习兴起的时间。这篇文章讨论的就是如何利用深度学习模型来进行推荐系统的CTR... 查看详情

#论文阅读&ctgfetalhypoxiadetectionbasedondeepconvolutionalneuralnetworkwithtransferlearn

DOI10.1007/978-3-319-91186-1_25所属期刊CSOC20182018论文发表时间2018年05月17日记录时间2023年01月04日记录人TroyeJcanFetalHypoxiaDetectionBasedonDeepConvolutionalNeuralNetworkwithTransferLearningApproach一、Datasets  CTU-UHB 查看详情

使用 glove-python 模型获取词嵌入字典

】使用glove-python模型获取词嵌入字典【英文标题】:Getword-embeddingdictionarywithglove-pythonmodel【发布时间】:2018-06-1123:36:02【问题描述】:我使用Maciejkula的实现(githubrepo)在python中训练了一个Glove模型。下一步我需要一个词嵌入词典。... 查看详情

机器学习经典书籍&论文

原文地址:http://blog.sina.com.cn/s/blog_7e5f32ff0102vlgj.html入门书单1.《数学之美》PDF6作者吴军大家都很熟悉。以极为通俗的语言讲述了数学在机器学习和自然语言处理等领域的应用。2.《ProgrammingCollectiveIntelligence》(《集体智慧编程》... 查看详情

论文笔记-wide&deeplearningforrecommendersystems

本文提出的W&D是针对rank环节的模型。 网络结构:本文提出的W&D是针对rank环节的模型。 网络结构: wide是简单的线性模型,但是可以预先对特征做各种变换、交叉等来增加wide模型的非线性性。deep是一个FNN,对... 查看详情