深度学习:词嵌入embedding和Word2Vec模型

news2024/12/24 18:25:07

目录

前言

一、词嵌入(Embedding)

1.传统自然语言处理问题

2.什么是词嵌入

3.主要特点

二、Word2vec模型

1.连续词袋模型(CBOW)

2.跳字模型(Skip-gram)

三、CBOW模型训练过程


前言

        在机器学习里的自然语言处理,是将语料库中的词语转换成词向量矩阵,再使用朴素贝叶斯算法对其进行预测。这篇文章要讲的是深度学习里关于自然语言处理的一些概念

 

一、词嵌入(Embedding)

1.传统自然语言处理问题

  • 早期的模型没有考虑到词序和上下文关系,使得模型无法捕捉句子中词之间更复杂的语义联系
  • 某些传统算法可能需要大量的计算和存储资源,影响其可扩展性

例如:

  1. 一个语料库4960个词语
  2. 每个词语的独热编码都是4959个0和1个1按顺序组成
  3. 第一个词语就是[000000...0001],第二个[0000...0010],依此类推
  4. 将其转换成词向量矩阵就是(4960*4960)
  5. 每一行数据就是一个词
  6. 如果语料库很大,那么就会出现维度灾难
  7. 使用词嵌入解决这种情况

 

2.什么是词嵌入

  • 词嵌入(Word Embedding)是一种将词语转换为固定长度的向量表示的技术。这种表示方式能够捕捉词语之间的语义关系和上下文信息,使得计算机能够更好地理解自然语言。
  • 例如将一个词向量为(1*4960)的词语乘以一个(4960*300)的矩阵,将其变成(1*300)的词向量矩阵,从而达到降维的目的,解决了维度灾难。
  • Word2vec模型就是一种词嵌入方法

 

3.主要特点

  1. 低维表示:词嵌入将高维的词汇表转换为固定长度的稠密向量,通常在几十到几百维之间。
  2. 语义相似性:在嵌入空间中,语义相近的词会被映射到相近的向量位置。例如,“king”和“queen”会在向量空间中距离较近。
  3. 捕捉上下文:词嵌入能够通过上下文信息捕捉词的多义性和用法变化。

 

二、Word2vec模型

  • Word2Vec是由Google的研究团队提出的一种用于词嵌入的模型,旨在将单词转换为向量,以便于计算机理解和处理自然语言。
  • 它能够捕捉词与词之间的语义关系,并在许多自然语言处理任务中得到了广泛应用。

 

1.连续词袋模型(CBOW)

  1. 目标是在给定上下文(周围词)的情况下预测中心词。
  2. 例如,在句子“我喜欢学习”中,如果上下文是“我”和“学习”,模型的目标是预测“喜欢”。
  3. 即输入“我”和“学习”的独热编码,预测“喜欢”的独热编码

 

2.跳字模型(Skip-gram)

  1. 目标是根据中心词预测其上下文。
  2. 例如,在句子“我喜欢学习”中,如果中心词是“喜欢”,模型的目标是预测“我”和“学习”。
  3. 输入“喜欢”的独热编码,预测“我”和“学习”的独热编码

 

三、CBOW模型训练过程

  1. 当前词的上下文词语的one-hot编码输入到输入层。
  2. 这些词分别乘以同一个矩阵W(V*N)后分别得到各自的1*N 向量。
  3. 将多个这些1*N 向量取平均为一个1*N 向量。
  4. 将这个1*N 向量乘矩阵 W'(N*V) ,变成一个1*V 向量。
  5. 将1*V 向量softmax归一化后输出取每个词的概率向量1*V
  6. 概率值最大的数对应的词作为预测词
  7. 将预测的结果1*V 向量和真实标签1*V 向量(真实标签中的V个值中有一个是1,其他是0)计算误差
  8. 在每次向前传播之后反向传播误差,不断调整 W(V*N)和 W'(N*V)矩阵的值。

 

拿一个词语为4960个的语料库来举例,使用CBOW模型完成词嵌入:

  1. 假设选取上下各选两个词语,输入层每一个神经元接收一个词语的独热编码,然后将其乘以第一个权重w1(4960*300)的矩阵,将结果(1*300)的矩阵传入中间层
  2. 中间层将输入层传入的四个结果组合成一个(4*300)的矩阵,然后再对每一列进行求和得到(1*300)的矩阵,将该矩阵传入输出层
  3. 输出层接收到中间层传入的(1*300)的矩阵,将其乘以第二个权重w2(300*4960)的矩阵,得到(1*4960)的矩阵,每一列就是每个词语的预测结果
  4. 对矩阵进行归一化,得到的每一列都是一个词语的概率值
  5. 概率值最大的即为预测词
  6. 然后将该词的预测结果与真实标签进行误差计算
  7. 在每次向前传播之后反向传播误差,不断调整w1和w2的值

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

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

相关文章

包材推荐中的算法应用|得物技术

目录 一、业务背景 二、算法架构 规则算法 三、算法原理 装箱装袋 四、衍生应用 切箱合包箱型设计包装方案推荐 五、作者结语 一、业务背景 任何一家电商的商品出库场景中,都涉及到打包——即把订单中的商品用包材进行包裹,常见的打包方式有装袋和装箱。…

Lazada该怎么直播?开播需要有哪些条件?

随着电商平台的快速发展,直播电商已成为一种重要的销售和营销手段。作为东南亚领先的电商平台之一,Lazada也提供了直播功能——LazLive,使商家和品牌能够通过直播与消费者进行实时互动,推广产品并提升销量。要在Lazada上顺利进行直…

bmp格式如何转换成jpg?5个软件帮助你快速转换文件格式

bmp格式如何转换成jpg?5个软件帮助你快速转换文件格式 将BMP格式转换为JPG格式是许多人在处理图片文件时常遇到的需求。BMP是一种无压缩的图像格式,占用空间较大,而JPG是一种有压缩的图片格式,能大幅减少文件大小,更适…

链表的回顾与总结(一)正序、逆序、有序、插入、修改、删除

逆序链表 #include<iostream> using namespace std; struct node {int data;node* next; };//最好不要全局定义指针&#xff0c;很麻烦 void show(node* head) {while (head){cout << head->data << ;head head->next;} } int main() {int i, j, k…

链表的回顾与总结(二)有序链表合并、约瑟夫问题

两个有序链表的合并 #include<iostream> using namespace std; struct node {int num;node* next; }; void show(node* head) {while (head){cout << head->num << ;head head->next;} } void add(node* head1, node* head2,node*&head3) {hea…

东营市自闭症寄宿学校,专注提供个性化教育

自闭症&#xff0c;这个听起来遥远而陌生的词汇&#xff0c;实际上正在影响着越来越多的家庭。自闭症儿童&#xff0c;被亲切地称为“星星的孩子”&#xff0c;他们活在自己的世界里&#xff0c;对周围的一切往往视而不见、听而不闻。然而&#xff0c;在广州的星贝育园自闭症儿…

万恶之源:端口不通

解决方案 本地端口开放&#xff0c;第三方使用者无法访问&#xff0c;原因无非有三&#xff1a; 1、基础网络不通 网不通&#xff0c;别说端口了&#xff0c;连ping都没办法&#xff1a;因此&#xff0c;请首先检查双方网络基础环境是否互通 2、防火墙拦截 新开的服务器&#x…

P4可编程技术详解:从理论到硬件实现

P4的诞生 为打破传统的固定封装模式&#xff0c;充分解放数据平面的编程能力&#xff0c;Nick McKeown领导的斯坦福大学研究团队于2014年提出可编程处理语言P4。借助P4的数据平面编程能力&#xff0c;用户可在网卡、交换机、路由器等网络设备上实现包括VXLAN、MPLS等在内的各种…

Docker容器不断重启问题

1. compose配置文件 docker-compose.yml services:node_app:image: dockerproxy.cn/node:lts-bullseye-slimcontainer_name: node_appnetworks:macvlan_net:ipv4_address: 192.168.2.3# 挂载的卷标volumes:- app:/app# 工作目录working_dir: /app# 自动重启restart: always# …

系统移植三

一、设备树 设备树&#xff08;Device Tree&#xff09;是 Linux 系统中用于描述硬件信息的一种机制&#xff0c;尤其在 ARM 平台上广泛使用。在早期版本的 Linux&#xff08;如 2.6 及之前&#xff09;&#xff0c;设备的硬件信息通常是通过硬编码方式写在平台相关的文件中。…

python爬虫--tx动漫完整信息抓取

python爬虫--tx动漫完整信息抓取 一、采集主页信息二、采集详情页信息三、完整代码一、采集主页信息 先看一下采集到的信息,结果保存为csv文件: 打开开发者工具,找到数据接口。 使用xpath提取详情页url。 二、采集详情页信息 如上图所示,使用xpath提取详情页的标题、作…

CPU超线程技术是什么,怎么启用超线程技术

超线程技术是一种允许单个物理CPU核心模拟成两个逻辑核心的技术&#xff0c;从而提升处理器的并行性能和效率。以下是对超线程技术的详细介绍&#xff1a; 基本概念&#xff1a;超线程&#xff08;Hyper-Threading&#xff0c;HT&#xff09;是Intel公司研发的一种技术&#x…

mbist之sharebus知识小结

本文摘录至微信公众号 搞搞芯意思 为何用sharebus? CPU/NPU/GPU等关键模块对性能要求很高,对功耗、时序、面积敏感,是整个芯片设计瓶颈。常规mbist设计插入的额外电路会对function时序收敛带来负面影响,而且会造成布线拥堵,给芯片性能和pd设计带来挑战。sharebus方…

【环境搭建】远程服务器搭建ElasticSearch

参考&#xff1a; 非常详细的阿里云服务器安装ElasticSearch过程..._阿里云服务器使用elasticsearch-CSDN博客 服务器平台&#xff1a;AutoDL 注意&#xff1a; 1、切换为非root用户&#xff0c;su 新用户名&#xff0c;否则ES无法启动 2、安装过程中没有出现设置账号密码…

python发送邮件带附件:配置全指南与步骤?

python发送邮件带附件教程&#xff1f;python如何发邮件带附件&#xff1f; 无论是工作报告、项目文档还是个人通知&#xff0c;邮件都能快速传递信息。而当这些信息需要附带文件时&#xff0c;Python发送邮件带附件的功能就显得尤为重要。AokSend将详细介绍如何使用Python发送…

线程属性详解

目录 catch语句 catch语句简介 catch语句中的内容 线程的属性 Thread提供的属性和方法 线程的属性方法 前台线程 后台线程 是否存活 catch语句 catch语句简介 我们首先认识一下catch语句&#xff0c;catch语句是用来捕获异常&#xff0c;在catch代码块中可以在捕获异…

Spark第一天

MapReduce过程复习 Spark由五部分组成 RDD五大特征 1、 Spark -- 代替MapReduce <<<<< scala是单机的&#xff0c;spark是分布式的。>>>>> 开源的分布式计算引擎 可以快速做计算 -- 因为可以利用内存来做一些计算 (1) 分为5个库(模块) : 1、…

C# 创建Windows服务,bat脚本服务注册启动删除

1、创建Windows服务&#xff0c;如下图。.NET Framework 4。Visual Studio 2019 。 2、在项目文件夹下创建文件夹LogConfig用于配置log4net&#xff0c;在LogConfig文件夹下新建log4net.config文件&#xff0c;如下图。 log4net.config文件内容如下。 <?xml version"…

能自动铲屎的自动猫砂盆是智商税吗?双十一热门自动猫砂盆推荐

大家平时一天要给猫咪铲几次屎呢&#xff1f;大多数应该都是早中晚各一次吧&#xff0c;在家的时候尚且能办到&#xff0c;但是一到了上班、出差、旅游的日子&#xff0c;我们又要如何保证猫咪的猫砂盆得到及时的清洁呢&#xff1f;要知道小猫咪的屎也很臭&#xff0c;猫砂盆长…

Linux云计算 |【第四阶段】RDBMS2-DAY4

主要内容&#xff1a; MHA概述、部署MHA集群 一、MHA概述 1、MHA简介 MHA&#xff08;Master High Availability&#xff09;是一款开源的MySQL的高可用程序&#xff0c;由日本DeNA公司youshimaton开发&#xff0c;是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的…