大模型学习(1)

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

下面是论文《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.mzph.cn/pingmian/50695.shtml

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

相关文章

35.【C语言】详解函数递归

目录: 定义 作用 例子1~3 拓展学习 趣味练习 1.定义:函数自己调用自己(递推回归) int main() {main()return 0; } 这样容易死循环,导致爆栈(Stack Overflow) 所以需要设立限制条件,使执行时越来越接近条…

02 Golang面向对象编程_20240727 课程笔记

视频课程 最近发现越来越多的公司在用Golang了,所以精心整理了一套视频教程给大家,这个是其中的第二部,后续还会有很多。 视频已经录制完成,完整目录截图如下: 课程目录 01 结构体的声明.mp402 使用var根据结构体…

iOS基础---多线程:GCD、NSThread、NSOperation

系列文章目录 iOS基础—多线程:GCD、NSThread、NSOperation 文章目录 系列文章目录一、GCD1.GCD的任务、函数、队列a.任务b.函数c.队列 2.GCD的使用a.同步函数并发队列b.异步函数并发队列c.同步函数串行队列d.异步函数串行队列e.同步函数主队列f.异步函数主队列 3.…

FastAPI(七十五)实战开发《在线课程学习系统》接口开发-- 创建课程

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 上次我们分享了,FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 删除留言 从本篇文章开始,…

如何学习Doris:糙快猛的大数据之路(从入门到专家)

引言:大数据世界的新玩家 还记得我第一次听说"Doris"这个名字时的情景吗?那是在一个炎热的夏日午后,我正在办公室里为接下来的大数据项目发愁。作为一个刚刚跨行到大数据领域的新手,我感觉自己就像是被丢进了深海的小鱼—周围全是陌生的概念和技术。 就在这时,我的…

嵌入式Python、ROS、SLAM、WebSocket和Node.js:智能巡逻监控安防机器人设计流程(代码示例)

项目概述 随着智能技术的发展,智能巡逻机器人在安防、监控和巡逻等领域的应用越来越广泛。本文将介绍一个结合嵌入式系统、机器人技术和后端开发的智能巡逻机器人。该机器人能够自主导航,实时检测异常情况(如火灾或入侵者)&#…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十七章 Linux中断实验

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

AI绘画:艺术与科技融合的新篇章

随着人工智能(AI)技术的飞速发展,AI绘画作为一种新兴的艺术形式,正逐步改变着传统艺术创作的格局。从早期的简单模仿到如今的个性化创作,AI绘画不仅提升了艺术创作的效率和质量,还开辟了全新的应用场景和商…

C++模板——泛型编程

目录 1. 什么是泛型编程 2. 函数模板 2.1 定义格式 2.2 实例化及原理 2.3 参数匹配原则 3. 类模板 3.1 定义格式 3.2 实例化 4. 非类型模板参数 5. 模板的特化 5.1 概念 5.2 函数模板和类模板特化 6. 模板的分离编译 1. 什么是泛型编程 如何实现一个通用的加…

【Java算法专场】二分查找(下)

目录 山脉数组的峰顶索引 算法分析 算法步骤 算法代码 算法示例 寻找峰值 算法分析 算法步骤 算法代码 算法示例 寻找旋转排序数组中的最小值 算法分析 算法步骤 算法代码 算法示例 点名 算法分析 算法步骤 算法代码 算法示例 山脉数组的峰顶索引 …

TCP/IP协议(全的一b)应用层,数据链层,传输层,网络层,以及面试题

目录 TCP/IP协议介绍 协议是什么,有什么作用? 网络协议为什么要分层 TCP/IP五层网络协议每层的作用 应⽤层 DNS的作用及原理 DNS工作流程 数据链路层 以太⽹帧格式 MAC地址的作用 ARP协议的作⽤ ARP协议的工作流程 MTU以及MTU对 IP / UD / TCP 协议的影响 传输层…

数据结构之判断二叉树是否为搜索树(C/C++实现)

文章目录 判断二叉树是否为搜索树方法一:递归法方法二:中序遍历法总结 二叉树是一种非常常见的数据结构,它在计算机科学中有着广泛的应用。二叉搜索树(Binary Search Tree,简称BST)是二叉树的一种特殊形式&…

自动化测试--WebDriver API

1. 元素定位方法 通过 ID 定位:如果元素具有唯一的 ID 属性,可以使用 findElement(By.id("elementId")) 方法来定位元素。通过 Name 定位:使用 findElement(By.name("elementName")) 来查找具有指定名称的元素。通过 Cl…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 5键键盘(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

Linux常用操作

软件安装 CentOS 系统使用: yum [install remove search] [-y] 软件名称 install 安装 remove 卸载 search 搜索 -y ,自动确认 Ubuntu 系统使用 apt [install remove search] [-y] 软件名称 install 安装 remove 卸载 search 搜索 -y…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十六章 自动创建设备节点

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

前端播放rtsp视频流(最后使用WebRtc)

前端播放rtsp视频流(最后使用WebRtc) 前言: ​ 项目需要将实验室里的摄像头画面引入到前端页面中,故对目前常见的几种方法进行了尝试,虽然过程坎坷但结局是好的。 一些尝试: RTSPtoWebRtc工具 由于RTSPt…

opengl 写一个3D立方体——计算机图形学编程 第4章 管理3D图形数据 笔记

计算机图形学编程(使用OpenGL和C) 第4章 管理3D图形数据 笔记 数据处理 想要绘制一个对象,它的顶点数据需要发送给顶点着色器。通常会把顶点数据在C端放入 一个缓冲区,并把这个缓冲区和着色器中声明的顶点属性相关联。 初始化立…

力扣 二分查找

二分查找基础篇。 题目 class Solution {public int searchInsert(int[] nums, int target) {int l 0, r nums.length - 1;while(l < r) {int mid l((r-l)>>1);//(lr)/2if(nums[mid]<target)lmid1;else rmid-1;}return l;//处理边界&#xff0c;设定数组的左半…

21 Python常用内置函数——zip()

zip() 函数用来把多个可迭代对象中的元素压缩到一起&#xff0c;返回一个可迭代的 zip 对象&#xff0c;其中每个元素都是包含原来的多个可迭代对象对应位置上元素的元组&#xff0c;最终结果中包含的元素个数取决于所有参数序列或可迭代对象中最短的那个。 可以这样理解这个函…