深度学习中embedding层的理解

Embedding层作用

在深度学习领域中,Embedding层扮演着至关重要的角色,尤其在处理文本数据或类别数据。Embedding层的功能有两个:

1. 将高维稀疏的输入数据(如单词、类别标签等)转换为低维稠密的向量表示,可以大幅降低数据存储和计算量。

2. 低维稠密向量捕获了输入之间的语义和上下文信息,语义相近、类别相近的单词或者类别,其表示向量相似度也高,使得模型能够更好地理解数据信息并进行预测推理。

上述两个原因,使得模型能够更好的学习和处理输入数据。

Embedding层是从NLP发展过来的,下面以NLP中Word Embedding层为例,学习理解embedding层功能及训练方法。

Word Embedding

在NLP中,word embedding的作用是将词语映射为固定长度的向量,如下所示。

这个过程是如何实现的呢?

实际上,每个词都可以用一个one-hot向量进行表示,假设有一个5000个词的语料库,那么每个词可以用一个5000维的高维one-hot向量进行表示,这种高维向量(矩阵)对于计算机计算和存储都是巨大的开销,需要引入“嵌入矩阵”转换为低维向量(矩阵)进行处理。

嵌入矩阵(Embeddings)

假设有一个5000个词的语料库,每个词可以用1个128维的稠密向量进行表示,那么嵌入矩阵的大小是5000X128。

下面以“我喜欢学习数学”为例说明,这个句子可以分成“我”、“喜欢”、“学习”、“数学” 4个词,

每个词对应一个5000维的one-hot向量,那么这句话可以用一个4X5000的one-hot矩阵进行表示。

将one-hot矩阵 与 嵌入矩阵(embeddings) 进行矩阵相乘,可以得到一个4X128维的矩阵,如下:

因为词语矩阵是one-hot矩阵,这个矩阵乘法本质是从嵌入矩阵中挑选出该矩阵中词语对应的词向量(每个词语有一个向量)。

不难看到,嵌入矩阵是关键,这个矩阵必须具有以下性质:

1. 维度不能太高,比语料库词语个数要低1-2个数量级

2. 语义相似的词语,在向量表示上应该相似。

比如下面的例子中,cat和kitten两个词语义相近,在向量表示上,这两个向量的相似度要高,距离要比cat和dog更近,cat和dog又比cat和house要近。

再如,从逻辑上看,man和woman的距离和king和queen的距离应该差不多。

由此可见,使用嵌入矩阵具有三个优势:

1. 表达效率的提升:将高维稀疏矩阵转换为低维绸密矩阵,需要的计算和储存资源大幅减少

2. 表达关系的提升:语义相近的词语向量也相近,因此可以在数学上可以进行学习和推理

3. 嵌入矩阵是通用的,不同语料得到的one-hot矩阵一般是不通用的,而嵌入矩阵是通用的,一份嵌入矩阵,可以应用在不同的NLP任务中。

那么,嵌入矩阵如何得到呢?

嵌入矩阵获取

嵌入矩阵的获取是通过模型训练得到的,例如可以通过word2vector算法得到嵌入矩阵,word2vector算法又可分为CBOW和skip-gram算法,CBOW主要是根据上下文预测中间的词汇,而skip-gram是根据目标词预测上下文。

以“We are about to study the idea of deep learning” 为例,假设要根据上下文预测出“study”这个词,如果上下文窗口长度为1,则选择study上下一个词,左边是to,右边是the作为输入,上下文窗口长度为2,则选择study上下两个词,即左边是about to,右边是the idea两个词作为输入。

在深度神经网络中,对嵌入矩阵embeddings进行初始化,因为有输入句子词语one-hot向量,有预测目标词语的label,按损失函数最小来得到嵌入矩阵embeddings。

CBOW模型中如何根据上下文预测目标词呢?很简单,用上下文的词向量的均值表示预测目标词的向量。

然后预测目标词向量经过一个线性层权重矩阵(V X N),再经过softmax函数,输出预测概率最大的词。由于在一个语料库中,目标词有真实的label,于是通过损失函数最小,就能得到嵌入矩阵(embeddings)。

词语的one-hot向量经过embeddings不仅可以降维,而且相近的词语词向量是相似的,提升了词语之间的语义关系表达,从而增强了模型的预测推理能力。

代码实现

下面代码是CBOW模型在pytorch中的实现,还是比较简单的。

参考:

1.什么是词嵌入,Word Embedding算法_哔哩哔哩_bilibili

2. word2vec连续词袋模型CBOW详解,使用Pytorch实现_哔哩哔哩_bilibili

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

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

相关文章

LNMP配置

文章目录 一、相关概念CGI的由来FastCGIPHP-FPM 二、编译安装编译安装nginxyum安装mysql编译安装php配置nginx支持php解析增加数据库安装论坛 一、相关概念 CGI的由来 最早的Web服务器只能简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器…

Python | Leetcode Python题解之第144题二叉树的前序遍历

题目: 题解: class Solution:def preorderTraversal(self, root: TreeNode) -> List[int]:res list()if not root:return resp1 rootwhile p1:p2 p1.leftif p2:while p2.right and p2.right ! p1:p2 p2.rightif not p2.right:res.append(p1.val)…

DeepSpeed MoE

MoE概念 模型参数增加很多;计算量没有增加(gating小FNN,比以前的大FNN计算量要小);收敛速度变快; 效果:PR-MoE > 普通MoE > DenseTransformer MoE模型,可视为Sparse Model&…

手机投屏到电脑时,手机提示连接失败

前言 注意,本方法建立在你已经通过其他帖子等解决了前置条件的情况下,手机提示连接失败情况下,包括但不限于关闭防火墙、安装无线投屏工具、手机和电脑连接在同一个WiFi频段下、关闭杀毒软件等。 具体操作方法 1、请进入设置 > 系统和…

电脑存储设备,固态硬盘介绍,usb接口

简介 存储设备分为两大类主存和辅存,另外还有专门提供存储服务的网络存储 主存储器 随机存取存储器(RAM, Random Access Memory) 特点:高速、易失性存储器,断电后数据丢失。用途:临时存储正在使用的数据…

卷积神经网络 convolution neural network

1.数学卷积:滑动窗口 2.图像具有局部相关性和平移不变性,有许多冗余的特征点,如果用全连接的神经网络会很浪费时间。 3.卷积nn:减少参数,滑动提取特征,特征作为下层卷积的输入,然后放到全连接…

Androidstudio项目加载不出来,显示Connect timed out

Android studio加载不出来所需要的环境依赖,99%的问题都是网络原因 解决办法有两个: 1.科学上网 2.使用国内的镜像 方法一自行解决,下面重点介绍方法二 在项目目录下找到gradle->wrapper->gradle-wrapper.properties 将项目的distributionUrl改为https://mirrors.cl…

设计模式-装饰器模式(结构型)

装饰器模式 装饰器模式是一种结构模式,通过装饰器模式可以在不改变原有类结构的情况下向一个新对象添加新功能,是现有类的包装。 图解 角色 抽象组件:定义组件的抽象方法具体组件:实现组件的抽象方法抽象装饰器:实现…

Unity 笔试题分享

1. 请回答以下代码片段执行时是否会产生堆内存分配 a. void SetChar(string s){s.Replace(b, d);}b. void Update(Transform t){t.localPosition new Vector3(0, 0, 0);}c、 int Sum(List<int> l){int total 0;foreach (int i in l){total i;} return total;}d…

C++ | Leetcode C++题解之第144题二叉树的前序遍历

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> preorderTraversal(TreeNode *root) {vector<int> res;if (root nullptr) {return res;}TreeNode *p1 root, *p2 nullptr;while (p1 ! nullptr) {p2 p1->left;if (p2 ! nullptr) {…

python教程

python解释器的安装 https://www.python.org/ftp/python/3.12.4/python-3.12.4-amd64.exe jetbrains官网 英文 PyCharm 专业的版本 Thank you for downloading PyCharm! 社区 Thank you for downloading PyCharm! 中文 PyCharm 专业的版本 感谢您下载PyCharm&#xff01…

群体优化算法---水波优化算法介绍以及应用于聚类数据挖掘代码示例

介绍 水波优化算法&#xff08;Water Wave Optimization, WWO&#xff09;是一种新兴的群智能优化算法&#xff0c;灵感来自水波在自然环境中的传播和衰减现象。该算法模拟了水波在水面上传播和碰撞的行为&#xff0c;通过这些行为来寻找问题的最优解。WWO算法由三种主要的操作…

【JavaEE】Spring Boot MyBatis详解(一)

一.MyBatis的基本概念与相关配置. 1.基本概念 MyBatis是一款优秀的持久层框架&#xff0c;用于简化JDBC的开发。MyBatis本是Apache的一个开源项目iBatis&#xff0c;2010年这个项目由apache迁移到了google code&#xff0c;并且改名为MyBatis. 2013年11月迁移到Github.持久层…

区间预测 | Matlab实现GRU-ABKDE门控循环单元自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现GRU-ABKDE门控循环单元自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现GRU-ABKDE门控循环单元自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现GRU-ABKDE门控循环单元自适应…

[Vue3:组件通信)子组件props接收和watch监听,emit发送父组件 (添加修改设置成绩,添加、删除选课记录)

文章目录 一&#xff1a;系统功能&#xff1a;设置成绩&#xff08;添加或修改&#xff09;交互逻辑&#xff1a;涉及页面 Page02.vue&#xff0c;ModalEdit.vue主页面Page.vue注入子页面&#xff0c;使用子页面标签属性主页面对子页面做通信&#xff0c;子页面ModalEdit接收参…

Nginx+Tomcat负载均衡,动静分离群集

Nginx反向代理原理 Nginx 反向代理&#xff1a;将Nginx接收到的请求转发给其它应用服务器处理 Nginx 负载均衡&#xff1a;通过反向代理实现&#xff0c;还可以将nginx接收到的请求转发给多个后端应用服务器处理 Nginx 动静分离&#xff1a;静态页面请求&#xff0c;由nginx…

将AIRNet集成到yolov8中,实现端到端训练与推理

AIRNet是一个图像修复网络,支持对图像进行去雾、去雨、去噪声的修复。其基于对比的退化编码器(CBDE),将各种退化类型统一到同一嵌入空间;然后,基于退化引导恢复网络(DGRN)将嵌入空间修复为目标图像。可以将AIRNet的输出与yolov8进行端到端集成,实现部署上的简化。 本博…

vue3-使用富文本编辑器-wangEditor-文章发表1

最近在搞项目:我们组内几位成员正在搞一个网站搭建,以后更新会比较缓慢 引言:如果要网站要用的富文本编辑器的话,这边推荐用wangEditor 官网地址传送 : wangEditorhttps://www.wangeditor.com/ 我现在还在扩展我的写文章用的富文本编辑器 现在我将简单介绍一下其基本使用方…

IP协议(二)

TOC 一: 网段划分 同一个局域网的主机,要按一定的规则分配IP地址 把一个IP地址分为两部分: 前半部分 ,网络号 >用来表示局域网后半部分,主机号 > 用来区分同一个局域网中的不同主机 同一个局域网内部&#xff0c;主机之间的IP &#xff0c; 网络号相同&#xff0c;主…

对抗攻击论文阅读—AAAI2022—CMUA-Watermark

文章目录 CMUA-Watermark: A Cross-Model Universal Adversarial Watermark for Combating Deepfakes背景1、什么是对抗攻击1.1 主动防御与被动防御 2、整体思路3、方法3.1 整体流程3.2 如何破坏单个面部修改模型 G G G论文中代码 3.3 对抗扰动融合3.4 基于TPE的自动步长调整 4…