这是一篇很枯燥的技术文章,花了很久很多心思整理的解读大模型Transformer架构

前言

已经记不清这是我第几次解读大模型Transformer架构了,从浅到深,包括自己之前解读完还会从0手写一个大模型出来,去训练,去微调。但是每一次解读后,都会有更深的感受和理解,今天花时间做了一次系统的整理,有需要今后想研究大模型的,可以收藏起来,以后慢慢看。看一次就懂很难,有些地方,需要慢慢读,慢慢品,研究的多了,相信下面这张图,你都能背着画下来了。

(Transformer架构)

Transformer架构起源

Transformer是谷歌在2017年发表的一篇论文,它的出现为自然语言处(NLP)提供了一种全新的范式,尤其是其核心自注意力机制,提供了一种更加高效、更加强大的方法来处理序列数据。Transformer的架构图上图所示,按照我的理解我给标上了序号并分成了5个大部分,方便后面讲解。

1、Inputs

输入的内容:这个就是用于我们用于交互的输入,比如输入一段文字:端午节我国都有什么活动?

**2、**输入预处理部分

输入预处理部分:这里包含两部分,Inputs Embedding (把文字转码成用512个数字去表示)和 Positional Encoding(标记文字的位置,这里为什么要标记位置呢,因为同样的字,比如我爱你和你爱我,位置不同,表示的含义不同,所以需要对输入的每一个文字,进行位置的标记)。整体总结:**这一步所做的事是将输入的文字转换为用数字表示,并标记位置。**这里我们将这一步称之为Q矩阵。

**3、**大模型核心部分

第三部分就是我们传统意义上的说的大模型部分了,这部分最为复杂,包括左边的编码器和右边的解码器,里面还有各种组件,其中最重要的就是之前提到的自注意力机制

先简单解读一下,里面的内容在图上没有,是为了让大家先简单了解下大模型背后的本质是什么:

大模型的组成:模型 = 公式 + 参数(系数),比如一个数学公式,z=2x+7y,其中的2和7就是参数,而x和y是你输入的内容,z就是要计算后输出的结果。比如ChatGPT-3.5有1750亿个参数就是指的这个,现在GPT-4已经有万亿参数了。

大模型参数:大模型在没开始训练前,每个参数都是随机数,训练完成后,每个参数都是一个固定的数字。大模型训练后,当你把第二部分Q矩阵传入进去,跟着参数(比如ChatGPT3.5的1750亿个参数)做计算,最后就产生输出了。因为现在大家大模型底层都是Transformer架构,大家公式都差不多,最后评估一个大模型靠不靠谱,主要还是看参数。而机器学习训练大模型的过程,本质上就是让参数越来越靠谱的过程。

说完上面了,我们再来结合图,详细分析一下(后方高能,有些难理解,不想深入研究的),可以跳过去,直接看第四部分。

综述:

根据上图(3.1与3.2),虽然只画了一个,但事实上,本质上背后是有多个编码器和多个解码器组成,数量是相同的

(编码器与解码器)

内部编码器和解码器结构如下图所示,就是对应着上图3.1与3.2的架构,为了方便看,我拿中文翻译了一下,所以看下面这个图去理解大模型核心部分和看上面那个图标记的3.1和3.2去理解,其实是一个东西。

(编码器与解码器)

**3.1、**大模型核心部分(编码器)

编码器主要包含两部分:多头自注意力机制(Multi-Head Self-Attention)和前馈神经网络(Feed-Forward Neural Network)。编码器主要负责:将输入数据压缩成低维度的隐向量(能够代表输入数据特征的向量,隐向量在Transformer架构中起到了特征压缩、信息表达、生成任务以及隐藏层归一化等多方面的作用)

多头注意力机制:

**多头自注意力机制(Multi-Head Self-Attention):**计算输入序列中每个词与其他词的关系(注意力得分),生成新的词表示。简单来说,在对每个单词编码的时候时刻关注句子的其它单词,随着模型处理输入序列的每个单词,自注意力会关注整个输入序列的所有单词,帮助模型对本单词更好地进行编码。在处理过程中,自注意力机制会将对所有相关单词的理解融入到我们正在处理的单词中。

想深入了解的可以看这里,具体实现多头注意力机制的可以分为以下步骤:

1)、创建 Query、Key和Value矩阵

首先,将输入序列的词嵌入表示分别通过三个不同的线性变换,生成三个矩阵,分别称为Query(Q)、Key(K)和Value(V),简称Q、K、V矩阵。这些矩阵捕捉了输入序列中每个词的不同方面的信息。

2)、分割多头

将Q、K和V矩阵分别沿其嵌入维度分割成多个头,每个头都代表一个独立的注意力机制。例如,如果嵌入维度为512,要分割成 8个头,则每个头的维度为64。

3)、计算注意力得分

对于每个头,使用其对应的Q、K和V矩阵计算注意力得分。最常见的方法是缩放点积注意力机制,其计算公式如下:

Attention(Q, K, V) = softmax(Q * K^T / sqrt(d_k)) * V

其中,d_k是Key矩阵的维度,用于缩放点积结果。softmax函数用于将注意力得分归一化到0~1之间。

4)、合并多头

将所有头的注意力得分拼接在一起,然后通过一个线性变换,将多头注意力机制的输出映射回原始的嵌入维度。

多头注意力机制在处理长文本序列时具有以下优势:

1)、并行计算:多个头可以并行计算注意力得分,提高计算效率。

2)、捕捉不同信息:每个头可以关注输入序列中不同方面的信息,例如语法关系、语义关联等,从而更全面地理解文本。

3)、长距离依赖关系:注意力机制可以捕捉长距离依赖关系,而循环神经网络在处理长序列时容易出现梯度消失或爆炸问题。

---------

前馈神经网络:

**前馈神经网络(Feed-Forward Neural Network):**对每个词的位置进行独立的非线性变换,增强表示能力。多头自注意力机制关注词之间的关系,而前馈神经网络(FFN)关注每个词自身的语义表达,在Transformer中,多头自注意力机制和FFN 交替使用,形成多层结构,逐层提取和抽象文本信息。

---------

注意力机制和前馈神经网络的关系

这里最后总结一下多头注意力机制和前馈神经网络的关系:

**顺序连接:**多头自注意力机制和前馈神经网络以顺序的方式连接。多头自注意力机制首先处理输入序列,捕捉词之间的关系,然后将输出传递给FFN进行进一步的特征提取和非线性变换。

**多头自注意力机制:**编码器中的多头自注意力机制负责学习输入序列中词之间的关系,并生成包含丰富上下文信息的词向量表示。每个词都能够注意到句子中其他词,并根据相关性进行加权,从而捕捉到长距离依赖关系。

**前馈神经网络:**编码器中的FFN独立地作用于每个词向量,对多头自注意力机制的输出进行非线性变换,提取更抽象的语义信息,并增强每个词自身的语义表达。

残差连接(Add)和层归一化(Norm)

在多头自注意力机制和前馈神经网络中间还有着特别不起眼的一层,叫做残差连接(Add)和层归一化(Norm)。

残差连接(Add):为解决深度神经网络训练过程中的梯度消失问题,使模型更容易训练。 背后的原理是将模块的输入直接加到模块的输出上,使得网络可以学习到输入到输出的残差映射,而不是完全依赖于当前层的学习结果。这样即使网络很深,梯度也能有效地反向传播,避免了梯度消失。

层归一化(Norm):作用是稳定训练过程,加速模型收敛速度,并提升模型的泛化能力。 背后的原理是对每个样本的特征进行归一化,使其均值为 0,方差为1。这样可以避免因为数据分布的变化而影响模型的训练,同时也使得模型对不同尺度的输入数据更加鲁棒。

这两层虽然不起眼,但是扮演着重要的角色,它不仅可以提升模型的训练效率和稳定性,还可以提升模型的泛化能力。

---------

3.2、大模型核心部分(解码器)

解码器的主要作用是基于编码器输出的隐向量生成目标序列,它通过逐个生成目标序列中的每个词,逐步构建最终的输出结果(解码器不仅关注自身已经生成的部分,还会融合编码器传过来的K和V值,以便更好地对齐输入序列中的适当位置)。

它分为三个部分,除了编码器那两部分外,还多了一层掩码多头自注意力机制(Masked Multi-Head Self-Attention)。

掩码多头自注意力机制层: 它的作用是在生成过程中,防止模型在预测下一个词时看到未来的词。 因为解码器在每个位置上对之前位置的信息进行自注意力计算,由于解码器需要逐步生成输出序列,因此在计算自注意力时需要遮蔽未来的位置,防止模型在生成当前词时看到未来的词,通过遮蔽(masking)确保模型只能访问当前位置及之前的位置的信息。

多头自注意力机制层解码器对编码器输出的信息进行注意力计算,从而利用编码器生成的上下文表示。 将编码器的输出作为“键(key)”和“值(value)”作为当前解码器层的输入进行“查询(query)”,计算注意力分数 并获取加权后的上下文向量。

前馈神经网络层: 和编码器一样,对经过注意力机制处理后的数据进行进一步的非线性变换和处理,增强模型的表达能力。

残差连接(Add)和层归一化(Norm)层: 和编码器中的一样,起到缓冲作用。

---------

编码器和解码器的流程:

最后总结一下,编码器和解码器的流程:

编码器:负责处理输入序列,将其转化为一组上下文表示。每个位置的表示向量包含了该位置及其周围位置的信息。

解码器:逐步生成输出序列。每生成一个词,解码器会利用当前词及之前所有词的信息(通过Masked Multi-Head Self-Attention),以及编码器提供的上下文表示(通过Multi-Head Attention)来决定下一个词的生成。

1)、输入序列经过编码器各层处理,生成一组上下文表示。

2)、解码器开始生成输出序列。初始时,解码器仅有起始符号()。

3)、解码器通过Masked Multi-Head Self-Attention对已生成的序列进行处理。

4)、解码器通过Multi-Head Attention从编码器获取上下文信息。

5)、经过解码器前馈神经网络处理后,解码器生成下一个词。

6)、重复上述过程,直到生成结束符号()或达到最大序列长度。

---------

4、Output Probabilities

经过大模型计算后输出的部分,这里只会输出一个文字,并不会输出全部,所以我们看ChatGPT的输出是一个字一个字往外蹦,就是因为这个原因。

5、Outputs(shifted right)

存储第四步的输出结果,然后会作为下一次大模型计算的输入(依然会进行和第二步一模一样的两步处理,转数字和标记位置),整体是一个递归的过程。

针对第4步和第5步,举个例子,比如第四步输出了一个“中”,然后存储到第五步中,第五步会带着“中”这个字继续进入到大模型中进行计算,计算后第四步会输出一个“国”字,然后继续存储到第五步,此时第五步里面存储了“中国”,第五步下次会带着“中国”作为输入,继续让大模型进行计算。。。如此循环往复,是一个递归的过程。

-------------

Transformer架构的出现,为处理自然语言提供了一种全新的范式,它的设计彻底摆脱了对循环结构的依赖,为现在ChatGPT、文心一言等大模型的出现奠定了基础,可谓意义重大。这些模型利用了Transformer的高效并行处理能力和强大的表示能力,通过在大规模数据集上进行预训练,能够捕获丰富的语言知识,并在多种NLP任务上实现了前所未有的性能。

不过可惜的是,Transformer架构虽然是由谷歌提出的,但是其自身可能还持有怀疑,并未在上面投入过多精力,反而ChatGPT将其发扬光大,开启了人工智能新时代的到来。并且出乎谷歌意料之外的是,它自己都没想到,Transformer架构所表现出来的能力,比其预想的要强大得多,可以处理多模态,而谷歌最早提出只是针对NLP领域。

最后

感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你。

因为这个行业不同于其他行业,知识体系实在是过于庞大,知识更新也非常快。作为一个普通人,无法全部学完,所以我们在提升技术的时候,首先需要明确一个目标,然后制定好完整的计划,同时找到好的学习方法,这样才能更快的提升自己。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

五、面试资料

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下。
在这里插入图片描述

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值