GloVe词分布式表示
GloVe 模型介绍
下面的内容主要来自https://blog.csdn.net/u014665013/article/details/79642083
GloVe的推导
GloVe是基于共现信息来获得词的分布表示的,所以需要统计词的共现对信息。在设定的窗口内,统计中心词\(k\)与其上下文词\(i\)的共现次数\(X_{i,k}\)。那么有
\[
P_{i,k} = \dfrac{X_{i,k}}{X_i}
\]
其中
\[
X_i = \sum_{j}X_{i,j}
\]
作者发现对于任意三个词\(i,j,k\), \[
ratio_{i,j,k} = \dfrac{P_{i,k}}{P_{j,k}}
\]存在以下关系
\(ratio_{i,j,k}\) | 单词\(j,k\)相关 | 单词\(j,k\)不相关 |
---|---|---|
单词\(i,k\)相关 | 趋近1 | 很大 |
单词\(i,k\)不相关 | 很小 | 趋近1 |
GloVe模型要做的就是建模上述关系,因此需要寻找一个函数\(g\),使得
\[
\dfrac{P_{i,k}}{P_{j,k}} = g(v_i, v_j, v_k)
\]
一个较为直观的做法就是
\[
g(v_i,v_j,v_k) = \exp(v_i^Tv_k - v_j^Tv_k) = \dfrac{\exp (v_i^Tv_k)}{\exp(v_j^Tv_k)} = \dfrac{P_{i,k}}{P_{j,k}}
\]
所以,对于任意的词\(i,k\),仅需要使得\(v_i^Tv_k = \log P_{i,k}\)即可,便可得到目标函数
\[
J= \sum_{i,k}^N(v_i^Tv_k - \log P_{i,k})^2
\]
等等,这个方法似乎存在问题,因为\(\log P_{i,k}\) 不等于\(\log P_{k,i}\)但是\(v_i^Tv_j = v_j^Tv_i\),这样需要进行补救一下
\[
\log P_{i,k} = \log(X_{i,k}) - \log(X_i) = v_i^Tv_k
\]
此时引入两个偏置\(b_i, b_j\),
使得
\[
\log(X_{i,k}) = v_i^Tv_k + b_i + b_k
\]
\(\log(X_i)\)被偏置项吸纳。进而,我们的优化目标变为
\[
J = \sum_{i,k}f(X_{i,k})(v_i^Tv_j+b_i+b_k - \log(X_{i,k}))^2
\]
其中\(f(X_{i,k})\)为一个常量,其计算如下
\[
f(x) = \begin{cases}
(x/xmax)^0.75 & x < xmax\\
1 & x \ge xmax
\end{cases}
\]
其作用是某些词频率过高,通常没有多大的意义,比如停用词,所以不能给过高的权重,此处的xmax是一个超参数。
如何理解Global
GloVe 即Global Vectors,如word2vec一样,都有滑动窗口,那么Global体现在哪里?
从上面的推导过程中,我们不难发现,GloVe在参数的训练前,就已经统计好了一个共现矩阵,而这个共现矩阵是全局的,是整个语料的,然后再基于此进行参数学习,而word2vec在参数学习的时候,是局部的,每次只在一个窗口内的学习,只利用到了该窗口内的信息,比如cbow,每次都是基于单个窗口内的上下文词预测中心词。
GloVe词分布式表示的更多相关文章
- [DeeplearningAI笔记]序列模型2.8 GloVe词向量
5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.8 GloVe word vectors GloVe词向量 Pennington J, Socher R, Mannin ...
- NLP︱高级词向量表达(一)——GloVe(理论、相关测评结果、R&python实现、相关应用)
有很多改进版的word2vec,但是目前还是word2vec最流行,但是Glove也有很多在提及,笔者在自己实验的时候,发现Glove也还是有很多优点以及可以深入研究对比的地方的,所以对其进行了一定的 ...
- 文本情感分析(二):基于word2vec、glove和fasttext词向量的文本表示
上一篇博客用词袋模型,包括词频矩阵.Tf-Idf矩阵.LSA和n-gram构造文本特征,做了Kaggle上的电影评论情感分类题. 这篇博客还是关于文本特征工程的,用词嵌入的方法来构造文本特征,也就是用 ...
- L25词嵌入进阶GloVe模型
词嵌入进阶 在"Word2Vec的实现"一节中,我们在小规模数据集上训练了一个 Word2Vec 词嵌入模型,并通过词向量的余弦相似度搜索近义词.虽然 Word2Vec 已经能够成 ...
- NLP教程(2) | GloVe及词向量的训练与评估
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...
- NLP︱词向量经验总结(功能作用、高维可视化、R语言实现、大规模语料、延伸拓展)
R语言由于效率问题,实现自然语言处理的分析会受到一定的影响,如何提高效率以及提升词向量的精度是在当前软件环境下,比较需要解决的问题. 笔者认为还存在的问题有: 1.如何在R语言环境下,大规模语料提高运 ...
- DeepLearning.ai学习笔记(五)序列模型 -- week2 自然语言处理与词嵌入
一.词汇表征 首先回顾一下之前介绍的单词表示方法,即one hot表示法. 如下图示,"Man"这个单词可以用 \(O_{5391}\) 表示,其中O表示One_hot.其他单词同 ...
- DLNg序列模型第二周NLP与词嵌入
1.使用词嵌入 给了一个命名实体识别的例子,如果两句分别是“orange farmer”和“apple farmer”,由于两种都是比较常见的,那么可以判断主语为人名. 但是如果是榴莲种植员可能就无法 ...
- 2.keras实现-->字符级或单词级的one-hot编码 VS 词嵌入
1. one-hot编码 # 字符集的one-hot编码 import string samples = ['zzh is a pig','he loves himself very much','p ...
随机推荐
- 多线程串口通信 MFC CSerialPort
写在前面: 晚上应该继续完成未写完的代码,但Chrome上打开的标签实在太多了,约30个了,必须关掉一些,所以需要把自己看的整理一下然后关掉.本次主要写点MFC环境下多线程串口通信相关的东西,这包括线 ...
- Ubuntu 自动获取ip地址
$ sudo dhclient -r //release ip 释放IP$ sudo dhclient //获取IP手動使用 DHCP 自 ...
- for循环/计算坐标
for循环计算坐标 webqq里面有类似桌面的各种图标,是绝对定位的,这样可以拖动改变位置,用浮动的话,没法拖动. <!DOCTYPE html> <html lang=" ...
- 【Troubleshooting Case】Exchange Server 组件状态应用排错?
在Exchange 2013中,引入了“服务器组件状态”的概念.服务器组件状态从运行环境的角度提供对组成Exchange Server的组件的状态的精细控制. 日常排错时,常常会把Exchange 服 ...
- Python——函数入门(一)
一.理解函数 举一个例子,当我们需要重复使用一个功能的时候,不可能每次都去复制一次代码,这个时候就需要用到函数了,所谓的函数,简单来说就是给函数取一个名字,当需要用到这个功能的时候,就可以通过这个名字 ...
- php的字符转换 & php登入注册界面设计以及源码 & 分离公共部分
我们在编写的时候总是会出现乱码 https://www.cnblogs.com/mafeng/p/5827215.html php登入注册界面设计以及源码 https://blog.csdn.net/ ...
- HTML5 跨文档消息传输
对窗口对象的message事件进行监听 window.addEventListener("message", function(event) { // 处理程序代码 }, fals ...
- Codeforces 517 #B
http://codeforces.com/contest/1072/problem/B 开始想的只有搜索,时间复杂度$O(4^n)$,明显有问题. 想了半个小时没有思路,然后想到了正难则反,就开始步 ...
- 关于上传文件 非ajax提交 得到后台数据问题
<form name="configForm" id="configForm" method="post" action=" ...
- Applied Nonparametric Statistics-lec8
Ref:https://onlinecourses.science.psu.edu/stat464/print/book/export/html/11 additive model value = t ...