自然语言处理(NLP)之近似训练法:负采样与层序Softmax

news2024/9/25 23:15:03

我们在前面介绍的跳字模型与连续词袋模型有个缺陷就是在计算梯度时的开销随着词典增大会变得很大,因为每一步的梯度计算都包含词典大小数目的项的累加。

为了降低这种带来的高计算复杂度,介绍两种近似的处理方案:负采样和层序softmax

负采样(Negative Sampling)

我们回顾下跳字模型给定中心词生成背景词的条件概率:

该条件概率相应的对数损失如下表示:

可以看到softmax运算考虑了背景词可能是词典V中的任一词,以上损失包含了词典大小数目的项的累加,复杂度大,于是出现新的方法来降低复杂度。

负采样修改了原来的目标函数,给定中心词的一个背景窗口,我们把背景词出现在该窗口当作一个事件,该事件的概率计算为:

其中的σ是sigmoid激活函数:

我们先考虑最大化文本序列中所有该事件的联合概率来训练词向量。具体来说,给定一个长度为T的文本序列,时间步t的词为且背景窗口大小为m,最大化联合概率:

然后,这里的模型中包含的事件仅考虑了正样本,这导致当所有词向量相等且值为无穷大时,上述联合概率才被最大化为1,很明显,这样的词向量毫无意义。负采样通过采样并添加负类样本使目标函数更有意义。

设背景词出现在中心词的一个背景窗口为事件P,我们根据分布P(w)采样K个未出现在该背景窗口的词,即噪声词。设噪声词(k=1,...,K)不出现在中心词的该背景窗口为事件。假设同时含有正类样本和负类样本的事件P,,...,相互独立,负采样将以上需要最大化的仅考虑正类样本的联合概率改写为:

其中条件概率被近似表示为:

设文本序列中时间步t的词在词典中的索引为,噪声词在词典中的索引为,有关以上条件概率的对数损失为:

现在的训练中每步的梯度计算开销就不再跟词典大小有关,而跟K线性相关。所以当K较小时,负采样每步的梯度计算开销较小。

最后两步的推导,使用sigmoid激活函数验证下,是等价的

import numpy as np
np.log(sigmoid(-np.array([0.2,0.4,-0.8])))
np.log(1-sigmoid(np.array([0.2,0.4,-0.8])))
#array([-0.79813887, -0.91301525, -0.37110067])

层序softmax

另一种近似训练法,就是层序softmax,使用的是二叉树这样的数据结构,树的每个叶节点代表词典V中的每个词

假设L(w)为从二叉树的根节点到词w的叶节点的路径(包括根节点和叶节点)上的结点数。设n(w,j)为该路径上第j个结点,并设该节点的背景词向量为,画图来看下:

层序softmax将跳字模型中的条件概率近似表示为:

其中leftChild(n)表示结点n是否是左子节点,如果是的话就是1,反之为-1

这里我们来计算下从给定词生成词的条件概率(方向经过左->右->左),我们需要将的词向量和根节点到路径上的非叶节点向量一一求内积。

可以得到如下公式,注意方向就是正负的区别:

由于 ,给定中心词生成词典V中任一词的条件概率之和为1这一条件也满足

此外,由于L()-1的数量级为O(),当词典V很大时,层序softmax训练中每一步的梯度计算开销相较未使用近似训练时大幅降低。

这两节主要就是公式的熟悉和推导,接下来就是实战了,感觉这个新的编辑器很好用,流畅和直观,赞一个

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/367210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PADS新建封装中焊盘部分修正

在PADS新建封装中,需要修改焊盘参数。因为之前做板,有问题工厂都会帮忙修正,所以忽略了焊盘中阻焊层和助焊层。这里专门做一个修正。进入焊盘栈编辑界面之后,需要点击“添加层”,然后选择阻焊层顶层(Solder…

以太网分析仪

以太网分析仪顾名思义,就是针对网络性能方面的网络丢包、延迟、抖动等问题进行分析哪个环节出现了问题, 这种网络测试仪,市面上的品牌还是比较多的,价格也是有高有低,那么,如何从这么多仪器仪表里面选择一款…

JS逆向之BackTest入门滑块与表单加密

声明:本文仅限学习交流使用,禁止用于非法用途、商业活动等。否则后果自负。如有侵权,请告知删除,谢谢!本教程也没有专门针对某个网站而编写,单纯的技术研究 一、本期逆向 1.网站:aHR0cDovL2JhY…

聊聊 HTAP 的前世今生

随着现代社会大型实时分析应用的逐渐流行,关系型数据库已经难以处理高并发的事务请求。商业层面上,当全球进入数字化时代,数字化技术渗透到各行各业,同时产生了海量数据,数据的存储和应用是企业决策的重要依据之一&…

计网数据链路层

第二层:数据链路层 数据链路层传输单位为帧 数据链路层三大问题:封装成帧,差错检测,可靠传输 两个协议: 共享式以太网的媒体接入控制协议CSMA/CD 802.11局域网的媒体接入控制协议CSMA/CA 在封装成帧的问题中,数据链路层…

100种思维模型之诺依曼思维模型-019

生活中,难免总会遇到一些“大”、“笼统”、“难入手”的问题! 如,前几天突然接到领导安排,帮忙梳理一个材料“***景区创建5A级旅游景区提升规划”。 对于一个没有学过景区提升规划、没有做过规划的我来说,真的挺难的…

Mysql 索引(三)—— 不同索引的创建方式(主键索引、普通索引、唯一键索引)

了解了主键索引的底层原理,主键索引其实就是根据主键字段建立相关的数据结构(B树),此后在使用主键字段作为条件查询时,会直接根据主键查找B树的叶子结点。除了主键索引外,普通索引和唯一键索引也是如此&…

URP渲染管线光照机制剖析

上一节通过剖析URP 摄像机了解摄像机的机制,本节来分析URP的光照的主要机制,并通过与内置的向前渲染管线做对比,来比较它们的与不同。 对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些…

[机器学习]XGBoost---增量学习多阶段任务学习

一 说明当我们的训练数据非常多,并且还在不断增加时,每次都用全量训练,数据过多,时间过长,此时就可以使用增量训练:用新增的数据微调校正模型。二 全量与增量的差异在使用增量训练时,最关心的问…

矩阵通高效监管企业新媒体矩阵,账号集中管理与运营数据分析

越来越多的企业在全网布局旗下账号,希望通过社媒传播矩阵,以内容连接产品与用户,达成增加销售线索或扩大品牌声量的目的。构建矩阵的优势在于,内容能多元发展,聚集不同平台流量;多种营销渠道自主掌控&#…

高并发系统设计之限流

本文已收录至Github,推荐阅读 👉 Java随想录 文章目录限流算法计数器算法滑动窗口漏桶算法令牌桶算法限流算法实现Guava RateLimiter实现限流令牌预分配预热限流Nginx 限流limit_connlimit_req黑白名单限流这篇文章来讲讲限流,在高并发系统中…

【包装工单批次编号不存在】和【MES没有样品单报工数据】

包装工单批次编号不存在 今天在做数据的时候,发现一个诡异的问题,有几个包装工单明细里没有批次编号。 我问了下假捻的同事,他们说很奇怪,有的时候有,有的时候没有。 我又咨询了供应商,供应商说不可能没有,批次编号的业务逻辑是通过物料编码+区分号+等级+包装方式 4个…

多模态机器学习入门——文献阅读(一)Multimodal Machine Learning: A Survey and Taxonomy

文章目录说明论文阅读AbstractIntroductionIntroduction总结Applications:A Historical Perspective补充与总结3 MULTIMODAL REPRESENTATIONS总结Joint Repersentations(1)总结和附加(一)Joint Repersentations(2)总结…

问题总结:Map存入的数据丢失类型任意

发现问题&#xff1a;Map存入的数据丢失类型 经常会使用 Map<String&#xff0c;Object> 来用于存储键值对的数据&#xff0c;由于我们使用 Object 类型来接收数字&#xff0c;但是有些时候会出现map并不知道我们传入的是 Long 还是 Integer 。也就是出现数据类型丢失的…

变分推断 | MATLAB实现VBMC变分贝叶斯蒙特卡洛模拟的贝叶斯推断

变分推断 | MATLAB实现变分贝叶斯蒙特卡洛模拟的贝叶斯推断 目录 变分推断 | MATLAB实现变分贝叶斯蒙特卡洛模拟的贝叶斯推断效果一览基本介绍研究内容模型描述模型设计参考资料效果一览 基本介绍 MATLAB实现变分贝叶斯蒙特卡洛模拟的贝叶斯推断。变分贝叶斯蒙特卡洛(VBMC)是…

6年测试经验老鸟:做不好自动化测试,还谈什么高薪?

提起自动化测试&#xff0c;可谓仁者见人&#xff0c;智者见智&#xff0c;心中五味杂陈啊&#xff01;你从任何一个招聘渠道来看最近两年对测试岗位的要求&#xff0c;几乎都要求会自动化测试。而不少人一直认为手工测试才是王道&#xff0c;工作中有的时候也用不到程序&#…

摆烂三年,我从普通二本到春招华为OD上岸啦

萌妹镇楼 年前拿到的意向书 答读者问 薪资情况 定级D2,13K2K,两个月年终奖&#xff0c;周六加班双倍工资&#xff0c;下个月发。每年一次加薪&#xff0c;OD转华为一次加薪。 加班强度 124晚9点&#xff0c;35晚6点&#xff0c;项目紧急的话&#xff0c;周六会安排加班 转…

依赖倒转原则和里氏代换原则详解

初学依赖倒转原则和里氏代换原则时&#xff0c;由于笔者水平有限&#xff0c;并没有看懂书上的专业术语的解释&#xff0c;经过反复摸索和学习&#xff0c;发现里氏代换原则和依赖倒转原则可以一言以蔽之&#xff1a; 里氏代换原则&#xff1a;开发时以抽象为核心&#xff0c;…

CMake常用指令

CMake常用指令一、前言二、基本指令2.1、ADD_DEFINITIONS2.&#xff12;、ADD_DEPENDENCIES2.3、ADD_TEST 与ENABLE_TESTING 指令。2.4、AUX_SOURCE_DIRECTORY2.5、CMAKE_MINIMUM_REQUIRED2.6、EXEC_PROGRAM2.7、FILE 指令2.8、INCLUDE 指令2.9、其他指令三、FIND_系列指令四、…

云计算 概念与技术

如果我倡导的计算机在未来得到使用&#xff0c;那么有一天&#xff0c;计算也可能像电话一样成为共用设施。计算机应用将成为一全新的、重要的产业的基础。 ——John McCarthy 云计算的概念 定义 Garther公司的定义 一种计算方式&#xff0c;能通过Internet技术将可扩展的和…