几句话说清楚Transformer是什么

写在前面

Transformer有多牛逼不用多说,时隔7年我们再来看看论文原文,看看这篇深刻改变世界的文章都说了什么。当然逐字逐句解读已经意义不大,我们只列考点。

Transformer是文章"Attention is All You Need"中提出的一种新的神经网络架构,最初用在机器翻译,该论文由当时谷歌的Vaswani 等7人(截止2024年的今日,7人已经全部离职)于 2017 年在 NeurIPS 2017 上发表的。

Transformer分两半。encoder延伸出判别模型BERT(Bidirectional Encoder Representations from Transformers),作者谷歌,主攻文本分类、NER、摘要等判别工作;另一半decoder延伸出生成模型GPT(Generative Pre-trained Transformer),由OpenAI开发,GPT从1演变到3,进而到现在的ChatGPT,已经家喻户晓。

现在的LLM基础架构GPT,当然此外还有最近很火的mamba和昙花一现的rwkv,但都还没有形成气候。在可见的未来,GPT仍然会统治LLM相当长的时间。

一、Transformer要解决的问题

1.长距离依赖问题

传统序列模型的循环结构造成了“遗忘”的发生, 简单地说,越靠后的token权重越大。为了解决这个问题,Attention机制诞生了。它在每个解码步中计算注意力分数并聚合输入序列的相关信息,attention机制可以减轻RNN的长期依赖问题。

Attention机制并不是Transformer发明的,比如Seq2Seq就就可以使用Attention机制。

图片

图1

在传统Seq2Seq结构中,encoder把所有的输入序列都编码成一个统一的语义向量Context,然后再由Decoder解码。

由于context包含原始序列中的所有信息,它的**长度就成了限制模型性能的瓶颈。**如机器翻译问题,当要翻译的句子较长时,一个Context可能存不下那么多信息,“遗忘”就发生了,造成精度的下降。

使用了Attention机制后,“遗忘”的问题得到了缓解,但只是缓解,不是解决。因为循环的结构,模型不可能平等的看待序列中每一个token。而且注意力主要用于解码阶段,即每个解码步时,根据注意力分数计算hidden states,编码时还是RNN结构,因此这种注意力机制并不彻底。

2.序列处理瓶颈

无论怎么修改,传统的序列模型都是基于循环的(RNN、LSTM、seq2seq等),这种循环形式可以将token的位置与时间进行对齐,天然的带有位置信息,但是不能并行,在处理较长的序列时变得很慢,处理速度成为模型的瓶颈。

为了解决上述两个问题,Transformer做了如下工作。

二、整体结构

结构图再熟悉不过:

图片

图2

1.模型不使用循环结构,输入Inputs是整个的token序列,输出也是直接的结果。模型可以并行,解决了序列处理瓶颈的问题。

2.Transformer使用了编解码结构,encoder将输入的token序列(x1,…,xn)映射到一个连续表示的序列z,decoder根据z输出结果序列(y1,…,ym)。

3.encoder和decoder全都使用attention机制,堆叠Self-attention和全连接层,它们分别由6个结构相同的层组成;

4.encoder每个层有两个子层,第一层是一个多头自注意机制,第二层是一个全连接。两个子层使用残差连接,然后进行层归一化。也就是说,每个子层的输出是LayerNorm(x +子层(x)),其中子层(x)是由子层本身实现的函数。为了方便这些剩余的连接,模型中的所有子层以及嵌入层都会产生尺寸数据模型= 512的输出。

5.decoder每个层有三个子层,前两个和encoder结构非常相似。第三个子层对encoder的输出执行多头注意。与编码器类似,我们在每个子层周围使用剩余连接,然后进行层归一化。第三层的自注意子层使用掩码,以防止位置关注后续的位置,确保了对位置i的预测只能依赖于小于i的位置的已知输出。

三、自注意力机制

为了解决传统Attention机制的不足(不能并行和“遗忘”),Transformer发明了Self-Attention机制。Self-Attention是并行的,而且能够在一个步骤中计算整个输入序列中任意两个位置之间的依赖关系,通过直接捕捉全局依赖关系(不依赖逐步传播),同时在encoder中也使用了注意力机制,提高了捕捉长距离依赖的能力。有效的解决了上述两个问题。

1.Scaled Dot-Product Attention

输入经过三个全连接分别得到QKV,然后计算具有所有K和Q的点积,将每个键除以图片,并用一个softmax函数来获得这些值的权重,得到的就是注意力分数。再讲注意力分数施加到值向量(V),得到注意力的输出,公式如下:

图片

对于维度较大的大值,点积的结果会越来越大,将softmax函数推到具有极小梯度的区域。为了抵消这种效应,作者除以图片来缩放点积。关于Scaled Dot-Product Attention的更多信息,请看这里

图片

2.Multi-Head Attention

多头注意可以让模型同时关注来自不同位置的不同表示子空间的信息。从而提高模型的表达能力、增加鲁棒性。

类比多层卷积更好理解,多层卷积网络中,每个卷积层提取不用的特征。多头就相当于多个卷积层,每个头相当于每个卷积层。示意图如下,可以看到多头的数量h,默认64:

图片

四、Position-wise Feed-Forward Networks(FFN)

encoder和decoder的每个层都包含FFN,通常由两个线性变换和一个激活函数(如ReLU)组成。公式如下:

图片

FNN可以独立处理每个位置的特征:因为它是逐位置(position-wise)应用的,相当于每个token都会有对应的一套FFN(默认64个),它在序列中的每个位置独立地应用同一个全连接网络。这意味着FFN不会在不同位置之间引入交互,这种独立处理方式有助于模型保持位置之间的独立性,同时增强每个位置上的特征表示。

增强表示能力:FFN通过非线性变换来增强模型的表示能力。每个位置上的表示都会经过一系列非线性函数的变换,从而提升模型在该位置上的特征表达能力。

引入非线性特征变换:由于FFN包含激活函数(如ReLU),它引入了非线性变换。这种非线性变换有助于模型学习更复杂的模式和特征,而不仅仅是线性变换所能捕捉到的简单模式。

五、位置编码

由于Transformer不是循环结构的,为了使模型具有序列的特性,必须注入关于序列中token的相对或绝对位置的信息。为此,我们在encoder和decoder的底部向输入嵌入中添加“位置编码”。公式如下:

图片

其中pos是位置,i是维度。也就是说,位置编码的每个维度都对应于一个正弦曲线。波长形成了一个从2π到10000·2π的几何级数。根据题的介绍请看这里

六、总结

Transformer不是循环结构,是端到端的。

Transformer是encoder和decoder结构的。

重点是Transformer使用了Self-Attention机制。

Self-Attention机制是并行的,同时在encoder中也使用了注意力机制,提高了捕捉长距离依赖的能力。

Self-Attention的核心是点积注意力(Scaled Dot-Product Attention);并且使用Multi-Head增加了模型的表示能力。

使用了基于三角函数的位置编码。

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 的正确特征了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值