glove词向量

12 篇文章 0 订阅

词向量的表示可以分成两个大类1:基于统计方法例如共现矩阵、奇异值分解SVD;2:基于语言模型例如神经网络语言模型(NNLM)、word2vector(CBOW、skip-gram)、GloVe、ELMo。
  word2vector中的skip-gram模型是利用类似于自动编码的器网络以中心词的one-hot表示作为输入来预测这个中心词环境中某一个词的one-hot表示,即先将中心词one-hot表示编码然后解码成环境中某个词的one-hot表示(多分类模型,损失函数用交叉熵)。CBOW是反过来的,分别用环境中的每一个词去预测中心词。尽管word2vector在学习词与词间的关系上有了大进步,但是它有很明显的缺点:只能利用一定窗长的上下文环境,即利用局部信息,没法利用整个语料库的全局信息。鉴于此,斯坦福的GloVe诞生了,它的全称是global vector,很明显它是要改进word2vector,成功利用语料库的全局信息。

1. 共现概率
什么是共现?
  单词 i i i出现在单词 j j j的环境中(论文给的环境是以 j j j为中心的左右10个单词区间)叫共现。

什么是共现矩阵?
  单词对共现次数的统计表。我们可以通过大量的语料文本来构建一个共现统计矩阵。
  例如,有语料如下:
  I like deep learning.
  I like NLP.
  I enjoy flying.
  我以窗半径为1来指定上下文环境,则共现矩阵就应该是[2]:
å±ç°ç©éµ

 

 取x_{01}解释:它表示 like出现在 I 的环境( I Ilike区间)中的次数(在整个语料库中的总计次数),此处应当为2次,故第一行第二列应当填2。还应当发现,这个共现矩阵它是对称阵,因为  like 出现在 I 的环境中,那么必然 I 也会出现在 like的环境中,所以x_{10}=2。
  共现矩阵它有以下3个特点:
  ·统计的是单词对在给定环境中的共现次数;所以它在一定程度上能表达词间的关系。
  ·共现频次计数是针对整个语料库而不是一句或一段文档,具有全局统计特征。
  ·共现矩阵它是对称的。

共现矩阵的生成步骤:
  · 首先构建一个空矩阵,大小为 V × V ,即词汇表×词汇表,值全为0。矩阵中的元素坐标记为(i,j)。
  · 确定一个滑动窗口的大小(例如取半径为m)
  · 从语料库的第一个单词开始,以1的步长滑动该窗口,因为是按照语料库的顺序开始的,所以中心词为到达的那个单词即 i 。
  · 上下文环境是指在滑动窗口中并在中心单词 i两边的单词(这里应有2m-1个 j )。
  · 若窗口左右无单词,一般出现在语料库的首尾,则空着,不需要统计。
  · 在窗口内,统计上下文环境中单词 j出现的次数,并将该值累计到  (i,j)位置上。
  · 不断滑动窗口进行统计即可得到共现矩阵。

 

å¨è¿éæå¥å¾çæè¿° 

4. GloVe模型算法
  最后,关于glove模型算法,大致是这样的:从共现矩阵中随机采集一批非零词对作为一个mini-batch的训练数据;随机初始化这些训练数据的词向量以及随机初始化两个偏置;然后进行内积和平移操作并与 log(x_{ij})计算损失值,计算梯度值;然后反向传播更新词向量和两个偏置;循环以上过程直到结束条件。论文中还提到一个词最终的glove词向量用的是训练后的两个词向量之和,关于这一点论文中有解释,如果感兴趣的话最好阅读一下原论文。
 

reference:
[1] 来b站搞学习
[2] https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1184/lectures/midterm-review.pdf
[3] GloVe论文
[4] glove开源代码
 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值