在深度学习中,Transformer架构被广泛使用,而它所基于的注意力机制是最核心的部分,今天我们来讲一讲注意力机制到底是一种什么样的机制。
一、注意力(Attention)框架
19世纪90年代,美国心理学家威廉·詹姆斯(William James)提出了视觉注意力的工作原理类似于聚光灯,他认为:我们在日常中会聚焦一些事物,在这个焦点上可以清楚地看到一些物体;而在这个焦点周围的区域(称为边缘)仍然可见其他一些物体但不是很清楚。基于这个注意力的原理,后来提出了双组件(two‐component)的框架,其中两个非常重要的概念就是:非自主性提示和自主性提示,通过这两种方式都能够引导我们注意力关注焦点的改变。
(1)非自主性提示
我们在所处环境中,时刻都能不由自主地目及一些事物,还有另外一些事物,这时进入视觉系统的物体如果有特别突出的特征,我们就会将注意力的焦点放在其上面,如下图所示:

上面指定了 5 个物品:一份报纸、一篇论文、一杯咖啡、一个笔记本、一本书,其中装有红色咖啡的杯子的特征最突出,我们不自主地看向这些物品时会把注意力焦点放到咖啡杯上面,通过默认的提示选择了所关注的物品,它应该并不受我们意识控制,这就是非自主提示。
(2)自主性提示
自主提示,就是我们有意识地将注意力改变,选择聚集到一个并非是由于特征突出才关注的物体上。当我们可以将注意力焦点改变时,比如从上图显眼突出的红色咖啡杯,将注意力集中到最下面的一本书上,这时相当于强制给了大脑一个暗示,要将注意力焦点转移到一本书上,如下图所示:

使用神经网络来设计注意力机制的框架,就是基于上述非自主性提示和自主性提示的原理,来选择要聚焦的观察对象。具体抽象出来的元素就是最基本的 Key、Query、Value,如下所示:
- Keys(键):在非自主提示下,进入视觉系统的的所有元素的线索,称为 Keys。
- Query(查询):在自主提示下,自主提示的内容或元素的线索,称为 Query。
- Values(值):在由自主提示 Query 限制或者强制下改变注意力的焦点,也就是经过从 Keys 中进行匹配 Query,所得到的进入视觉系统的内容,称为 Values。
注意力机制的框架,可以用下图来表示:

上图表达了:
在注意力机制中,Key 和 Value 是成对的,而 Query 及其查询的结果是前面所有 Keys/Values 对的一个子集。
通过注意力汇聚(Attention Pooling)将 Query(自主性提示)和Keys(非自主性提示)结合在一起,实现对 Values(感官输入)的选择。
二、注意力汇聚(Attention Pooling)
通过上面说明注意力的框架,接下来要理解注意力是如何进行汇聚(Pooling)的,即通过什么样的过程使我们的视觉系统聚焦到了最后的物体上(如上面部分:将没有特别突出特征的一本书作为焦点)。从直观感觉上来说,貌似应该是 Query 与 Keys 越接近的话,注意力越集中,也就是说权重越大。
使用 Nadaraya–Watson 核回归模型,能够非常清楚地解释注意力机制。Nadaraya 和 Watson 提出,根据输入位置来对输出进行加权,则可以得到下面的公式推导:

其中,在推导的第二步代入了高斯核(Gaussian kernel)函数(也可以使用其它的核函数:Boxcar/Constant/Epanechikov,具体说明可以参考这里https://d2l.ai/chapter_attention-mechanisms-and-transformers/attention-pooling.html#kernels-and-data)。
上面公式中,x 对应于 Query,xi 对应于 Key。如果 xi 越是接近 x,则分配给 xi 这个 Key 所对应的结果 yi 的权重就越大。同样可以推导出,一个 Key 越接近给定的 Query,那么分配给这个 Key 对应的 Value 的注意力权重就会越大,即获得了更多的注意力。
上面公式给出了对注意力汇聚(Attention Pooling)的建模:通过使用 x 与 xi 之间关系的来表示注意力的权重 α(x-xi),即使用 Query 与 Key 之间关系表示注意力汇聚(Attention Pooling)。可以看出,它是不带参数的注意力汇聚(Attention Pooling)模型,对应带参数的注意力汇聚(Attention Pooling)模型,也可以同样推导出来,如下所示:

其中,公式中的 w 是参数,这个参数 w 可以通过学习得到,所以使用带参数的注意力模型也能够对注意力汇聚(Attention Pooling)进行同样的建模。
上面,使用高斯核来对 Query 和 Key 之间的关系建模,高斯核指数部分可以视为注意力评分函数(Attention Scoring Function),然后把该数的输出作为后面 Softmax 函数的输入进行计算,这样将得到与 Key 对应的 Value 的概率分布(即注意力权重)。最后,注意力汇聚(Attention Pooling)的输出就是基于这些注意力权重的值的加权平均和。
计算注意力汇聚(Attention Pooling)结果的过程,如下图所示:

前面我们使用 Nadaraya–Watson 核回归模型,使用了一个高斯核 α(q, k) 基于相似度来评估注意力权重,注意力评分函数(Attention Scoring Function)如下所示:

不带指数部分的表达式,如下所示:

进而,注意力汇聚(Attention Pooling)函数可以表示为:

选择不同的注意力评分函数,会导致不同的注意力汇聚(Attention Pooling)操作。
自注意力(Self-Attention)
从形式上看,给定一个由 Token 组成的输入序列 x1, x2,…, xn,该序列的自注意力输出序列为 y1, y2,…, yn,根据注意力汇聚(Attention Pooling)公式:

我们可以得到 yi 的表达式为:

在自注意力中,Query、Keys 和 Values 都来自同一组输入,所以称为自注意力(Self-Attention)。通过下面的动态图像中提供的句子,我们可以理解一下自注意力(Self-Attention)的原理:

当聚焦到前面一列头部的某个 Token 时,它会在后面一列(也是同一个句子中的 Token 序列)找到与该 Token 更相关的其它 Token,或者可以说句子中的每个 Token 都与前面当前所聚焦 Token 有一个相关数值,值越大表示越相关,对应的注意力权重也越大。当然,同一个 Token 与它自己最相关,通常相关值最大。
多头注意力(Multi-Head Attention)
多头注意力(Multi-Head Attention)融合了来自于多个注意力汇聚(Attention Pooling)的不同知识,虽然它使用的是相同的注意力机制,但是能够比单个注意力汇聚(Attention Pooling)学习到更多的行为,比如,在句子内部能够捕获可变范围的多个依赖关系。
下面使用全连接层(FC)作为 Head,多个全连接层依次连接形成多头注意力(Multi-Head Attention),如下图所示:

上图中,在实践中是可以实现对多头注意力的多个 Head 进行并行计算处理的。
为了更形象的说明多头注意力,我们引用一个三维的说明图片(来自 peltarion.com),更直观地理解,如下图所示:

输入序列(如一个句子),其中的每个 Token 都获取到对应的 Word Embedding,然后输入到神经网络中(比如 Transformer 架构的网络)。在这个过程中,每一个 Head 都可以自己独立地去学习得到自己独有的特征,类似于只有一个 Self-Attention 的情况。而多个 Head 并行学习过程中,可能相当于有多个 Self-Attention 的情况,整体来看 Query、Keys、Values 在不同的 Head 上都可能会有部分互相不同,从而学习到的特征也就不同。
比如,在机器翻译任务中,使用多头注意力能够学习并捕捉到输入序列中的不同类型信息:一个注意力头可能学习句子的语法结构,而另一个注意力头可能学习句子中的于语义信息,这样更有利于模型生成准确、自然的翻译结果,从而提高了模型的性能。
如何学习大模型 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%免费】

1万+

被折叠的 条评论
为什么被折叠?



