Word2Vec中的CBOW模型训练原理详细解析

Word2Vec中的CBOW模型训练原理详细解析

1. CBOW模型概述

CBOW模型的训练目标是利用一个单词周围的上下文单词来预测该单词本身。具体来说,给定当前单词的上下文单词,通过训练神经网络来最大化当前单词出现在这些上下文单词中的概率。

2. 模型结构

CBOW模型的结构如下:

  • 输入层:输入为上下文单词的one-hot编码表示。
  • 隐藏层:对输入的上下文单词向量进行平均,得到上下文向量。
  • 输出层:通过一个 softmax 层预测当前单词的概率分布。

3. 符号定义

假设有一个词汇表,大小为 V V V,表示为 W = { w 1 , w 2 , . . . , w V } W = \{w_1, w_2, ..., w_V\} W={w1,w2,...,wV}。对于每个单词 w i w_i wi,定义以下符号:

  • x ( i ) x^{(i)} x(i): 输入的one-hot编码向量,维度为 V × 1 V \times 1 V×1,仅在第 i i i 个位置为1,其余为0。
  • v i v_i vi: 输入词向量,维度为 N × 1 N \times 1 N×1,即嵌入层的参数。
  • u i u_i ui: 输出词向量,维度为 N × 1 N \times 1 N×1,即 softmax 层的参数。

4. 模型训练流程

假设当前单词为 w o w_o wo,其上下文窗口大小为 C C C,则上下文单词序列为 w o − C , w o − C + 1 , . . . , w o − 1 , w o + 1 , . . . , w o + C w_{o-C}, w_{o-C+1}, ..., w_{o-1}, w_{o+1}, ..., w_{o+C} woC,woC+1,...,wo1,wo+1,...,wo+C

4.1 输入表示

将上下文单词的one-hot编码向量拼接起来,表示为:

X = [ x ( o − C ) , x ( o − C + 1 ) , . . . , x ( o − 1 ) , x ( o + 1 ) , . . . , x ( o + C ) ] X = [x^{(o-C)}, x^{(o-C+1)}, ..., x^{(o-1)}, x^{(o+1)}, ..., x^{(o+C)}] X=[x(oC),x(oC+1),...,x(o1),x(o+1),...,x(o+C)]

4.2 隐藏层表示

CBOW模型对上下文单词的向量表示进行平均,得到上下文向量 h h h

h = 1 2 C ∑ c = 1 C ( v o − c + v o + c ) h = \frac{1}{2C} \sum_{c=1}^{C} (v_{o-c} + v_{o+c}) h=2C1c=1C(voc+vo+c)

其中, v o − c v_{o-c} voc v o + c v_{o+c} vo+c 分别表示上下文单词 w o − c w_{o-c} woc w o + c w_{o+c} wo+c 的输入词向量。

4.3 输出层表示

通过 softmax 层计算当前单词 w o w_o wo 出现的概率:

P ( w o ∣ c o n t e x t ) = exp ⁡ ( u o T h ) ∑ k = 1 V exp ⁡ ( u k T h ) P(w_o | context) = \frac{\exp(u_o^T h)}{\sum_{k=1}^{V} \exp(u_k^T h)} P(wocontext)=k=1Vexp(ukTh)exp(uoTh)

其中, u o u_o uo 为当前单词 w o w_o wo 的输出词向量。

4.4 损失函数

定义损失函数为负对数似然函数:

L = − log ⁡ P ( w o ∣ c o n t e x t ) = − u o T h + log ⁡ ∑ k = 1 V exp ⁡ ( u k T h ) L = -\log P(w_o | context) = -u_o^T h + \log \sum_{k=1}^{V} \exp(u_k^T h) L=logP(wocontext)=uoTh+logk=1Vexp(ukTh)

目标是通过梯度下降算法最小化损失函数 L L L

5. 模型训练

通过反向传播算法计算损失函数 L L L 对模型参数 v i v_i vi u i u_i ui 的梯度,并更新参数:

v i ← v i − η ∂ L ∂ v i v_i \leftarrow v_i - \eta \frac{\partial L}{\partial v_i} viviηviL

u i ← u i − η ∂ L ∂ u i u_i \leftarrow u_i - \eta \frac{\partial L}{\partial u_i} uiuiηuiL

其中, η \eta η 为学习率。

5.1 梯度计算

首先计算输出层的梯度:

∂ L ∂ u o = h − x o \frac{\partial L}{\partial u_o} = h - x_o uoL=hxo

∂ L ∂ u k = h ⋅ exp ⁡ ( u k T h ) ∑ j = 1 V exp ⁡ ( u j T h ) ( k ≠ o ) \frac{\partial L}{\partial u_k} = h \cdot \frac{\exp(u_k^T h)}{\sum_{j=1}^{V} \exp(u_j^T h)} \quad (k \neq o) ukL=hj=1Vexp(ujTh)exp(ukTh)(k=o)

其中, x o x_o xo 为当前单词 w o w_o wo 的one-hot编码向量。

然后计算隐藏层的梯度:

∂ L ∂ h = ∑ k = 1 V u k ⋅ ∂ L ∂ u k \frac{\partial L}{\partial h} = \sum_{k=1}^{V} u_k \cdot \frac{\partial L}{\partial u_k} hL=k=1VukukL

最后计算输入层的梯度:

∂ L ∂ v i = 1 2 C ⋅ ∂ L ∂ h ( i = o − C , o − C + 1 , . . . , o − 1 , o + 1 , . . . , o + C ) \frac{\partial L}{\partial v_i} = \frac{1}{2C} \cdot \frac{\partial L}{\partial h} \quad (i = o-C, o-C+1, ..., o-1, o+1, ..., o+C) viL=2C1hL(i=oC,oC+1,...,o1,o+1,...,o+C)

6. 词向量获取

训练完成后,输入词向量 v i v_i vi 即为单词 w i w_i wi 的分布式表示。

7.总结

总而言之,CBOW是采取拿多个训练一个的思想。比如,现在有一串文本text = “abcdeadebcdae…”,统计出里面只有[a,b,c,d,e]这五个独一无二的‘字’。想要训练‘字’与‘字’之间的关联(比如“吃”和“饭”这两个词有关联,有时“睡觉”和“午休”这两个词可以相近表示,想要实现这个,就可以使用CBOW方法来实现。)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio打包APK

1.导出APK安装包 如果是首次打包,Create new 单击蓝色对话框右边文件夹📂图标 ,选择密钥保存路径,然后在下方File name对话框中填写您想要名称,再点击OK回到密钥创建对话框。 在此对话框中填写密码(Passwo…

MySql字段的值是以逗号隔开的另一个表的主键关联查询

查询sql SELECT s.student_id, s.name, c.name as course_name FROM student s INNER JOIN course c ON FIND_IN_SET(c.course_id, s.course_id) > 0 WHERE 1 1;相似sql -- 翻译(需要带条件,可用于字典翻译,但条件需要注意唯一性&#…

windows git bash 使用zsh 并集成 oh my zsh

参考了 这篇文章 进行配置,记录了自己的踩坑过程,并增加了 zsh-autosuggestions 插件的集成。 主要步骤: 1. git bash 这个就不说了,自己去网上下,windows 使用git时候 命令行基本都有它。 主要也是用它不方便&…

QD Laser携“Lantana”激光器参展SPIE光子学西部展2025,聚焦紧凑型设计

据悉,QD Laser公司将在2025年SPIE光子学西部展览会上展出其最新产品——世界最小一体化紧凑型可见光激光器“Lantana”。该展会将于1月28日至30日在旧金山的Moscone中心举行。 在展会期间,QD Laser公司将现场展示这款超小型、轻便设备—— “Lantana”。…

Ubuntu 22.04 TLS 忘记root密码,重启修改的解决办法

1.想办法进入这个界面,我这里是BIOS引导的是按Esc按一下就行,UEFI的貌似是按Shift不得而知,没操作过。下移到Advanced options for Ubuntu,按enter 2.根据使用的内核版本,选择带「recovery mode」字样的内核版本&#…

Proteus-8086调试汇编格式的一点心得

这阵子开始做汇编的微机实验(微机原理与接口技术题解及实验指导,吴宁版本13章),中间出了挺多问题,解决后记录下。 先上电路图 用子电路来仿真发现仿真的时候子电路这块根本没有高低电平输出,只好把子电路拿…

外部flash烧写算法学习笔记(一)

一,STM32CubeProgrammer STM32下载编程工具 | STM32CubeProg介绍、下载、安装和使用教程 - 知乎 1.使用速览 2.外部烧写 二,QSPI外部烧写算法制作 STM32H7的花式玩转SPI Flash章节也更新了,含MDK下载算法制作和STM32CubeProg下载算法制作 …

在centos上编译安装opensips【初级-默认安装】

环境:centos9 last opensips3.2 dnf update -y dnf install -y gcc make git automake libtool pcre-devel libxml2-devel \libcurl-devel postgresql-devel \bzip2-devel zlib-devel ncurses-devel libuuid-devel \libpcap-devel # 有报错的直接删除cd /usr/lo…

【Prometheus】PromQL进阶用法

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Fabric区块链网络搭建:保姆级图文详解

目录 前言1、项目环境部署1.1 基础开发环境1.2 网络部署 2、后台环境2.1、环境配置2.2、运行springboot项目 3、PC端3.1、安装依赖3.2、修改区块链网络连接地址3.3、启动项目 前言 亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加…

【SpringCloud】黑马微服务学习笔记

目录 1. 关于微服务 ?1.1 微服务与单体架构的区别 ?1.2 SpringCloud 技术 2. 学习前准备 ?2.1 环境搭建 ?2.2 熟悉项目 3. 正式拆分 ?3.1 拆分商品功能模块 ?3.2 拆分购物车功能模块 4. 服务调用 ?4.1 介绍 ?4.2 RustTemplate?的使用 4.3 服务治理-注册中…

RabbitMQ1-消息队列

目录 MQ的相关概念 什么是MQ 为什么要用MQ MQ的分类 MQ的选择 RabbitMQ RabbitMQ的概念 四大核心概念 RabbitMQ的核心部分 各个名词介绍 MQ的相关概念 什么是MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出&am…

鸿蒙参考文档和问题记录

本文用于记录鸿蒙使用过程中的问题和相关参考文档 问题记录 1. 兼容性测试套件问题 ActsStartAbilityForResultNoTargetBundleListStageTest套件测试失败:模块FreeInstall 技术资料 1. HarmonyOS应用如何打包HAP并安装到真机 HarmonyOS应用如何打包HAP并安装到真…

虚幻基础-1:cpu挑选(14600kf)

能帮到你的话,就给个赞吧 😘 文章目录 ue非常吃cpu拉满主频打开项目编写蓝图运行原因 时间长 关于压力测试 本文以14600kf为例,双12购入,7月份产。 ue非常吃cpu 经本人测试,ue是非常吃cpu的。 拉满主频 无论任何时间…

css动画水球图

由于echarts水球图动画会导致ios卡顿&#xff0c;所以纯css模拟 展示效果 组件 <template><div class"water-box"><div class"water"><div class"progress" :style"{ --newProgress: newProgress % }"><…

基于 Spring Boot 和 Vue.js 的全栈购物平台开发实践

在现代 Web 开发中&#xff0c;前后端分离的架构已经成为主流。本文将分享如何使用 Spring Boot 和 Vue.js构建一个全栈购物平台&#xff0c;涵盖从后端 API 开发到前端页面实现的完整流程。 1. 技术栈介绍 后端技术栈 JDK 1.8&#xff1a;稳定且广泛使用的 Java 版本。 Spring…

nginx离线安装部署详解(附一键启动 环境变量)

学习nginx的过程中 看了许多帖子 但是都没有全套的部署 所以想自己写一篇帖子 正好也可以给后续想要学习nginx的人参考一下 当时在学习的时候总是在想 为什么要学习离线安装 这玩意不是一个dnf命令不就完事了吗 在后续的学习中才发现 原来在实际环境中许多机器都是离线…

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(一)

Understanding Diffusion Models: A Unified Perspective&#xff08;一&#xff09; 文章概括引言&#xff1a;生成模型背景&#xff1a;ELBO、VAE 和分层 VAE证据下界&#xff08;Evidence Lower Bound&#xff09;变分自编码器 &#xff08;Variational Autoencoders&#x…

Biotin sulfo-N-hydroxysuccinimide ester ;生物素磺基-N-羟基琥珀酰亚胺酯;生物素衍生物;190598-55-1

一、生物素及其衍生物的概述 生物素衍生物是指在生物素&#xff08;Vitamin H或B7&#xff09;分子基础上进行化学修饰得到的衍生化合物。这些衍生化合物在生物医学研究、临床诊断和药物开发等领域有着广泛的应用。 生物素&#xff08;Biotin&#xff09;是一种水溶性维生素&a…

Freemarker模板引擎技术

【问题】当渲染文章数据时&#xff0c;由于文章的数据很多&#xff0c;直接去查询文章内容表的话&#xff0c;效率比较低。 【解决】使用freemarker将文章的内容通过模板技术生成静态的html文件存储到minio中&#xff0c;这样用户就只需要拿着minio的url去minio里获取静态页面即…