机器学习——CBOW负采样(纯理解)

刚从前一个坑里,勉强爬出来,又掘开另一坑
看了很多文章+B站up主。。。糊里糊涂
但是我发觉,对于不理解的东西,要多看不同up主写的知识分享
书读百遍,其意自现,我是不相信的,容易钻牛角尖
但是,可以多看看一千个哈姆雷特的想法,想法积累多了,一定有那么一刻,让人灵光乍现!!!
拍脑顿悟:原来如此!
给我顿悟的是CSDN的一篇文章Word2Vec详解-公式推导以及代码
在这里插入图片描述

CSDN啊,听大神一席话,如长夜得明灯啊!
倒不是其他的文章和up主,没有解释过负采样,但这篇能让我顿悟的点在于:前后对比
我根据它的话理解,应该就是,除了正确的待预测关键词是正样本,其他关键词都是负样本,而负采样方式,主要是对负样本里抽取一些负样本,来计算梯度,并进行反向传播的迭代

这就要拿出之前的基于矩阵的CBOW模型来对比看,在基于矩阵参数的CBOW模型中,是采用多分类的极大似然估计法,来计算一个上下文与所有关键词的关系值的softmax函数值,并同时对所有关键词的u参数向量进行迭代

假设词典D里有N个关键词,那么一个上下文就要对N个关键词进行它们的softmax值,并进行N个u向量的迭代

如果整个语料库有成千上万个上亿个上下文需要预测,那么整个训练的计算量,那可是肥肠肥肠大!

因此,为了降低训练的计算量,可以从N个关键词的计算入手,N个关键词都要计算sigmoid的概率值和迭代,难度太大,能不能只对部分的关键词进行计算和迭代呢?

在这里插入图片描述

当然可以!

因此,这就是negative sampling负采样的算法目的:在N个关键词中,只抽取部分关键词来计算和迭代!

首先讲讲抽取原理:负采样

负采样原理

负采样,就是从一堆负样本中,抽取一部分来进行训练

那么如何抽取负样本呢?

负样本抽取

一般是采取 高频词汇,抽取概率更大 的原则。

具体程序,可以另行设计,比如统计词频后,将所有关键词排列成一系列的数据范围,词频大的数据范围也比较大,词频小的数据范围也比较小(可设计程序实现)

然后通过随机数落在哪个范围,就抽取哪个词的方式,来实现抽样

负样本训练

负样本训练,是将抽取到的负样本(不正确的关键词),和上下文对应的正样本(正确的待预测关键词),一起进行计算和迭代。

首先,负样本训练,与【基于矩阵】的计算式是不一样的

【基于矩阵】的计算式,是计算一个上下文与所有关键词的关系概率,再对所有关键词的参数向量u进行迭代

在这里插入图片描述

但如果我们进行负采样后,一个上下文,就只需要跟这些负样本和它的正样本进行计算和迭代!

因此,所有的关键词累加符 Σ w ∈ D Σ_{w∈D} ΣwD,就改为正样本和负样本的关键词累加符 Σ w = w ∗ ∪ w ∈ w ~ Σ_{w=w^*∪{w∈\tilde{w}}} Σw=www~

下方的 u u u迭代不再是针对所有每一个关键词的迭代,而是抽样得到的负样本+正样本的迭代。
在这里插入图片描述

待思考的问题

负抽样,是对每一个上下文都分别进行一次负抽样吗?

这样太麻烦了,不妨直接在一次正向+反向传播中,只进行一次负抽样

因为负抽样只与关键词在语料中的词频相关,以及随机的运气,与上下文并无关系

因此,在对所有上下文进行负采样的迭代计算时,可以用同一批负样本进行计算。

至此,我觉得已经非常清晰了,并且参考了大神的word2vec中的数学原理详解
应该就是这样的!!!
负采样不是基于huffman树的hierarchicalsoftmax模型,而是基于输出层的参数是矩阵的基础CBOW模型,并对这个基础模型进行负采样的优化计算。
待我以后有空,再试着用代码试试

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

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

相关文章

前端-选中DOM定位源代码

用到的工具:react-dev-inspector 使用流程 根据react-dev-inspector文档进行配置 安装 yarn add --dev react-dev-inspector配置:在根目录下配置Inspector import { createRoot } from react-dom/client import { Inspector } from react-dev-inspe…

draw.io与项目管理——如何利用流程图工具提高项目管理效率

draw.io 是一款强大的图形绘制工具,用于创建各种类型的图表、流程图、组织结构图、网络图和平面设计等。它提供了丰富的绘图工具和预定义的图形库,使用户能够轻松创建专业水平的图形作品。 draw.io具有直观的界面和简单易用的功能,适合各种用…

oracle_19c 安装

oracle安装部署 1、安装docker,docker-compose环境。 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun curl -L "https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/b…

云计算的大模型之争,亚马逊云科技落后了?

文丨智能相对论 作者丨沈浪 “OpenAI使用了Azure的智能云服务”——在过去的半年,这几乎成为了微软智能云最好的广告词。 正所谓“水涨船高”,凭借OpenAI旗下的ChatGPT在全球范围内爆发,微软趁势拉了一波自家的云计算业务。2023年二季度&a…

linux 安装 Anaconda3

文章目录 一、下载二、安装1.使用xftp把下载包拉到服务器上2.执行安装命令3、在安装时没有自动添加环境变量,这里手动设置3.1.1通过修改~/.bashrc来配置环境变量3.1.2 重新载入配置文件3.1.3 测试 一、下载 官网下载链接 二、安装 1.使用xftp把下载包拉到服务器上…

从零开始搭建微服务(二)

忘记了软件还没有装全,今天先把所有的软件装上,nacos已经装过了我们就不在装了,剩余的软件全部都是通过docker安装,我在centos7里面 1. 安装docker 安装dockeryum -y install docker开机自启 systemctl enable docker启动dockre systemctl start docker查看docker版本 doc…

css控制卡片内部的左右布局

先放效果图 纯css样式 可以根据需求进行更改 <template> <!-- 卡片盒子 --><div class"card_box "><el-card class"box-card w400" v-for"(item,index) in cardList" :key"index"><div slot"heade…

网络工程实验记录

网络工程 show ip route show running-config 第一周 相同设备使用交叉线&#xff0c;不同设备之间使用直通线 R1能ping通10.1.1.1 R2能ping通所有的 R3能ping通172.16.1.1 即路由器只能到达自身线连接出去的&#xff0c;另一端就连接不了了。 此时给R1分配静态路由 R…

Spring Security OAuth 2.0 资源服务器— JWT

目录 一、JWT的最小依赖 二、JWT的最基本配置 1、指定授权服务器 2、初始预期&#xff08;Startup Expectations&#xff09; 3、运行时预期&#xff08;Runtime Expectations&#xff09; 三、JWT认证是如何工作的 四、直接指定授权服务器 JWK Set Uri 五、提供 audie…

kimera论文阅读

文章目录 功能构成&#xff1a;Kimera线程A. Kimera-VIO:B. Kimera-RPGO:C. Kimera-Mesher:D. Kimera-Semantics:E.调试工具 功能构成&#xff1a; Kimera包括四个关键模块: Kimera-VIO的核心是基于gtsam的VIO方法[45]&#xff0c;使用IMUpreintegration和无结构视觉因子[27]…

通达OA get_datas.php前台sql注入-可获取数据库session登入后台漏洞复现 [附POC]

文章目录 通达OA get_datas.php前台sql注入-可获取数据库session登入后台漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 通达OA get_datas.php前台sql注入-可获取数据库session登入后台漏洞复现…

YOLOv8-Cls推理详解及部署实现

目录 前言一、YOLOv8-Cls推理(Python)1. YOLOv8-Cls预测2. YOLOv8-Cls预处理3. YOLOv8-Cls推理 二、YOLOv8-Cls推理(C)1. ONNX导出2. YOLOv8-Cls预处理3. YOLOv8-Cls推理 三、YOLOv8-Cls部署1. 源码下载2. 环境配置2.1 配置CMakeLists.txt2.2 配置Makefile 3. ONNX导出4. 源码修…

【解密ChatGPT】:从过去到未来,揭示其发展与变革

&#x1f38a;专栏【ChatGPT】 &#x1f33a;每日一句&#xff1a;天行健,君子以自强不息,地势坤,君子以厚德载物 ⭐欢迎并且感谢大家指出我的问题 文章目录 一、ChatGPT的发展历程 二、ChatGPT的技术原理 三、ChatGPT的应用场景 四、ChatGPT的未来趋势 五、总结 引言:随着…

基于指数分布算法的无人机航迹规划-附代码

基于指数分布算法的无人机航迹规划 文章目录 基于指数分布算法的无人机航迹规划1.指数分布搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用指数分布算法来优化无人机航迹规划。 …

Visual Studio Code将中文写入变量时,中文老是乱码问题

对于这个问题&#xff0c;我也是弄了很久才知道&#xff0c;编码格式的问题 在此之前我们要先下载个插件 照这以上步骤&#xff0c;最后按F6运行即可&#xff0c;按F6是利用我们刚刚下载的插件进行编译&#xff0c;唯一有一点不好就是&#xff0c;用这种插件运行的话&#xff…

MCU测试科普|如何进行MCU芯片测试,具体流程是什么?

MCU芯片测试系统是一种专门用于检测MCU芯片性能和质量的综合性设备。它通常由硬件和软件两部分组成&#xff0c;硬件包括测试仪器、适配器、测试夹具等&#xff0c;用于连接被测MCU芯片和测试机&#xff0c;实现高效高精度的测试。软件部分通常包括测试程序、测试管理软件等&am…

VMware Ubuntu 共享文件夹

VMware Ubuntu 共享文件夹 flyfish 物理机配置 Network Adapter设置 此处设置为NAT Shared Folders设置 虚拟机配置 vmware-hgfsclient sudo vmhgfs-fuse .host:/ /mnt -o nonempty -o allow_other 或者 sudo vmhgfs-fuse .host:/ /mnt/ -o allow_other第一行命令是查看共…

大数据学习之一文学会Spark【Spark知识点总结】

文章目录 什么是SparkSpark的特点Spark vs HadoopSparkHadoopSpark集群安装部署Spark集群安装部署StandaloneON YARN Spark的工作原理什么是RDDRDD的特点Spark架构相关进程Spark架构原理 Spark实战&#xff1a;单词统计Scala代码开发java代码开发任务提交 Transformation与Acti…

vue基础知识十八:说说你对keep-alive的理解是什么?

一、Keep-alive 是什么 keep-alive是vue中的内置组件&#xff0c;能在组件切换过程中将状态保留在内存中&#xff0c;防止重复渲染DOM keep-alive 包裹动态组件时&#xff0c;会缓存不活动的组件实例&#xff0c;而不是销毁它们 keep-alive可以设置以下props属性&#xff1a…

nanodet训练自己的数据集、NCNN部署到Android

nanodet训练自己的数据集、NCNN部署到Android 一、介绍二、训练自己的数据集1. 运行环境2. 数据集3. 配置文件4. 训练5. 训练可视化6. 测试 三、部署到android1. 使用官方权重文件部署1.1 下载权重文件1.2 使用Android Studio部署apk 2. 部署自己的模型【暂时存在问题】2.1 生成…