【Transformer系列】深入浅出理解Embedding(词嵌入)

news2024/11/19 19:19:59

一、参考资料

一文读懂Embedding的概念,以及它和深度学习的关系

论文

[1] Attention is All you Need

二、Embedding相关介绍

Embedding,直译是词嵌入嵌入层

1. 引言

2. one-hot编码

假设,中文有10个字 “星 巴 克 喜 欢 瑞 幸 的 朋 友”,用0-9表示为一句话:
在这里插入图片描述

也可以表示为:
在这里插入图片描述

还可以表示为:
在这里插入图片描述

“星巴克喜欢瑞幸的朋友”"的one-hot编码为:
在这里插入图片描述

"瑞幸喜欢星巴克的朋友"的one-hot编码为:
在这里插入图片描述

从上图可知,每个字都对应唯一的one-hot编码。one-hot编码计算简单,只需要把1对应位置的数相乘求和即可。

比如:一本书有100W字,常用的简体繁体字有10W,那么这本书可以表示为100wx10w的矩阵。这明显存在缺点:矩阵过于稀疏,过度占用资源。one-hot存在维度灾难。

比如:虽然这本书有100W字,但有99W字是重复的,只有1W字是完全不重复的,那100Wx10W的矩阵,浪费了99Wx10W的存储空间。

为了解决矩阵稀疏表示的问题,引入了Embedding。

3. Embedding的通俗理解

简单的说,Embedding就是把一个东西映射到一个向量X。如果这个东西很像,那么得到的向量x1和x2的欧式距离很小。

举例说明:

  • Word Embedding,把单词w映射到向量x。如果两个单词的意思相近,比如bike和bicycle,那么它们映射后得到的两个词向量x1和x2的欧式距离很小。
  • User Embedding,把用户ID映射到向量x。推荐系统中,需要用一个向量表示一个用户,如果两个用户的行为习惯接近,那么他们对应的向量x1和x2的欧式距离很小。
  • Graph Embedding,把图中的每个节点映射成一个向量x。如果图中两个节点接近,比如它们的最短路很小,那么它们embed得到的向量x1和x2的欧式距离很小。
  • 多模态里的embedding,就是直接把两个向量通过全连接变成一个。
  • Embedding就是用一个低维稠密的向量表示一个对象,这里的对象可以是一个词(Word2vec),也可以是一个物品(Item2vec),亦或是网络关系中的节点(Graph Embedding)。Embedding向量能够表达对象的某些特征,两个向量之间的距离反映了对象之间的相似性

4. Embedding的概念

Neural Networks, Manifolds, and Topology

Embedding(嵌入)是拓扑学里的专业术语,在深度学习领域经常和Manifold(流形)搭配使用。

举几个例子来说明,比如三维空间的球面是一个二维流形嵌入在三维空间(2D manifold embedding in 3D space)。之所以说它是一个二维流形,是因为球面上的任意一个点只需要用一个二维的经纬度来表达就可以了。又比如,一个二维空间的旋转矩阵是2x2的矩阵,只需要一个角度就能表达,这就是一个一维流形嵌入在2x2矩阵空间。

在深度学习领域,最初的切入点是 Manifold Hypothesis(流形假设)。流形假设是指:“自然的原始数据是低维的流形嵌入于(embedded in)原始数据所在的高维空间”。那么深度学习的任务就是把高维原始数据(图像、句子)映射到低维流形,使得高维的原始数据被映射到低维流形之后变得可分,而这个映射就是Embedding(嵌入)。比如,Word Embedding,就是把单词组成的句子映射到一个表征向量。

5. Embedding的本质

Embedding的本质是信息的聚合和解耦,也就是信息的再表达。如下图所示,前一个是1x4的高维embedding,分别表示猫、狗、花、草四种属性值,后一个是1x2的低维embedding,分别表示动物、植物两种属性值。从高维embedding降维成低维embedding是信息的聚合,猫狗聚合成动物,花草聚合成植物;从低维embedding升维成高维embedding是信息的结构,动物解耦成猫狗,植物解耦成花草。
在这里插入图片描述

其他二维embedding聚合的例子,比如CNN对图像进行降采样得到的feature map,是embedding;解耦的例子,GAN生成的图像是embedding。N维同理。

6. Embedding的作用

6.1 降维

假设,一个2x6的矩阵,乘上一个6x3的矩阵,变成一个2x3的矩阵。
( 1 0 0 0 0 0 0 1 0 0 0 0 ) [ w 11 w 12 w 13 w 21 w 22 w 23 w 31 w 32 w 33 w 41 w 42 w 43 w 51 w 52 w 53 w 61 w 52 w 53 ] = ( a 11 a 12 a 13 a 21 a 22 a 23 ) = ( a 11 a 12 a 13 a 21 a 22 a 23 ) (\begin{array}{rrrrrrrr}1&0&0&0&0&0\\0&1&0&0&0&0\end{array})\left[\begin{array}{rrrrr}w_{11}&w_{12}&w_{13}\\w_{21}&w_{22}&w_{23}\\w_{31}&w_{32}&w_{33}\\w_{41}&w_{42}&w_{43}\\w_{51}&w_{52}&w_{53}\\w_{61}&w_{52}&w_{53}\end{array}\right]=(\begin{array}{rrrrr}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\end{array})=(\begin{array}{rrrr}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\end{array}) (100100000000) w11w21w31w41w51w61w12w22w32w42w52w52w13w23w33w43w53w53 =(a11a21a12a22a13a23)=(a11a21a12a22a13a23)

A ∗ B = C A *B=C AB=C

在上述公式中,一个12个元素的A矩阵变成C中6个元素的矩阵,直观上大小缩小了一半。

假设一个100Wx10W的矩阵,乘上一个10Wx20的矩阵,可以把它降到100Wx20的矩阵,降低10w/20=5000倍。

总结:在某种程度上,Embedding层实现了降维的作用,降维的原理是根据矩阵乘法

6.2 升维

在这里插入图片描述

如上图所示,如果在10米开外找出3处不同,是很困难的事情,目测也可能完成。但是让你在一米外,发现水壶的背景不同。然后再走近半米,又发现小姑娘头上的小花夹子不一致。再走近20厘米,又发现花盆中黄色小花不同。

无限靠近并不代表认知度就高。比如,在距离屏幕1厘米远的地方找茬,这是不可能的。低维的数据可能包含的特征信息是非常笼统的,需要不停地拉近拉远来改变我们的感受,让我们对这幅图有不同的观察点,找出图中的“找茬”。由此可见,距离的远近会影响我们的观察效果

Embedding的另一个作用体现了:对低维数据进行升维时,可以把一些其他特征放大,或者把笼统的特征给分开。

Embedding是一直在学习优化的,使得整个拉近拉远的过程慢慢形成一个良好的观察点。比如,来回靠近和远离屏幕,发现45厘米是最佳观测点,这个距离能5s内把3个不同点找出来。

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

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

相关文章

LinuxFTP云盘-文件服务系统

目录 1.项目介绍 2.项目运行展示 3.实现思路 服务端: 客户端: 4.相关调用函数 socket():创建一个网络通信端点原型:int socket(int domain, int type, int protocol); atoi():将字符串转变成整型数据原型&…

【C刷题】day2

一、选择题 1、以下程序段的输出结果是&#xff08; &#xff09; #include<stdio.h> int main() { char s[] "\\123456\123456\t"; printf("%d\n", strlen(s)); return 0; } A: 12 B: 13 C: 16 D: 以上都不对【答案】&#xff1a; A 【解析】…

黑马JVM总结(八)

&#xff08;1&#xff09;StringTable面试题 1.8 1.6时 &#xff08;2&#xff09;StringTable的位置 jvm1.6时StringTable是常量池的一部分&#xff0c;它随着常量池存储在永久代当中&#xff0c;在1.7、1.8中从永久代变成了堆中&#xff0c;为什么做这个更改呢&#xff1f…

c语言每日一练(15)

前言&#xff1a;每日一练系列&#xff0c;每一期都包含5道选择题&#xff0c;2道编程题&#xff0c;博主会尽可能详细地进行讲解&#xff0c;令初学者也能听的清晰。每日一练系列会持续更新&#xff0c;上学期间将看学业情况更新。 五道选择题&#xff1a; 1、程序运行的结果…

家政服务接单小程序开发源码 家政保洁上门服务小程序源码 开源完整版

分享一个家政服务接单小程序开发源码&#xff0c;家政保洁上门服务小程序源码&#xff0c;一整套完整源码开源&#xff0c;可二开&#xff0c;含完整的前端后端和详细的安装部署教程&#xff0c;让你轻松搭建家政类的小程序。家政服务接单小程序开发源码为家政服务行业带来了诸…

【数据在内存中的储存】

1.整数在内存中的存储&#x1f4bb; 在讲解操作符的时候&#xff0c;我们就讲过了下⾯的内容&#xff1a; 整数的2进制表⽰⽅法有三种&#xff0c;即原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分&#xff0c;符号位都是⽤0表⽰“正”&#xff0c;⽤1表⽰“负”&…

C# Onnx Yolov8 Fire Detect 火焰识别,火灾检测

效果 项目 代码 using Microsoft.ML.OnnxRuntime.Tensors; using Microsoft.ML.OnnxRuntime; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using Syste…

HBS 家庭总线驱动和接收芯片MS1192,应用于电话及相关设备、空调设备、安全设备、AV 装置

MS1192 是适用于 HBS 总线规范&#xff08;日本电子工业协会&#xff09; 的适配器芯片&#xff0c;具备发送、接收数据的功能。在发送接收 单元中&#xff0c;采用 AMI 编码方式&#xff0c;可使用双绞线进行互联&#xff0c;信 号传输采用差分方式。 芯片采用单电源…

竞赛 基于机器视觉的火车票识别系统

文章目录 0 前言1 课题意义课题难点&#xff1a; 2 实现方法2.1 图像预处理2.2 字符分割2.3 字符识别部分实现代码 3 实现效果最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于机器视觉的火车票识别系统 该项目较为新颖&#xff0c;适合作为竞赛…

【Unity3D】资源管理

1 前言 Unity 中 资源管理方案主要有 Resources、TextAsset、ScriptableObject 、AssetDatabase、PlayerPrefs、Addressables、AssetBundle、SQLite&#xff0c;本文将介绍其中大部分方案。 2 Resources Resources 主要用于加载资源&#xff0c;被加载的资源需要放在 Resource…

微信小程序学习笔记1.0

第1章 微信小程序基础 1.1 微信小程序介绍 1.1.1 什么是微信小程序 微信小程序的特点&#xff1a; ① 微信小程序是不需要下载和安装的&#xff1b; ② 它可以完成App应用软件的交互功能&#xff1b; ③ 用户扫一扫或者搜一下就可以使用小程序&#xff1b; ④ 微信小程序…

什么是气象站?气象站的简介

气象站是一种用于收集、分析和处理气象数据的设备&#xff0c;能够为人们提供及时、准确的气象数据和决策支持。下面是对气象站的详细介绍&#xff1a; 气象站是一种用于气象观测的设备&#xff0c;它通过各种传感器和测量设备&#xff0c;对大气环境中的温度、湿度、气压、风…

“微软爱写作”连词摘录

目录 前言连词1 引入2 承接3 最后4 因果关系5 转折关系6 并列关系7 递进关系8 比较关系&#xff08;相同点&#xff09;9 对照关系&#xff08;不同点&#xff09;10 举例关系11 例外关系12 强调关系13 条件关系14 归纳总结15 方位关系16 目的关系17 重申关系18 时间关系19 结果…

Java面试八股文宝典:初识数据结构-数组的应用扩展之HashMap

前言 除了基本的数组&#xff0c;还有其他高级的数据结构&#xff0c;用于更复杂的数据存储和检索需求。其中&#xff0c;HashMap 是 Java 集合框架中的一部分&#xff0c;用于存储键值对&#xff08;key-value pairs&#xff09;。HashMap 允许我们通过键来快速查找和检索值&…

Java基础入门·File类的使用

前言 ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ File类的创建方法 File类介绍 ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ …

java基础特别问题

基础学习 数据类型转换运算符字符串方法传递参数: 值传递构造器Stringnew关键字创建的对象则按对象方式去处理 静态代码块和实例代码块静态代码块&#xff1a;实例代码块&#xff1a; 多态匿名内部类格式&#xff1a;StringJoiner (JDK1.8)小数计算BigDecimal时间时间集合List …

python: excel假期时间提取统计

# encoding: utf-8 # 版权所有 2023 涂聚文有限公司 # 许可信息查看&#xff1a; # 描述&#xff1a; # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 311 # Datetime : 2023/9/3 7:04 # User : geovindu # Product : PyCharm # Proje…

Java从Tif中抽取最大的那张图进行裁剪成x*y份

之前我有一篇帖子《kfb格式文件转jpg格式》讲述到 kfb > tif > jpg&#xff0c;但是针对于超大tif中的大图是无法顺利提取的&#xff0c;就算是能顺利提取&#xff0c;试想一下&#xff0c;2G的tif文件&#xff0c;如果能提取处理最大的那张图&#xff0c;并且在不压缩的…

Java代码审计16之fastjson反序列化漏洞(1)

文章目录 1、简介fastjson2、fastjson的使用2.1、将类序列化为字符串2.2、将字符串还原为对象2.3、小结以上2.4、稍微扩展思路 3、fastjson漏洞利⽤原理与dnslog4、JdbcRowSetImpl利用链4.1、JdbcRowSetImpl的基本知识4.2、利用代码复现4.3、生成poc4.4、模拟真实场景4.5、利用…

03目标检测-传统方法与深度学习算法对比

目录 一、目标学习的检测方法变迁及对比 二、深度学习目标检测算法基本流程 三、传统目标检测算法VS深度学习目标检测算法 一、目标学习的检测方法变迁及对比 “目标检测“是当前计算机视觉和机器学习领域的研究热点。从Viola-Jones Detector、DPM等冷兵器时代的智…