细说NLP中的Embedding层

文章目录

  • 前言
  • 一、为什么要引入Embedding层
  • 二、Embedding层是怎么发挥作用的?
  • 三、感受Embedding的强大
  • 四、为什么理解Embedding的底层原理?
  • 总结


前言

在构建高效的自然语言处理模型时,Embedding层是不可或缺的组成部分。它不仅可以帮助我们捕获词汇之间的语义关系,还能提高模型的性能。在本篇博客中,我们将详细介绍Embedding层的基本原理、使用方法以及它在深度学习框架中的实现,帮助你更好地理解和应用这一技术。

一、为什么要引入Embedding层

你是否曾经遇到过这样的问题:在处理大量文本数据时,如何有效地表示词汇或短语?传统的独热编码(One-Hot Encoding)方法存在哪些局限性?Embedding层又是如何解决这些问题的?接下来,我们将一起探讨Embedding层的工作原理及其在自然语言处理中的应用。

传统的onehot编码的局限性在于:
1.维度过高且稀疏:当词库(或特征集合)很大时,独热编码会生成一个维度极高的向量,其中大部分元素为0,只有对应特征位置的元素为1。这种高维且稀疏的表示方式不仅占用大量的存储空间,而且在后续的计算中会导致计算成本显著增加。
2.丢失了单词间的语义关系:独热编码仅根据单词在词库中的索引位置进行编码,没有考虑到单词之间的语义关系。
3.对词汇数量的敏感度:独热编码的维度与词库的大小直接相关。如果词库中的单词数量增加,那么编码的维度也会相应增加,这会导致上述的维度过高和稀疏性问题进一步加剧。
4.无法处理未知单词:如果在测试或应用阶段遇到了一个训练阶段中未曾出现过的单词(即未知单词),那么独热编码将无法为其生成一个有效的表示向量,因为该单词在词库中没有对应的索引位置。

随着语料库越来越大,在处理大规模这些文本数据或需要捕捉单词间语义关系时,one hot编码的局限性变得尤为突出。为了克服这些局限性,人们发展出了如词嵌入 等更先进的文本表示方法。

而且,在大语言模型盛行的今天,Embedding层仍然是不可或缺的一部分,它在表示文本内容、增强模型性能以及解决长文本输入问题等方面发挥着重要作用。

二、Embedding层是怎么发挥作用的?

在这里我以经典的Word2Vec为例子。简单介绍一下Word2Vec,它是一个将单词表示为向量的的词向量学习方法。有两种实现方式,分别是CBOWSkip-Gram模型。
方便起见,这里以CBOW举例子了。他的思想是这样的:给出目标单词周围的词,预测目标单词。就比如一句话原本的语句是“我爱你”,后来把“爱”遮住,使用CBOW预测出“我”和“你”之间的单词是什么。
在这里插入图片描述

网络结构如图所示:(输入下面的两个方块是周围单词,映射下面的方块是低维、稠密的词向量表示,输出下面的方块表示用softmax得出的得分)

在这里插入图片描述

CBOW做的是输入矩阵(即周围单词的矩阵表示)与一个输入单词权重矩阵 W i n W_{in} Win(也称嵌入矩阵)做矩阵相乘。这样就把输入变成了低维稠密的单词向量的形式,然后把这个单词向量表示进行softmax输出,取概率最大的单词。

本文章是为了介绍Embedding层,简单起见,所以我们聚焦于一个其中一个周围单词和 W i n W_{in} Win矩阵乘积的情况。
在这里插入图片描述

如果单词的输入矩阵用one hot向量表示。我们那么这个过程就变成了一下情况
输入单词向量形状是1 * 1000000, W i n W_{in} Win的形状是1000000 * 100,最终得到 1 * 100的低纬稠密向量。
在这里插入图片描述

这个过程有一个问题,矩阵相乘的时间复杂度是1 * 1000000 * 100 = 100000000。这个过程需要这么大的计算量。

但是,如果仔细观察的话,我们做的知识把第i行的元素提取出来而已。

为了解决这个问题,我们引入Embedding层,做的就是把 W i n W_{in} Win的某一行提取出来。

  • Embedding层的作用:一个 可以抽取单词id对应的行(向量) 的层。
  • 还有一个说法也比较贴切,Embedding是一个简单的查找表

三、感受Embedding的强大

引入Embedding层之后,这样问题就简单了。
考虑更复杂的一种情况,输入是100 * 1000000(输入100个单词,用每个单词用1000000维onehot表示)的情况,要把它压缩成100 * 100的矩阵。
原本的计算是这样的。
在这里插入图片描述
计算量是100 * 1000000 * 1000000=100000000000000。看数字可能感觉不够明显,翻译成中文就是10万亿。更何况语料库更加庞大的今天,可以说如果使用传统方法计算量简直是天文数字,根本不可以实现。

但是如今有了Embedding的方法,就简单多了。
在这里插入图片描述

我们要做的无非就是根据单词对应的序号从 W i n W_in Win中选出100行而已。
计算量=100 * 100 = 10000。(第一个100是输入的单词数,第二个100是 W i n W_{in} Win的100的纬度)
这样就把一个上面不可能解决的问题变成了一个很简单的取数问题。
简直爽爆了!

四、为什么理解Embedding的底层原理?

现如今,深度学习的框架十分方便,只要输入文本对应的整数索引(也称为类别索引或token索引),使用nn.Embedding(input),自动就转化成了想要的token(分词或单词)的低纬稠密表示。

但是我们不能知其然不知其所以然。虽然框架很方便,实际工作中光会调用接口是远远不够的。

了解Embedding的底层原理有助于你更深入地理解模型是如何工作的,在某些情况下,你可能需要自定义Embedding层的实现,以适应特定的任务或数据,从而进一步提高模型的运行效率。

总之,尽管深度学习框架提供了方便的接口来实现Embedding层,但学习其底层原理仍然是非常重要的。这不仅可以帮助你更好地理解模型的工作原理,还可以提高你的技术能力和创新能力


总结

在本文中,我们深入探讨了Embedding层的底层实现。我们了解到Embedding层在深度学习中扮演着将离散索引映射为连续向量空间的重要角色,

通过对Embedding层底层实现的解析,我们不难发现其高效性和灵活性的关键。使用嵌入矩阵作为查找表,Embedding层能够快速地根据索引返回对应的嵌入向量,而无需进行复杂的计算。同时,嵌入向量的维度可以根据任务需求进行灵活调整,以适应不同的应用场景。

最后,我想强调的是,Embedding层只是深度学习中的一个组成部分,它的作用和价值需要与其他网络层相结合才能充分发挥。因此,在学习和使用Embedding层时,我们需要深入理解其背后的原理和实现细节,并结合具体任务和数据集进行实践和调整。

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

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

相关文章

【免费Web系列】大家好 ,今天是Web课程的第十七天点赞收藏关注,持续更新作品 !

这是Web第一天的课程大家可以传送过去学习 http://t.csdnimg.cn/K547r SpingBoot原理 在前面十多天的课程当中,我们学习的都是web开发的技术使用,都是面向应用层面的,我们学会了怎么样去用。而我们今天所要学习的是web后端开发的最后一个篇…

通过影刀RPA,创建定时任务,自动获取图片验证码登录平台;

1.下载下载影刀客户端-影刀RPA - 影刀官网 2.安装,登录 3.应用创建->PC自动化应用 4.按照流程-创建【可双击或拖动】 5.保存 6.右击【创建的应用】->发版 7.选择触发器->【定时触发器】 根据提示配置 8.完成,每天平台会自动打开;…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于日间-日内不确定集的中长期电源扩展规划》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

TCP攻击是怎么实现的,如何防御?

TCP(Transmission Control Protocol)是互联网协议族中的重要组成部分,用于在不可靠的网络上提供可靠的数据传输服务。然而,TCP协议的一些特性也使其成为攻击者的目标,尤其是DDoS(Distributed Denial of Ser…

正确挑选百兆超薄款工业级网络/脉冲变压器(网络隔离滤波器)

Hqst华强盛(石门盈盛电子)导读:工业级百兆超薄款网络变压器的生产要特殊的超薄磁芯配正确线径的铜线,使用符合相应防潮标准的凝固胶水。 一 ̖ 首先来看下商业级的超薄款的百兆网络变压器: 商业级(消费级&…

基于Zero-shot实现LLM信息抽取

基于Zero-shot方式实现LLM信息抽取 在当今这个信息爆炸的时代,从海量的文本数据中高效地抽取关键信息显得尤为重要。随着自然语言处理(NLP)技术的不断进步,信息抽取任务也迎来了新的突破。近年来,基于Zero-shot&#x…

Linux CGroup资源限制(概念限制进程CPU使用)

Linux CGroup资源限制(详解) 最近客户认为我们程序占用cpu过高,希望我们限制,排查之后发现是因为程序频繁gc导致,为了精细化、灵活的的限制,想到了使用Linux CGroup。 0 前置知识 ①概念及作用 官网&#…

给Mac添加右键菜单「使用 VSCode 打开」的方法

用 macOS 系统的苹果电脑用户都知道,macOS 某些地方确实没 Windows 方便,比如右键菜单,没有复制粘贴之类的菜单,刚开始还有点使用不方便,今天我介绍两种方法来实现一个用右键通过 VSCode 打开文件和文件夹的方法&#…

Redis实战——创建账户及连接数据库

一、创建一个新账户 要创建一个带有免费数据库的新账户,请按照以下步骤操作: 前往 Redis Cloud 的注册页面。有两种开始使用 Redis Cloud 的选项: 在表单中输入您的信息,然后选择“Get Started”(开始使用&#xff…

Golang使用讯飞星火AI接口

一、API申请 https://www.bilibili.com/video/BV1Yw411m7Rs/?spm_id_from333.337.search-card.all.click&vd_source707ec8983cc32e6e065d5496a7f79ee6 注册申请,需要在此页面获取appid、apisecret、apikey https://www.xfyun.cn/ https://console.xfyun.cn/ser…

隐式链接DLL

本文仅供学习交流,严禁用于商业用途,如本文涉及侵权请及时联系本人将于及时删除 【例9.5】创建的基于MFC对话框的应用程序MFCImLink2,隐式链接例9.2创建的MFCLibrary2.dll,使用其中的导出函数求正方形的面积。 (1) 使用MFC应用程…

PS的stable diffusion插件安装指南

PS的stable diffusion插件安装指南 1.首先要安装stable diffusion,具体安装方法,参考https://blog.csdn.net/sheji888/article/details/139196688 stable diffusion要求要启用API功能 2.安装ps2023以上版本,低于这个版本不能使用stable diff…

尝试使用blazor(一)吐槽blazor,未开始之前,先吐为敬

为什么要写一点关于blazor的文章呢?其实是没什么人看的,我知道blazor目前在国内使用的人数,恐怕一辆大巴车都坐不满。非常冷门,我刚用blazor遇到问题,花钱找人解决,找了国内几个著名的平台,几乎没人会blaz…

关于怎么用Cubemx生成的USBHID设备实现读取一体的鼠标键盘设备(改进版)

主要最近做了一个要用STM32实现读取鼠标键盘一体的那种USB设备,STM32的界面上要和电脑一样的能通过这个USB接口实现鼠标移动,键盘的按键。然后我就很自然的去参考了正点原子的例程,可是找了一圈,发现正点原子好像用的库函数&#…

短剧看剧系统投流版系统搭建,前端uni-app

目录 前言: 一、短剧看剧系统常规款短剧系统和投流版的区别? 二、后端体系 1.管理端: 2.代理投流端 三、功能区别 总结: 前言: 23年上半年共上新微短剧481部,相较于2022年全年上新的454部&#xff0…

使用el-tree封装一个权限管理的小功能

使用el-tree封装一个权限管理的小功能 使用el-tree封装权限管理, 选中人员并且在右侧回显, 此组件用到了递归, 我只是将需要显示的数据进行了动态传递, 其他数据小伙伴可以自己封装 父组件 <template><div><authorityManage ref"authorityManage" :…

Vuepress 2从0-1保姆级进阶教程——标准化流程

Vuepress 2 专栏目录 1. 入门阶段 Vuepress 2从0-1保姆级入门教程——环境配置篇Vuepress 2从0-1保姆级入门教程——安装流程篇Vuepress 2从0-1保姆级入门教程——文档配置篇Vuepress 2从0-1保姆级入门教程——范例与部署 2.进阶阶段 Vuepress 2从0-1保姆级进阶教程——全文搜索…

学习笔记——路由网络基础——路由概述

一、路由概述 1、路由定义与作用 路由(routing)是指导报文转发路径信息&#xff0c;通过路由可以确认转发IP报文的路径。 路由&#xff1a;是指路由器从一个接口上收到数据包&#xff0c;根据数据包的目的地址进行定向并转发到另一个接口的过程。 路由(routing)的定义是指分…

极简主义在UI设计中的应用及解析

极简主义&#xff0c;即“少就是多”。在设计中&#xff0c;极简主义是许多艺术概念之一&#xff0c;它描述了一种内容形式&#xff0c;可以在许多方面使用。现在移动UI界面和网页设计中的极简主义设计越来越多。即时设计认为&#xff0c;极简主义UI界面不仅美观&#xff0c;而…

【一百零八】【算法分析与设计】P1908 逆序对,P1637 三元上升子序列,树状数组区间和应用

P1908 逆序对 逆序对 题目描述 猫猫 TOM 和小老鼠 JERRY 最近又较量上了&#xff0c;但是毕竟都是成年人&#xff0c;他们已经不喜欢再玩那种你追我赶的游戏&#xff0c;现在他们喜欢玩统计。 最近&#xff0c;TOM 老猫查阅到一个人类称之为“逆序对”的东西&#xff0c;这东西…