1.4 Word2Vec是如何工作的? Word2Vec与LDA 的区别和联系?

news2024/10/22 15:22:59

1.4 Word2Vec:词嵌入模型之一

场景描述

谷歌2013年提出的Word2Vec是目前最常用的词嵌入模型之一

Word2Vec实际是一种浅层的神经网络模型,它有两种网络结构,分别是CBOW(Continues Bag of Words)和Skip-gram。

在这里插入图片描述

知识点

  • Word2Vec,
  • 隐狄利克雷模型(LDA),
  • CBOW,
  • Skip-gram

问题1:Word2Vec是如何工作的?

CBOW的目标是根据上下文出现的词语来预测当前词的生成概率,如图1.3(a)所示;

而Skip-gram是根据当前词来预测上下文中各词的生成概率,如图1.3(b)所示。

其中w(t)是当前所关注的词,w(t-2)、w(t-1)、w(t+1)、w(t+2)是上下文中出现的词。这里前后滑动窗口大小均设为2。
CBOW和Skip-gram都可以表示成由**输入层(Input)、映射层(Projection)和输出层(Output)**组成的神经网络。

  • 输入层中的每个词由独热编码方式表示,即所有词均表示成一个N维向量,其中N为词汇表中单词的总数。在向量中,每个词都将与之对应的维度置为1,其余维度的值均设为0。

  • 映射层(又称隐含层)中,K个隐含单元(Hidden Units)的取值可以由N维输入向量以及连接输入和隐含单元之间的N×K维权重矩阵计算得到。在CBOW中,还需要将各个输入词所计算出的隐含单元求和。

  • 同理,输出层向量的值可以通过隐含层向量(K维),以及连接隐含层和输出层之间的K×N维权重矩阵计算得到。输出层也是一个N维向量,每维与词汇表中的一个单词相对应。最后,对输出层向量应用Softmax激活函数,可以计算出每个单词的生成概率。Softmax激活函数的定义为(式1.7)

其中x代表N维的原始输出向量,xn为在原始输出向量中,与单词wn所对应维度的取值。

训练权重接下来的任务就是训练神经网络的权重,使得语料库中所有单词的整体生成概率最大化。

具体做法:从输入层到隐含层需要一个维度为N×K的权重矩阵,从隐含层到输出层又需要一个维度为K×N的权重矩阵,学习权重可以用反向传播算法实现,每次迭代时将权重沿梯度更优的方向进行一小步更新。

问题:但是由于Softmax激活函数中存在归一化项的缘故,推导出来的迭代公式需要对词汇表中的所有单词进行遍历,使得每次迭代过程非常缓慢。

解决:由此产生了Hierarchical Softmax和NegativeSampling两种改进方法,有兴趣的读者可以参考Word2Vec 的原论文[3]。训练得到维度为N×K和K×N的两个权重矩阵之后,可以选择其中一个作为N个词的K维向量表示。

[3] Mikolo v T,Chen K,Corrado G,et al.Efficient estimation of word representations invector space[J].Computer Science,2013.

问题2:Word2Vec与LDA 的区别和联系?

  • LDA 是利用文档中单词的共现关系来对单词按主题聚类,也可以理解为对“文档-单词”矩阵进行分解,得到“文档﹣主题”和“主题﹣单词”两个概率分布。
  • 而Word2Vec其实是对“上下文-单词”矩阵进行学习,其中上下文由周围的几个单词组成,由此得到的词向量表示更多地融入了上下文共现的特征。也就是说,如果两个单词所对应的Word2Vec向量相似度较高,那么它们很可能经常在同样的上下文中出现。

需要说明的是,上述分析的是LDA 与Word2Vec的不同,不应该作为主题模型和词嵌入两类方法的主要差异。

  • 主题模型通过一定的结构调整可以基于“上下文-单词”矩阵进行主题推理。
  • 同样地,词嵌入方法也可以根据“文档-单词”矩阵学习出词的隐含向量表示。

主题模型词嵌入两类方法最大的不同其实在于模型本身

  • 主题模型是一种基于概率图模型的生成式模型,其似然函数可以写成若干条件概率连乘的形式,其中包括需要推测的隐含变量(即主题);
  • 而词嵌入模型一般表达为神经网络的形式,似然函数定义在网络的输出之上,需要通过学习网络的权重以得到单词的稠密向量表示。

参考文献:

《百面机器学习》 诸葛越主编

出版社:人民邮电出版社(北京)

ISBN:978-7-115-48736-0

2022年8月第1版(2022年1月北京第19次印刷)

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

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

相关文章

nginx部署前端工程替代方案gateway

nginx部署前端工程替代方案gateway 有市场要求部署的前端vue工程不使用nginx中间件。想弄国产替代的东方通之类的,公司没有购买该产品,我参考了网上的一些java网关框架,springcloud组件:gateway实现代替。 注意后台都是用java编…

网络安全-appcms-master

一、环境 gethub上面自己找appcms-master 二、分析一下源码以及闯关思路 首先是有一个函数循环以及函数过滤,我们的post会将我们所传的所有val值去进行一个循环,之后通过htmlspecialchars这个函数进行过滤和转换所以val值不能通过单双引号闭合注入的方…

微信私域运营时如何有效降本增效?

在如今这个以流量为王的时代,成功地将流量转化为商业价值显得尤为重要。许多企业选择将流量转移到微信的私域流量中,以提高转化率和营销效果。 但是由于微信平台的限制,比如一台设备在正常情况下只能登录一个账号,无法实现聚合管理…

Pytorch从零开始实战20

Pytorch从零开始实战——指定生成手势图像 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——指定生成手势图像环境准备模型选择模型训练可视化分析生成指定图像总结 环境准备 本文基于Jupyter notebook,使用Python3.8&#xff0c…

✅图片上传组件使用

简述 图片压缩、图片预览、图片多图上传、默认高清压缩 前情提示 暂仅支持:bmp, gif, jpg, jpeg, png格式,暂不支持svg、webp等格式【升级后支持】 一只哈基米~~ 截图 使用方式(主打一个代码可直接复制) 单张图:缩略图、头像、营业执照 <a-form-model-item label=…

如何将中科方德桌面操作系统加入Windows域

往期文章&#xff1a;自定义SSH客户端连接时的显示信息 | 统信UOS | 麒麟KYLINOS Hello&#xff0c;大家好啊&#xff0c;今天我非常高兴地给大家带来一篇关于如何将中科方德桌面操作系统加入Windows域的教程文章。对于使用中科方德桌面操作系统的用户来说&#xff0c;将其加入…

运算符重载(Operator Overloading)

定义 在C中&#xff0c;运算符重载&#xff08;Operator Overloading&#xff09;是一种允许程序员为自定义数据类型重新定义或重载已有的运算符的功能。通过运算符重载&#xff0c;我们可以使得自定义类型的对象能够像内置类型&#xff08;如int、float等&#xff09;一样使用…

基于iOS真机的Appium自动化测试

必要条件 XCode > 6.0, 7.1.1&#xff08;注意Appium并不一定支持最新版本的Xcode&#xff09;Mac OS X 10.10 or 更高, 建议使用10.11.1 Xcode 安装 APP Store安装 注意事项&#xff1a; Xcode 安装包很大&#xff08;5G左右&#xff09;&#xff0c;Xcode移动到应用程序…

响应式编程五股票订阅系统实现

响应式编程五 使用StepVerifier测试响应式流StepVerifier要点 使用StepVerifier进行高级测试股票订阅系统数据库表 使用StepVerifier测试响应式流 出于测试目的&#xff0c;Reactor 提供了额外的 reactor-test 模块&#xff0c;该模块提供了 StepVerifier。StepVerifier 提供了…

Android 13 WMS-动画流程

动画的类型如下 IntDef(flag true, prefix { "ANIMATION_TYPE_" }, value {ANIMATION_TYPE_NONE,ANIMATION_TYPE_APP_TRANSITION,ANIMATION_TYPE_SCREEN_ROTATION,ANIMATION_TYPE_DIMMER,ANIMATION_TYPE_RECENTS,ANIMATION_TYPE_WINDOW_ANIMATION,ANIMATION_TYPE_…

以人为本的AI技术升级

我们需要以人为本的技术来提高生产力和投资回报率。 通过在数据标注流程中融合机器学习辅助技术&#xff0c;可以减少数据标注所需的时间、资金和人力。 有很多方法可以防止标注员被模型的预测误导。 在传统的机器学习&#xff08;Machine Learning&#xff09;方法下&#…

一篇长文教你进行全方位的使用appium【建议收藏】

随着移动应用的日益普及&#xff0c;移动应用的测试成为了软件开发的重要组成部分。Python&#xff0c;作为一种易于学习&#xff0c;功能强大的编程语言&#xff0c;特别适合进行这种测试。本文将详细介绍如何使用Python进行APP测试&#xff0c;并附带一个实例。 Python 和 A…

Docker快速入门和部署项目

1&#xff0c;Docker是一个&#xff0c;快速构建、运行、管理应用的工具 。 2&#xff0c;前面我们了解过在Linux操作系统的常见的命令以及如何在Linux中部署一个人单体的项目。感受如何呢&#xff1f;&#xff1f;&#xff1f; 命令太多了&#xff0c;记不住 软件安装包名字复…

网络学习:数据的封装与解封装

目录 一、数据的封装与解封装 1. 数据的封装过程 2. 数据的解封装过程 二、数据的传输过程 1. 相关概念 2. 网络传输过程中数据封装和解封装模拟 一、数据的封装与解封装 1. 数据的封装过程 数据封装过程&#xff0c;在这里我们举例说明&#xff0c;以两台主机的通信为…

【docker基础学习之】镜像构建

下面是在工作过遇到的一些实际例子&#xff0c;谨以此作为笔记参考 目录 1.背景2. 寻找方案3. 如何解决4.解决步骤4.1 DockerFile4.2 现在要做的 5. 镜像相关命令 1.背景 部署&#xff08;迁移&#xff09;项目时发现&#xff0c;项目的excel导出功能报错&#xff0c;错误如下…

ChatGPT数据分析应用——同期群分析

ChatGPT数据分析应用——同期群分析 ​ 同期群分析在一定程度上属于分组分析的一个变种。顾名思义&#xff0c;同期群就是相同时期的群体&#xff0c;同期群分析就是针对相同时期的群体展开分析。接下来我们让ChatGPT解释这个方法的概念并提供相应的案例。发送如下内容给ChatG…

chrome插件webRequest拦截请求并获取post请求体requestBody数据raw内容,解决中文乱码问题

详细使用说明可以看官方文档&#xff1a;https://developer.chrome.com/docs/extensions/reference/api/webRequest?hlzh-cn 拦截操作 想要通过浏览器插件拦截请求的话&#xff0c;需要在manifest.json里面添加webRequet权限&#xff1a; 拦截请求代码放在background.js里面…

力扣--从前序与中序遍历序列构造二叉树

题目&#xff1a; 思想&#xff1a; 首先先序遍历能确定根节点的值&#xff0c;此时查看该值在中序遍历中的位置&#xff08;如果索引为i&#xff09;&#xff0c;那么i左侧为左子树&#xff0c;i 右侧为右子树。从中序数组中即可看出左子树结点个数为 i&#xff0c;右子树节点…

王道机试C++第 3 章 排序与查找:排序问题 Day28(含二分查找)

查找 查找是另一类必须掌握的基础算法&#xff0c;它不仅会在机试中直接考查&#xff0c;而且是其他某些算法的基础。之所以将查找和排序放在一起讲&#xff0c;是因为二者有较强的联系。排序的重要意义之一便是帮助人们更加方便地进行查找。如果不对数据进行排序&#xff0c;…

ACM题解Day10|总结篇|进制转化,GCD ,LCM ,二分答案

&#x1f525;博客介绍&#xff1a; 27dCnc [Cstring中find_first_not_of()函数和find_last_not_of()函数-CSDN博客] 方差,期望 概率 今日打卡: 算法周总结 ACM题解Day3| To Crash or not To Crash,Integer Prefix ,I don’t want to pay for the Late Jar-CSDN博客 第3题:…