简介

GloVe是一种非常简单快速的训练词向量的算法。与复杂的word2vec相比,其是一个log双线性模型,仅通过一个简单的损失函数就能够得到很好的结果。

(1)J=∑i,jNf(Xi,j)(viTvj+bi+bj−log(Xi,j))2

其中,vi和vj是i和j的词向量,bi和bj是两个偏差项,f是一个权重函数,N为词汇表大小
但是这个损失函数的意义却不是很直观,这里参照一篇博客写了一下对于这个损失函数的分析

思路

Glove首先会通过设置定义的窗口大小,进行统计得到词的共现矩阵。如Xi,j表示词i和j同时出现的次数。共现矩阵是一个N×N的矩阵

然后我们需要计算一些条件概率
定义

Xi=∑j=1NXi,j
Pi,k=Xi,kXi
ratioi,j,k=Pi,kPj,k

然后我们分析这里的ratio会发现一些规律


所以我们想到,如果能够通过词向量vi,vj和vk得到相似的规律的,那么说明我们的词向量是很不错的。即我们想做的是得到函数g(),使之满足

ratioi,j,k=Pi,kPj,k=g(vi,vj,vk)

那么为了使二者尽量想近,对于损失函数,一个直观的想法就是MSE,即

(2)J=∑i,j,kN(Pi,kPj,k−g(vi,vj,vk))2

不过这里的计算复杂度是N3,过于复杂,我们需要进一步分析。我们可以开始猜想一下g(vi,vj,vk)是一个什么样的形式,因为其衡量了单词i,j之间的关系,那么我们可以猜想其中含有vi−vj,又因为其中还有对k的关系且最终是一个标量,那么我们假设其存在一个内积,即(vi−vj)Tvk
那么现在我们有

Pi,kPj,k=g(vi,vj,vk)=(vi−vj)Tvk=viTvk−vjTvk

可以看到这里我们和上面的损失函数有点类似了,但是还是缺少一个exp,我们可以加上它看看,即

Pi,kPj,k=exp⁡(viTvk−vjTvk)=exp⁡(viTvk)exp⁡(vjTvk)

可以看到,加上exp之后分子分母的形式就完全一样了,我们可以将其一起考虑,即现在只需要满足

Pi,j=exp(viTvj)

两边取对数,我们的损失函数就能够转化为

(3)J=∑i,jN(log(Pi,j)−viTvj)2

这个损失函数已经更像一些了,但是还是不太一样。这是因为我们前面是存在一点问题的。根据前面我们有

和log(Pi,j)=viTvj和log(Pj,i)=vjTvi

但是实际上,上面的式子右边是相等的,但左边并不相等(并且对于这个问题来说,我们可以想到target和context其实是可以互换的,所以存在对称),即原有的对称性不满足了。我们需要进一步处理一下。我们将上面(3)的中的条件概率log(Pi,j)展开,得到

log(Pi,j)=log(Xi,j)−log(Xi)=viTvj

这里的log(Xi)是独立于j的,所以可以被吸收进bi变为

log(Xi,j)=viTvj+bi+bj

这样代价函数就变成了

J=∑i,jN(viTvj+bi+bj−log(Xi,j))2

然后加上词频越高权重越大(共现次数很少的实际上很可能是异常值,并且共现次数少的一般来说含的信息也少)

(4)J=∑i,jNf(Xi,j)(viTvj+bi+bj−log(Xi,j))2

权重函数

f(x)={(x/xmax)0.75,if x<xmax1,if x>=xmax

引用

  1. Pennington J, Socher R, Manning C. Glove: Global vectors for word representation[C]//Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014: 1532-1543.
  2. https://blog.csdn.net/codertc/article/details/73864097

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/MrLJC/p/8732985.html

GloVe损失函数的理解相关推荐

  1. 神经网络中的激活函数与损失函数深入理解推导softmax交叉熵

    神经网络中的激活函数与损失函数&深入理解softmax交叉熵 前面在深度学习入门笔记1和深度学习入门笔记2中已经介绍了激活函数和损失函数,这里做一些补充,主要是介绍softmax交叉熵损失函数 ...

  2. 神经网络-损失函数-等高线理解

    一,等高线理解 如果一个变量 w J(w)=1m∑i(wxi−yi)2J(w) =\frac{1}{m}\sum_i(wx_i -y_i)^2 J(w)=m1​i∑​(wxi​−yi​)2 2/ 如果 ...

  3. 你对YOLOV3损失函数真的理解正确了吗?

    1. 前言 昨天行云大佬找到我提出了他关于GiantPandaCV公众号出版的<从零开始学YOLOV3>电子书中关于原版本的YOLOV3损失的一个质疑,并给出了他的理解.昨天晚上我仔细又看 ...

  4. 【深度学习】逻辑回归及其损失函数的理解

    文章目录 一.什么是二分类与逻辑回归(Logistic Regression)? 二.逻辑回归基本思路 三.定义损失函数(Loss Function) 一.什么是二分类与逻辑回归(Logistic R ...

  5. 【深度学习】生成式对抗网络的损失函数的理解

    生成式对抗网络即GAN由生成器和判别器组成.原论文中,关于生成器和判别器的损失函数是写成以下形式: 首先,第一个式子我们不看梯度符号的话即为判别器的损失函数,logD(xi)为判别器将真实数据判定为真 ...

  6. 深度学习中softmax交叉熵损失函数的理解

    1. softmax层的作用 通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点,无论在浅层神经网络还是在CNN中都是如此,比如,在AlexNet中最后的输出层有1000个节 ...

  7. 交叉熵损失函数的理解

    转载自:https://blog.csdn.net/red_stone1/article/details/80735068 交叉熵损失函数的公式: 1.交叉熵损失函数的原理 我们知道,在二分类问题模型 ...

  8. softmax交叉熵损失函数深入理解(二)

    0.前言 前期博文提到经过两步smooth化之后,我们将一个难以收敛的函数逐步改造成了softmax交叉熵损失函数,解决了原始的目标函数难以优化的问题.Softmax 交叉熵损失函数是目前最常用的分类 ...

  9. 对于DSH算法损失函数的理解

    https://www.pianshen.com/article/4022682431/

  10. bili上李沐大神的d2l中的损失函数的理解

    def loss(inputs, targets):     return F.cross_entropy(inputs, targets, reduction='none') 如果inputs时4维 ...

最新文章

  1. d010:盈数、亏数和完全数
  2. python 一些方法的时间测试
  3. 扩展筛选LightOj 1054 Efficient Pseudo Code
  4. 8个直播底层支撑的创业机会,你都抓住了吗?
  5. VA01创建SO的增强点MV45AFZZ的几点实际应用总结
  6. Java程序员面试时要注意的一些问题
  7. windows无法确定此计算机是否包含,服务器用U盘虚拟光驱装系统,有做RAID5,加载RAID驱动成功后,安装到最后会报“windows无法确定此计算机是否包含有效系统卷”错误...
  8. 【转】TCP/IP协议到底在讲什么?【乐搏TestPro】
  9. mysql数据库忘记密码时如何修改
  10. MPQ Storm库 源代码分析 一个
  11. java验证码不显示_chrome无法显示Java生成的验证码图片
  12. 官方完整HL7 ECG-XML例子及注释翻译(4)
  13. 购买《哈利波特》书籍
  14. python的拼音_python 中文分词和拼音首字母
  15. 2022-2027年中国射频电缆市场竞争态势及行业投资前景预测报告
  16. Ramnit 蠕虫分析
  17. 发现 3 个已存在的 RPM 数据库问题, 'yum check' 输出如下 解决办法
  18. 关于PDR和P2DR两个网络安全模型
  19. 地图经纬度坐标相互转换度分秒
  20. 税务UKey开票软件 V1.0.22_ZS_20221231 版本数据库分析

热门文章

  1. .NET 实现异步处理的集中方式
  2. Java 开发必备,EasyExcel 操作详解!
  3. idea 导入spring 源码 踩坑记总结整理
  4. Python 高层文件操作(shutil模块)(转载)
  5. C++11 enable_shared_from_this
  6. python 并行读取文件_python对文件进行并行计算初探(二)
  7. 操作系统真象还原_一步步编写操作系统 43 二进制程序的加载方式3
  8. jquery匹配不区分大小写_jQuery实现contains方法不区分大小写的方法教程
  9. linux把profile文件删了怎么办,误删Profile后的处理
  10. 计算机系统结构 02325_计算机系统的组成硬件系统1