Sentence2vec

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

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)潜在变量生成模型

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

c)计算句子相关性

d)整体算法流程

图片

整体算法流程

3、实现

作者开源了其代码,地址为:

https://github.com/PrincetonML/SIF

Glove

1、概述

论文中作者总结了目前生成embedding的两大类方法,但这两种方法都有其弊端存在

  • 基于矩阵分解,弊端为因为是基于全局进行矩阵的构建,对于一些高频词,在算法优化的过程中,占的权重比较大

  • 基于滑动窗口,不能直接对语料库的单词进行共现建模,使用的是滑动窗口,没有办法利用数据的共现信息

因此作者提出了一种基于语料库进行信息统计,继而生成embedding的算法-Glove。下面就来具体看下对应的算法原理。

2、算法推导过程

图片

共现矩阵提取信息说明

图片

a值设定效果

3、总结

以上就是有关原理的介绍,作者其实也是基于最开始的猜想一步一步简化模型的计算目标,最后看GloVe的目标函数时发现其实不难计算,但是要从最开始就想到这样一个目标函数其实还是很难的。最后做一下总结:

  • 综合了全局词汇共现的统计信息和局部窗口上下文方法的优点,可以说是两个主流方法的一种综合,但是相比于全局矩阵分解方法,由于不需要计算那些共现次数为0的词汇,因此,可以极大的减少计算量和数据的存储空间

  • 但是把语料中的词频共现次数作为词向量学习逼近的目标,当语料比较少时,有些词汇共现的次数可能比较少,笔者觉得可能会出现一种误导词向量训练方向的现象

4、实现

实现可以参考官方给出的代码和数据:

https://nlp.stanford.edu/projects/glove/

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值