大模型学习(1)

news2024/9/21 10:59:51

初学者,仅做自己学习记录,如果对你有什么帮助,那更好了。

下面是论文《Attention Is All You Need》的经典transformer架构,在学习的过程中,有很多疑惑。

embedding层在做什么

Transformer的embedding层在做的是将输入的数据(通常是文本)转换成向量表示。这些向量表示在高维空间中可以捕捉到输入数据的语义信息。具体来说,embedding层的主要作用包括:

  • 词嵌入(Word Embedding):将输入的单词或子词(token)转换成固定维度的向量。常用的方法有Word2Vec、GloVe以及基于Transformer的BERT、GPT等模型生成的embedding。

  • 位置编码(Positional Encoding):因为Transformer没有像RNN那样的顺序结构,它需要一种方法来表示单词在句子中的位置。位置编码是通过将位置信息加到词嵌入上来实现的。常用的方法是将正弦和余弦函数应用于不同的维度。

词嵌入

为什么要将输入的token转为固定维度的向量?

  • 维度统一:固定维度的向量使得模型在处理输入数据时能够保持一致的形状和维度,这对批处理和模型训练非常重要。在神经网络中,输入的形状和维度需要一致,以便于进行矩阵运算。

  • 数值表示:文本数据本质上是非数值数据,计算机无法直接处理字符串。通过将单词或token转换为数值化的向量表示,模型能够进行数值运算和学习。

  • 捕捉语义信息:词嵌入(如Word2Vec、GloVe)和现代的预训练语言模型(如BERT、GPT)通过训练能够将语义上相似的单词映射到相似的向量空间位置。这使得模型能够捕捉到词与词之间的语义关系,从而更好地理解和生成自然语言。

  • 降维和特征提取:高维的one-hot编码会产生稀疏和高维的数据,这在计算上非常不经济且难以处理。而通过embedding层将高维的one-hot向量压缩成低维的稠密向量,不仅降低了计算复杂度,还能提取出重要的语义特征。

下面是我的理解,维度统一和数值表示很容易理解。

假设有一组单词,词汇表包含以下单词:

  1. cat
  2. dog
  3. mouse

使用one-hot编码,这些单词可以表示为:

  • "cat" -> [1, 0, 0]
  • "dog" -> [0, 1, 0]
  • "mouse" -> [0, 0, 1]

对应矩阵就是:

\begin{bmatrix} 1,0,0 \\ 0,1,0\\ 0,0,1 \end{bmatrix}

很明显可以看出他的特点,唯一性和稀疏性(每一行大部分都是0,只有一个1)。如果是一个包含1w个单词的输入,可以想象这个矩阵有多浪费空间及资源。

在one-hot的高纬矩阵基础上,创建一个随机初始化的权重矩阵,称为embedding矩阵。这个矩阵的维度是 |V| x d,其中 |V| 是词汇表的大小,d 是嵌入向量的维度(通常是一个相对较小的数,比如50、100、300等)。这个矩阵的每一行对应于词汇表中一个单词的稠密向量表示。

这么做的好处?

1. 原来是一个|V| x |V|  的矩阵,和embending矩阵相乘,最后会变成一个|V| x d的矩阵,维度降低了

2.在模型训练的过程中,embedding矩阵的权重会不断调整,使得语义相似的单词在向量空间中靠近。例如,"king" 和 "queen" 的向量可能在某种程度上相似,同时与 "apple" 之类的单词向量保持一定的距离。这个相对于原来的one-hot稀疏矩阵,他的每一行向量之间毫无联系,关联特征几乎为0。

位置编码

在实际操作中,位置编码和单词的嵌入向量相加,以便将位置信息融入到输入表示中。假设 E_{pos} 是位置为 pos的嵌入向量,位置编码后的输入向量 X_{pos}为:

X_{pos}=E_{pos}+PE_{pos}

通过这种方式,模型在处理输入时不仅有每个token的语义信息(来自embedding),还有其位置信息(来自位置编码)。

位置编码在Transformer模型中起到了关键作用,帮助模型捕捉序列数据中的位置信息。通过正弦和余弦函数生成的位置编码具有平滑性、周期性和区分性,能够有效地提供位置信息。将位置编码与嵌入向量相加后,模型可以更好地理解和处理序列数据。

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

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

相关文章

【C++进阶】AVL树详解

文章目录 1. AVL树的概念2. AVL树结点的定义3. AVL 树的插入3.1 关于平衡因子3.2 插入代码 4. AVL 树的旋转逻辑4.1 不需要旋转4.2 左旋4.3 右旋4.4 双旋4.4.1 先右后左单旋(RL 旋转)4.4.2 先左后右单旋(LR 旋转) 4.5 完整插入代码…

正则采集器之五——商品匹配规则

需求设计 实现分析 系统通过访问URL得到html代码,通过正则表达式匹配html,通过反向引用来得到商品的标题、图片、价格、原价、id,这部分逻辑在java中实现。 匹配商品的正则做成可视化编辑,因为不同网站的结构不同,同…

24小时在线的仪控专家

近年来,随着流程行业自动化水平的不断提高,仪表、阀门等设备在生产装置中的数量也越来越多,扮演着“眼睛”、“双手”和“神经”等角色,与生产过程的安全平稳息息相关,对企业追求效益最大化起着举足轻重的作用。 但仪控…

视频汇聚/安防监控/视频云存储EasyCVR平台实际通道数和授权数不一致的原因排查与解决

多协议接入/GB28181安防综合管理系统EasyCVR视频汇聚平台能在复杂的网络环境中,将前端设备统一集中接入与汇聚管理。智慧安防/视频存储/视频监控/视频汇聚EasyCVR平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘…

NOILinux2.0安装

NOI官方已发布NOILinux2.0,可是如何安装使用呢?我来教你。 首先下载VMWare和NOILinux2.0的ios,当然你用什么虚拟机软件都可以。这里我用的是VMware。 NOIlinux2.0的下载链接: NOI Linux 2.0发布,将于9月1日起正式启用…

2024电赛H题参考方案——自动行使小车

目录 一、题目要求 二、参考资源获取 三、参考方案 1、环境搭建及工程移植 2、移植MPU6050模块 3、移植TB6612电机驱动模块 其他模块根据需要移植 总结 一、题目要求 小编自认为:此次H题属于控制类题目,相较于往年较为简单,功能也算单一&…

hadoop学习(一)

一.hadoop概述 1.1hadoop优势 1)高可靠性:Hadoop底层维护多个数据副本,即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。 2)高扩展性:在集群间分配任务数据,可方便扩展数以千计…

开放式耳机和骨传导耳机哪个好?教你选择最好的开放式耳机!

​蓝牙耳机几乎成为和手机相同的数码设备,无论是在工作还是通勤过程,无论是娱乐还是线上办公,随身携带的蓝牙耳机都能提供更舒适、更便捷的听觉和通话体验。随着蓝牙耳机种类层出不穷,新型开放式耳机的加入,让更多消费…

DM数据库配置登录基于操作系统的身份验证

达梦数据库登录基于操作系统的身份验证 DM提供数据库身份验证模式和外部身份验证模式来保护对数据库访问的安全。数据库身份验证模式需要利用数据库口令,即在创建或修改用户时指定用户口令,用户在登录时输入对应口令进行身份验证;外部身份验…

React 和 Vue _使用区别

目录 一、框架介绍 1.Vue 2.React 二、框架结构 1.创建应用 2.框架结构 三、使用区别 1.单页面组成 2.样式 3.显示响应式数据 4.响应式html标签属性 5.控制元素显隐 6.条件渲染 7.渲染列表 react和vue是目前前端比较流行的两大框架,前端程序员应该将两…

鸿蒙HarmonyOS开发:如何灵活运用服务卡片提升用户体验

文章目录 一、ArkTS卡片相关模块二、卡片事件能力说明三、卡片事件的主要使用场景3.1、使用router事件跳转到指定UIAbility3.1.1、卡片内按钮跳转到应用的不同页面3.1.2、服务卡片的点击跳转事件 3.2、通过message事件刷新卡片内容3.2.1、在卡片页面调用postCardAction接口触发…

【Redis】Centos7 安装 redis(详细教程)

查看当前 Redis 版本: 当前的 redis 版本太老了,选择安装 Redis5。 一、使用 yum 安装 1、首先安装 scl 源 yum install centos-release-scl-rh 由于我之前已经安装过了,所以加载速度比较快,且显示已经安装成功,是最…

go-kratos 学习笔记(8) redis的使用

redis的在项目中的使用是很常见的,前面有了mysql的使用redis的也差不多;也是属于在data层的操作,所以需要新建一个 NewRedisCmd方法 在internal/data/data.go中新增NewRedisCmd 方法,注入到ProviderSet package dataimport (&quo…

【Java】类与对象、封装(008)

目录 类与对象 ♦️什么类与对象❓ 🎏类的定义 🎃定义一个类 🎃成员变量 🎃成员方法 🎏对象的创建使用和引用传递 🎃对象的创建 🎃对象的引用 封装 ♦️什么是封装❓ ♦️实现封装 …

太阳伴星2600万年回转周期,或许正是它,导致地球生物周期性灭绝?!

我们知道地球已经有46亿年的寿命了,这相比人类生存的时间是极其漫长的。在地球历史中,恐龙在这里生活了1.6亿年,这是地球上相对独特的存在。当然,在恐龙的一生中,它们绝对是地球的统治者。当时,现在统治地球…

stm32入门-----DMA直接存储器存取(上——理论篇)

目录 前言 DMA 1.简介 2.存储器映像 3.DMA结构 4.数据宽度与对齐 5.DMA工作示例 前言 本期我们就开始学习DMA直接存储器存取,DMA是一个数据装运的小助手,执行数据的搬运处理,减少了CPU的负担,在stm32中担当重要的工作。在前…

《Milvus Cloud向量数据库指南》——不同开源向量数据库的适用数据规模及其技术特点深度剖析

在探讨向量数据库领域时,我们不得不提及多个备受瞩目的开源项目,它们各自以其独特的技术优势和适用场景赢得了广泛的关注。本文将深入剖析Milvus Cloud、Chroma、Weaviate、以及Qdrant这几个开源向量数据库在不同数据规模下的应用表现,以及它们各自的技术特点和优势。 引言…

SS9283403 开发环境搭建(二)

1.序 在前一篇“SS928&3403K开发环境搭建(一)”中已经借助Ebaina搭建好的ubuntu对开发板做了测试,这篇记录从零开始搭建SS928&3403K的开发环境; 2.开发前准备 下载VMware Workstation 16 Pro 16.1.0版本 下载ubuntu18.04…

封装导出功能(export)

业务描述: 通过一个button按钮, 实现导出功能, 导出后文件保存到电脑上 目录 一. file-saver 介绍 二. 项目中应用 1. 安装 file-saver库 2.创建 util / exportExcel.js 3. 页面内引入, 使用 4. 页面反馈 展示 一. file-saver 介绍 file-saver是一个用于在前端导出文件…