本系列文章的初衷是带领大家深入剖析Transformer,逐步揭示其内在机制和工作原理。为什么选择自注意力机制?
Transformer为了激发使用自注意力机制的动力,考虑了三个理想特性。第一个特性是每一层的总计算复杂度。另一个特性是可以并行化的计算量,这可以通过所需的最小顺序操作数来衡量。第三个特性是网络中长期依赖关系的路径长度。
目录
1、起因:序列转换模型
Transformer出来之前,主流的序列转换模型都基于复杂的循环神经网络(RNN)或卷积神经网络(CNN),包含编码器和解码器两部分。当时表现最好的模型还通过注意力机制将编码器和解码器连接起来。
Google Brain 翻译团队通过论文《Attention is all you need》提出了一种全新的简单网络架构——Transformer,它完全基于注意力机制,摒弃了循环和卷积操作。
RNN
循环神经网络**(RNN)、特别是长短时记忆网络(LSTM)和门控循环单元网络(GRU)**,已经在序列建模和转换问题中牢固确立了其作为最先进方法的地位,这些问题包括语言建模和机器翻译。
使用 RNN/LSTM 简单表示传统编码器-解码器架构
这种架构存在一个显著的缺陷:编码器在将输入序列x1, x2, x3, x4转化为单个向量c的过程中,可能会导致信息丢失。由于所有信息都需被压缩至单一的向量中,这无疑增加了信息损失的风险。同时,解码器在解码过程中,需要从这一单一的向量中提取并解析出所需的信息,这无疑是一项极为复杂的任务。
这种局限性在很大程度上限制了模型的理解能力和性能上限。特别是对于处理长输入序列而言,简单的编码器和解码器结构可能难以应对其复杂性,从而影响了模型的整体表现。
Attention + RNN
与普通的编码器-解码器方法不同,注意力机制有助于查看编码器序列中的所有隐藏状态以进行预测。
基于注意力的架构在每个时间步都会关注每个编码器节点的每个隐藏状态,然后在确定哪个隐藏状态信息更丰富后进行预测。
简单与基于注意力的编码器-解码器架构
注意力机制已经成为各种任务中强大序列建模和转换模型的重要组成部分,允许模型在不考虑输入或输出序列中距离的情况下建模依赖关系。然而,在大多数情况下,这种注意力机制是与循环网络结合使用的。
编码器序列中使用的双向 LSTM 以及注意力权重
Self Attention
Transformer模型架构,它摒弃了循环结构,转而完全依赖注意力机制****来建立输入和输出之间的全局依赖关系。
由于自注意力层的计算是基于矩阵乘法的,大部分计算都可以并行化,这样使得Transformer模型允许更多的并行化,并且在八个P100 GPU上仅训练十二小时后,即可达到翻译质量的新水平。
Self- Attention并行计算注意力分数
2、动力:三个理想特性
为了激发Transformer使用自注意力机制的动力,考虑了三个理想特性。第一个特性是每一层的总计算复杂度。另一个特性是可以并行化的计算量,这可以通过所需的最小顺序操作数来衡量。第三个特性是网络中长期依赖关系的路径长度。
自注意力层 vs 循环层 vs 卷积层
表1:对于不同的层类型,最大路径长度、每层复杂度和最小顺序操作数各不相同。其中,n 表示序列长度,d 表示表示维度,k 表示卷积的核大小,r 表示受限自注意力中邻域的大小。
总计算复杂度
在计算复杂度方面,当序列长度n小于表示维度d时,自注意力层比循环层更快,这在机器翻译中先进模型所使用的句子表示中通常是这种情况,例如单词片段和字节对表示。
卷积层通常比循环层更昂贵,高出k倍。然而,可分离卷积可以大大降低复杂度,降至O(k · n · d + n · d^2)。即使k = n,可分离卷积的复杂度也等于我们模型中采用的自注意力层和逐点前馈层的组合。
结论:自注意力层的总计算复杂度更低,计算速度更快。
可并行化计算量
由于自注意力层的计算是基于矩阵乘法的,大部分计算都可以并行化。这使得它在处理长序列时能够高效地利用硬件资源。
循环层的计算是顺序的,因为每个时间步的输出都依赖于前一个时间步的输出。因此,循环层的并行化能力相对较差,特别是在处理长序列时。
卷积层的卷积操作也可以并行化,尤其是在处理图像数据时。然而,与自注意力层相比,卷积层的并行化能力可能受到卷积核大小和步长的限制。
结论:自注意力层的可并行化计算量更大。
最小顺序操作数
同样由于自注意力层的计算是基于矩阵乘法的,因此其最小顺序操作数通常较低。尽管自注意力机制需要计算所有元素之间的注意力分数,但这一过程可以通过矩阵运算高效地实现。
循环层的最小顺序操作数相对较高,因为它需要逐个处理序列中的元素。每个元素的处理都依赖于前一个元素的状态,这导致了顺序操作的增加。
卷积层的最小顺序操作数取决于卷积层的配置和步长。在卷积操作中,虽然每个位置的输出可能依赖于输入的一个局部区域,但整个卷积过程仍然可以在一定程度上并行化,从而减少顺序操作的数量。
结论:自注意力层的最小顺序操作数更低。
3、结果:WMT 2014 翻译任务
在WMT 2014 翻译任务中,Transformer模型在English-to-German和English-to-French翻译任务上取得了优于之前最先进模型的BLEU分数,且其训练成本仅为这些模型的一小部分。这显示了Transformer在处理大规模翻译任务时的高效性和优越性。
表2:与之前的最新模型相比,Transformer在English-to-German和English-to-French的newstest2014测试中实现了更高的BLEU分数,同时训练成本却仅为前者的一小部分。
英语到德语
在WMT 2014英语到德语的翻译任务上,Transformer模型比之前报道的最佳模型(包括模型组合)高出2.0以上的BLEU分数,建立了新的最佳BLEU分数记录,达到了28.4。该模型训练过程在8个P100 GPU上持续了3.5天,训练成本只是这些竞争模型的一小部分。
结论:基于自注意力层的Transformer模型等分最高。
英语到法语
在WMT 2014英语到法语的翻译任务上,Transformer模型取得了41.0的BLEU分数,超越了所有之前发布的单一模型,而且训练成本仅为之前最佳模型训练成本的四分之一以下。用于英语到法语训练的Transformer模型使用的丢弃率Pdrop为0.1,而不是0.3。
结论:基于自注意力层的Transformer模型等分最高。
4、展望:充满期待的多模态
Transformer 在序列转换模型取得了突破性进展,同时对基于注意力模型的未来充满期待,并计划将它们应用于其他任务。 例如:计划将Transformer扩展到涉及非文本输入和输出模态的问题,并研究局部、受限的注意力机制,以有效地处理如图像、音频和视频等大型输入和输出。
Lukasz Kaiser(Transformer八子之一,设计和实现tensor2tensor,取代早期代码库,改进结果,加速研究。),离开Google加入OpenAI,深度参与了GPT系列大模型开发,见证了充满期待的多模态逐渐成为现实。
文本生成-ChatGPT
ChatGPT是一个基于GPT(Generative Pre-trained Transformer)技术的聊天型人工智能模型,而GPT系列模型正是基于Transformer架构的。
ChatGPT通过预训练的方式从大量的语料中学习到通用的语言表示,然后通过微调来适应特定的任务。这使得ChatGPT能够理解用户输入的问题或指令,从中提取关键信息并做出相应的响应,从而提供自然流畅的对话体验。
图片生成-DALL-E
Dall-E是一款专注于图像生成领域,它能够将文本描述转化为高质量、富有创意的图像。这一功能得以实现,很大程度上依赖于Transformer架构。
在Dall-E中,Transformer模型被用于学习如何从文本描述中生成相应的图像标记。在生成图像时,Dall-E会接收一个文本描述作为输入,并根据训练好的Transformer模型生成一系列图像标记。
视频生成-Sora
Sora模型是一种文本到视频的生成模型,采用了扩散型变换器(Diffusion Transformer)作为其基础架构,这是一种结合了Transformer架构和扩散模型的深度学习模型。
Sora模型利用Transformer架构的并行化处理能力,提高了生成视频的效率。这使得Sora模型能够处理复杂的场景、角色表情和镜头运动,甚至在单个生成的视频中创建多个镜头和角色,同时保持角色和视觉风格的一致性。
5、总结
本文全面概述了Transformer为什么选自注意力机制。因为自注意力机制能更好地处理长序列,计算起来简单,能并行计算,顺序操作更少。在翻译任务中,基于自注意力层的Transformer模型做得很好,还更省钱。同时,GPT已经将自注意力机制和Transformer模型用在更多地方,比如处理图片和视频,将多模态的展望成为现实。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。