【收藏】Transformer核心基础:词嵌入与位置编码(大模型入门必学)
本文介绍了Transformer模型的输入处理部分,包括词嵌入和位置编码两大核心概念。词嵌入是通过嵌入矩阵将文本转换为向量的方法,解决了One-hot编码信息表示不足的问题。位置编码则解决了Transformer无法感知词语顺序的问题,通过正弦和余弦函数计算位置信息并与词向量相加。这两部分共同构成了Transformer的输入,是理解整个模型架构的基础。
本文介绍了Transformer模型的输入处理部分,包括词嵌入和位置编码两大核心概念。词嵌入是通过嵌入矩阵将文本转换为向量的方法,解决了One-hot编码信息表示不足的问题。位置编码则解决了Transformer无法感知词语顺序的问题,通过正弦和余弦函数计算位置信息并与词向量相加。这两部分共同构成了Transformer的输入,是理解整个模型架构的基础。
1 、思维导图
由于Transformer的内容非常多,想要一篇文章全部详细解释还是比较困难,因此我的打算分几篇文章为大家讲解这其中的玄机。
Transformer主要由编码器和解码器组成,而要了解编码器和解码器,我们只需要了解五个核心组件,而我们今天要了解的是输入处理:词嵌入与位置编码。
- 输入处理:词嵌入与位置编码
- 自注意力机制
- 多头注意力
- 前馈神经网络
- 残差连接与层归一化
思维导图如下,分成四个部分。大家都知道我们模型处理的数据一般是向量和矩阵,下面我们将一步步学习,文本究竟是怎么变成向量和矩阵的。

是随便找几个数填进去吗?
矩阵长和宽是多少呢?
什么时候是向量什么时候是矩阵呢?
为什么不用纯数字?
带着这些疑问跟我一起往下走。
2、 One Hot
假设我们现在有一句话:我喜欢深度学习。
这句话我们把它按照词语划分成3个部分:
我 喜欢 深度学习
此时要把它转化为数据,一般人可能会想到什么呢?直接用1 2 3表示不就行了吗?
[我 喜欢 深度学习]——>[1 2 3]
完美,好了我们已经将文本转化为数据了,现在1仅仅就代表我,2就仅仅代表喜欢,3就仅仅代表深度学习,然后呢?无法表示其他的信息。
比方说我是主语,喜欢是谓语,深度学习是宾语;这句话是在表明一个喜好等等信息,这些信息根本没有办法只用一个数字来表示。况且我们网络里面的运算铺天盖地都是矩阵和向量的,很少说把某一个数拿来直接计算。
一个数字可表示浓缩的信息太少了,也不利于网络的计算。 有小伙伴继续想到了用矩阵来表示,
[我 喜欢 深度学习]——>[1 2 3]
那么我们可以转化为:
我: [1,0,0]
喜欢: [0,1,0]
深度学习:[0,0,1]
这样看起来是将一个词用向量表示了,几个词还好,但是如果我们有100000个单词呢?到时候我们的矩阵只有对角线是1,其余地方全部是0,这样太浪费计算资源了,而且可以表示的信息依然太少,还是得继续优化方案,既要能使用向量表示词语,还要尽可能多的表示信息。
我们的解决方案就是嵌入矩阵和词嵌入。
3 、嵌入矩阵
有小伙伴进一步思考,既然单纯的0和1没有办法表示更多的信息,那我把这个矩阵的内容不止放0和1不就行了,这样就可以表示更多的信息。这就是我们的词嵌入。
假设我们现在有一万个单词,我们每个单词用一个向量来表示,这个向量的长度可以自己定义,比如我们定义成6。
这些向量一开始是随机的,可以随着训练更新,比如喜欢和爱两个词含义相近,一开始它们区别很大,但是随着训练越来越接近。
相当于我们有一个词汇表,表里面有单词,每个单词索引对应一个随机向量。
举个例子,我们的词汇表有7个词:
[我 喜欢 吃 苹果 也 爱 深度学习]
它们的索引是:
[1 2 3 4 5 6 7],
为每个词随机分配一个向量,每个向量长度(d_model)是6。

这个时候,我们就将上述向量组成的矩阵称为嵌入矩阵,这个矩阵是可以被训练学习的。
4、 词嵌入
此时我们已经得到了嵌入矩阵,那么词嵌入又是什么呢?
通常情况下,我们的词汇表不止7个词,是成千上万的,但是我们的输入只是词汇表中的部分,比如我们要输入
[我 爱 深度学习]
我们从词汇表
[我 喜欢 吃 苹果 也 爱 深度学习]
依据三个词的索引1 6 7,从词嵌入矩阵中取出这几个词对应的词向量,此时组成的矩阵便是词嵌入。
嵌入矩阵:

得到的词嵌入:

所以说我们平时说的词嵌入矩阵是一个全集,而词嵌入是嵌入矩阵的子集。
因此词嵌入的获取本质是一个查找过程:
- 1、我们首先构建一个词汇表,词汇表里的词有对应的索引;
- 2、为每个词汇对应生成一个词向量,词向量的维度(d_model)可以自己决定(一般是512),所有词向量组成一个矩阵就是嵌入矩阵;
- 3、我们依据部分词的索引,从嵌入矩阵中查找出对应的词向量,此时找出的词向量组成的矩阵就是词嵌入。
5 、位置编码
通过以上部分,我们已经了解了如何将文本转化为词嵌入,但是由于 Transformer 没有循环和卷积结构,它本身无法感知词语的前后顺序。
因此,我们必须考虑如何将它的位置信息也注入到输入数据中。
我们采用的是位置编码,通过将词嵌入每一个位置计算出一个值,再与它相加,具体怎么操作呢?我们来举一个例子一看便知。 先给出位置编码的公式:

通过公式可以看到,每个位置的值计算方法是不同的,当i为偶数的时候,用的是sin函数;当i为奇数的时候,用的是cos函数,并且公式中有三个变量:pos、i以及dmodel。
我们搞清楚了这三个变量分别是什么,就知道了PE位置编码的计算方法。 1、我们将刚才的三个向量转化为矩阵:

2、在这个图上标出pos和i以及dmodel:

3、我们直接将每个位置的参数带入到上述公式中,就可以得到位置编码了:

因此可以看出来pos其实就是每个词向量在词嵌入中的行坐标,i是列坐标,当然这么说挺不专业的,我们说:

因此我们得到了位置编码和词嵌入,再将二者相加,就是transformer的输入了:

看看我们位于transformer的哪一部分:

那么,如何系统的去学习大模型LLM?
作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。
所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。
由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
为什么要学习大模型?
我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。


👉大模型学习指南+路线汇总👈
我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。

👉①.基础篇👈
基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
👉②.进阶篇👈
接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
👉③.实战篇👈
实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
👉④.福利篇👈
最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!
更多推荐



所有评论(0)