深度学习中embedding层的理解

news2024/10/6 22:21:06

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

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

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

相关文章

【EAI】生成可爱的贴纸

贴纸生成工具上线啦,目前支持贴纸生成、文生图功能。 地址:https://eai.coderbox.cn/ 功能: 贴纸生成 通过简单提示词,生成可爱的贴纸,支持4种像素规格文生图 基于开源模型实现,模型持续集成中作品库 生…

管理数据必备;侦听器watch用法详解,vue2与vue3中watch的变化与差异

目录 一、侦听器(watch)是什么? 二、Vue2中的watch(Options API) 2.1、函数式写法 2.2、对象式写法 ①对象式基础写法 ②回调函数handler ③deep属性 ④immediate属性 三、Vue3中的watch 3.1、向下兼容&#xff…

打造你的博客帝国:DjangoBlog带你飞向国际舞台!

你的网站加载速度还在慢如蜗牛吗?将为你揭开网站速度提升的神秘面纱。从缓存策略到数据库优化,再到高效的代码实践,我们深入探讨了如何让DjangoBlog飞速运行。不仅如此,我们还提供了实用的监控和日志管理技巧,确保你的…

⌈ 传知代码 ⌋ Flan-T5 使用指南

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

软件游戏steam_api.dll丢失的解决方法,总结5种有效的方法

在玩电脑游戏时,我们经常会遇到一些错误提示,其中之一就是“游戏缺少steam_api.dll”。这个问题可能让很多玩家感到困惑和烦恼。那么,究竟是什么原因导致游戏缺少steam_api.dll呢?又该如何解决这个问题呢?本文将为大家…

优质免费的 5 款翻译 API 接口推荐

当谈到翻译API时,我们通常指的是一种编程接口,它允许开发者将文本从一种语言翻译成另一种语言。这些API通常由专业的翻译服务提供商提供,如谷歌翻译 API、实时翻译API、腾讯翻译API、DeepL翻译API、Azure翻译API等。 这些API通常提供多种语言…

电子电器架构——智能座舱设备终端

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

攻防演练之-动员大会

清晨的阳光透过薄雾洒在甲方的攻防演练中心。由于国家对于重点行业的数据灾备的要求。因此每一家企业都会选择在不同的地理位置建多个数据中心,包括一个生产中心、一个同城灾难备份中心、一个异地灾难备份中心。通过这种方式将业务分布在不同地理位置的数据中心&…

从信号灯到泊车位,ARMxy如何重塑城市交通智能化

城市智能交通系统的高效运行对于缓解交通拥堵、提高出行安全及优化城市管理至关重要。ARMxy工业计算机,作为这一领域内的技术先锋,正以其强大的性能和灵活性,悄然推动着交通管理的智能化升级。 智能信号控制的精细化管理 想象一下&#xff0…

“双一流名校”苏州大学计算机专业好考吗?苏州大学计算机考研考情分析

苏州大学(Soochow University),简称“苏大”,坐落于历史文化名城苏州,国家“211工程”重点建设高校,国家国防科技工业局和江苏省人民政府共建高校,国家“双一流”世界一流学科建设高校&#xff…

【设计模式】创建型设计模式之 工厂模式

一、介绍 工厂模式可以分为 3 个小类 简单工厂模式工厂方法模式抽象工厂模式 工厂模式的工厂类,并不一定以 Factory 结尾,例如 DataFormat、Calender 他们都是工厂类,通过静态方法来创建实例。 除此之外,创建对象的方法名称一…

ARMxy赋能温室环境自动化调控

智慧农业正以其独特的魅力描绘着未来的轮廓。作为这一变革的中坚力量,ARMxy工业计算机凭借其高性能、低功耗及高度灵活性,正逐步成为智能温室控制、精准灌溉及作物生长监测领域的核心引擎。 智能温室的智慧大脑 位于某地的现代农业园区,一座…

PowerDesigner 16.5安装教程

📖PowerDesigner 16.5安装教程 ✅1. 下载✅2. 安装 ✅1. 下载 官网地址:https://www.powerdesigner.biz/EN/powerdesigner/powerdesigner-licensing-history.php 云盘下载:https://www.123pan.com/s/4brbVv-aUoWA.html ✅2. 安装 1.运行P…

使用 C# 学习面向对象编程:第 1 部分

介绍 C# 完全基于面向对象编程 (OOP)。首先,类是一组相似的方法和变量。在大多数情况下,类包含变量、方法等的定义。当您创建此类的实例时,它被称为对象。在此对象上,您可以使用定义的方法和变量。 步骤1. 创建名为“LearnClass…

技术前沿 |【大模型InstructBLIP进行指令微调】

大模型InstructBLIP进行指令微调 一、引言二、InstructBLIP模型介绍三、指令微调训练通用视觉语言模型的应用潜力四、InstructBLIP的指令微调训练步骤五、实验结果与讨论六、结论与展望 一、引言 随着人工智能技术的快速发展,视觉语言模型(Vision-Langu…

三十七篇:大数据架构革命:Lambda与Kappa的深度剖析

大数据架构革命:Lambda与Kappa的深度剖析 1. 引言 在这个数据驱动的时代,我们面临着前所未有的挑战和机遇。随着数据量的爆炸性增长,传统的数据处理方法已无法满足现代业务的需求。大数据处理不仅涉及数据量的增加,还包括数据类型的多样化、数据来源的广泛性以及对实时数据…

3 数据类型、运算符与表达式-3.3.2 整型变量(原码,反码,补码)

在计算机科学中,补码、原码和反码是用来表示带符号整数的二进制编码方法,特别是在计算机内存中存储和处理整数时。这些编码方式帮助计算机区分正数和负数,并支持算术运算。以下是它们的具体含义: 原码(True Form or S…

国外媒体软文发稿-引时代潮流-助力跨国企业蓬勃发展

大舍传媒:开疆拓土,引领传媒新潮流 随着全球经济的一体化和信息技术的高速发展,跨国企业在国际市场上的竞争越来越激烈。这也给跨国企业带来了巨大的机遇和挑战。在这个时代背景下,大舍传媒凭借其独特的优势和创新的服务模式&…

Java数组的定义 ,基本概念与使用

数组的定义 1.问题:想将一个数据保存起来,我们可以使用变量,但是变量一次只能存储一个数据,所以我们想能不能一次存多个数据2.数组概述:是一个容器,数组本身属于引用数据类型3.作用:一次存储多个数据4.特点:a.既可以存储基本类型的数据,还能存储引用类型的数据b.定长(定义数组…

深入探讨跨域请求(CORS):原理、解决方案与详细示例代码

深入探讨跨域请求(CORS):原理、解决方案与详细示例代码 🌐 深入探讨跨域请求(CORS):原理、解决方案与详细示例代码 🌐摘要引言正文内容什么是跨域?为什么会有跨域问题&am…