GloVe损失函数的理解
简介
GloVe是一种非常简单快速的训练词向量的算法。与复杂的word2vec相比,其是一个log双线性模型,仅通过一个简单的损失函数就能够得到很好的结果。
其中,vi和vj是i和j的词向量,bi和bj是两个偏差项,f是一个权重函数,N为词汇表大小
但是这个损失函数的意义却不是很直观,这里参照一篇博客写了一下对于这个损失函数的分析
思路
Glove首先会通过设置定义的窗口大小,进行统计得到词的共现矩阵。如Xi,j表示词i和j同时出现的次数。共现矩阵是一个N×N的矩阵
然后我们需要计算一些条件概率
定义
然后我们分析这里的ratio会发现一些规律
所以我们想到,如果能够通过词向量vi,vj和vk得到相似的规律的,那么说明我们的词向量是很不错的。即我们想做的是得到函数g(),使之满足
那么为了使二者尽量想近,对于损失函数,一个直观的想法就是MSE,即
不过这里的计算复杂度是N3,过于复杂,我们需要进一步分析。我们可以开始猜想一下g(vi,vj,vk)是一个什么样的形式,因为其衡量了单词i,j之间的关系,那么我们可以猜想其中含有vi−vj,又因为其中还有对k的关系且最终是一个标量,那么我们假设其存在一个内积,即(vi−vj)Tvk
那么现在我们有
可以看到这里我们和上面的损失函数有点类似了,但是还是缺少一个exp,我们可以加上它看看,即
可以看到,加上exp之后分子分母的形式就完全一样了,我们可以将其一起考虑,即现在只需要满足
两边取对数,我们的损失函数就能够转化为
这个损失函数已经更像一些了,但是还是不太一样。这是因为我们前面是存在一点问题的。根据前面我们有
但是实际上,上面的式子右边是相等的,但左边并不相等(并且对于这个问题来说,我们可以想到target和context其实是可以互换的,所以存在对称),即原有的对称性不满足了。我们需要进一步处理一下。我们将上面(3)的中的条件概率log(Pi,j)展开,得到
这里的log(Xi)是独立于j的,所以可以被吸收进bi变为
这样代价函数就变成了
然后加上词频越高权重越大(共现次数很少的实际上很可能是异常值,并且共现次数少的一般来说含的信息也少)
权重函数
引用
- 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.
- https://blog.csdn.net/codertc/article/details/73864097
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
转载于:https://www.cnblogs.com/MrLJC/p/8732985.html
GloVe损失函数的理解相关推荐
- 神经网络中的激活函数与损失函数深入理解推导softmax交叉熵
神经网络中的激活函数与损失函数&深入理解softmax交叉熵 前面在深度学习入门笔记1和深度学习入门笔记2中已经介绍了激活函数和损失函数,这里做一些补充,主要是介绍softmax交叉熵损失函数 ...
- 神经网络-损失函数-等高线理解
一,等高线理解 如果一个变量 w J(w)=1m∑i(wxi−yi)2J(w) =\frac{1}{m}\sum_i(wx_i -y_i)^2 J(w)=m1i∑(wxi−yi)2 2/ 如果 ...
- 你对YOLOV3损失函数真的理解正确了吗?
1. 前言 昨天行云大佬找到我提出了他关于GiantPandaCV公众号出版的<从零开始学YOLOV3>电子书中关于原版本的YOLOV3损失的一个质疑,并给出了他的理解.昨天晚上我仔细又看 ...
- 【深度学习】逻辑回归及其损失函数的理解
文章目录 一.什么是二分类与逻辑回归(Logistic Regression)? 二.逻辑回归基本思路 三.定义损失函数(Loss Function) 一.什么是二分类与逻辑回归(Logistic R ...
- 【深度学习】生成式对抗网络的损失函数的理解
生成式对抗网络即GAN由生成器和判别器组成.原论文中,关于生成器和判别器的损失函数是写成以下形式: 首先,第一个式子我们不看梯度符号的话即为判别器的损失函数,logD(xi)为判别器将真实数据判定为真 ...
- 深度学习中softmax交叉熵损失函数的理解
1. softmax层的作用 通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点,无论在浅层神经网络还是在CNN中都是如此,比如,在AlexNet中最后的输出层有1000个节 ...
- 交叉熵损失函数的理解
转载自:https://blog.csdn.net/red_stone1/article/details/80735068 交叉熵损失函数的公式: 1.交叉熵损失函数的原理 我们知道,在二分类问题模型 ...
- softmax交叉熵损失函数深入理解(二)
0.前言 前期博文提到经过两步smooth化之后,我们将一个难以收敛的函数逐步改造成了softmax交叉熵损失函数,解决了原始的目标函数难以优化的问题.Softmax 交叉熵损失函数是目前最常用的分类 ...
- 对于DSH算法损失函数的理解
https://www.pianshen.com/article/4022682431/
- bili上李沐大神的d2l中的损失函数的理解
def loss(inputs, targets): return F.cross_entropy(inputs, targets, reduction='none') 如果inputs时4维 ...
最新文章
- d010:盈数、亏数和完全数
- python 一些方法的时间测试
- 扩展筛选LightOj 1054 Efficient Pseudo Code
- 8个直播底层支撑的创业机会,你都抓住了吗?
- VA01创建SO的增强点MV45AFZZ的几点实际应用总结
- Java程序员面试时要注意的一些问题
- windows无法确定此计算机是否包含,服务器用U盘虚拟光驱装系统,有做RAID5,加载RAID驱动成功后,安装到最后会报“windows无法确定此计算机是否包含有效系统卷”错误...
- 【转】TCP/IP协议到底在讲什么?【乐搏TestPro】
- mysql数据库忘记密码时如何修改
- MPQ Storm库 源代码分析 一个
- java验证码不显示_chrome无法显示Java生成的验证码图片
- 官方完整HL7 ECG-XML例子及注释翻译(4)
- 购买《哈利波特》书籍
- python的拼音_python 中文分词和拼音首字母
- 2022-2027年中国射频电缆市场竞争态势及行业投资前景预测报告
- Ramnit 蠕虫分析
- 发现 3 个已存在的 RPM 数据库问题, 'yum check' 输出如下 解决办法
- 关于PDR和P2DR两个网络安全模型
- 地图经纬度坐标相互转换度分秒
- 税务UKey开票软件 V1.0.22_ZS_20221231 版本数据库分析
热门文章
- .NET 实现异步处理的集中方式
- Java 开发必备,EasyExcel 操作详解!
- idea 导入spring 源码 踩坑记总结整理
- Python 高层文件操作(shutil模块)(转载)
- C++11 enable_shared_from_this
- python 并行读取文件_python对文件进行并行计算初探(二)
- 操作系统真象还原_一步步编写操作系统 43 二进制程序的加载方式3
- jquery匹配不区分大小写_jQuery实现contains方法不区分大小写的方法教程
- linux把profile文件删了怎么办,误删Profile后的处理
- 计算机系统结构 02325_计算机系统的组成硬件系统1