神经网络算法 – 一文搞懂Attention(注意力)机制
本文隶属于:Transformer 系列动画讲解
- 神经网络算法 – 一文搞懂Transformer
- 神经网络算法 – 一文搞懂 Transformer(总体架构 & 三种注意力层)
- Transformer动画讲解 – 工作原理
- 神经网络算法 – 一文搞懂Embedding(嵌入)
- Transformer动画讲解 – 注意力机制
- 神经网络算法 – 一文搞懂Attention(注意力)机制
- 神经网络算法 – 一文搞懂Transformer中的三种注意力机制
- Transformer动画讲解 – Cross Attention
- Transformer动画讲解 – 单头注意力和多头注意力
- 神经网络算法 – 一文搞懂Self-Attention和Multi-Head Attention
- Transformer动画讲解 – 注意力计算Q、K、V
- Transformer动画讲解 – 数据处理的四个阶段
- Transformer动画讲解 – 多模态
- Transformer动画讲解 – Softmax函数
- Transformer动画讲解 – 多层感知机制
- 神经网络算法 – 一文搞懂FFNN(前馈神经网络)
- 神经网络算法 – 一文搞懂GPT(Generative Pre-trained Transformer)
本文将从Attention的本质、Attention的原理、Attention的应用三个方面,带您一文搞懂Attention(注意力)机制。
一、Attention的本质
核心逻辑:从关注全部到关注重点
-
Attention机制处理长文本时,能从中抓住重点,不丢失重要信息。
-
Attention 机制像人类看图片的逻辑,当我们看一张图片的时候,我们并没有看清图片的全部内容,而是将注意力集中在了图片的焦点上。
-
我们的视觉系统就是一种 Attention机制,将有限的注意力集中在重点信息上,从而节省资源,快速获得最有效的信息。
视觉系统就是一种Attention机制
Transformer:《Attention is All You Need》
-
Transformer模型,完全基于注意力机制,避开了传统的RNN或CNN结构。
-
引入了Self-Attention机制,使模型可以对输入序列中的所有元素进行关联建模。
-
Multi-Head Attention使得模型能够从多个角度捕获输入序列的信息。
-
为后续的大规模预训练语言模型(如BERT、GPT等)奠定了基础。
AI 领域的 Attention 机制:Attention->Transformer->BERT、GPT->NLP
二、Attention的原理
原理初体验:小故事讲解 Attention原理
-
Attention机制好比在图书馆中有大量的书籍,每本书都有特定的编号和内容。当想要了解某个主题(比如“漫威”)时,会查找与这个主题相关的书籍。
-
与“漫威”直接相关的动漫、电影书籍会仔细地阅读(权重高),而与“漫威”间接相关的二战书籍只需要简单浏览一下(权重低)。
-
这个过程就体现了Attention机制的核心思想:根据信息的重要性来分配注意力。
Attention机制:了解漫威
Attention原理:3阶段分解
Attention机制的原理图
-
第一步:query 和 key 进行相似度计算,得到权值。
-
第二步:将权值进行归一化,得到直接可用的权重。
-
第三步:将权重和 value 进行加权求和。
RNN 时代是死记硬背的时期,Attention机制学会了提纲挈领,进化到Transformer,融会贯通,具备优秀的表达学习能力,再到 GPT、BERT,通过多任务大规模学习积累实战经验,战斗力爆棚。
三、Attention的应用
CNN + Attention:
CNN的卷积操作可以提取重要特征,这也算是Attention的思想。但是CNN的卷积感受视野是局部的,需要通过叠加多层卷积区去扩大视野。
CNN叠加Attention方式如下:
-
在卷积操作前做Attention:比如Attention-Based BCNN-1,对两段输入的序列向量进行Attention,计算出特征向量,再拼接到原始向量中,作为卷积层的输入。
-
在卷积操作后做Attention:比如Attention-Based BCNN-2,对两段文本的卷积层的输出做Attention,作为池化层的输入。
-
在池化层做Attention:比如Attention pooling,首先我们用LSTM学到一个比较好的句向量,作为query,然后用CNN先学习到一个特征矩阵作为key,再用query对key产生权重,进行Attention,得到最后的句向量。
LSTM+Attention:
LSTM内部有门控机制,其中输入门选择哪些当前信息进行输入,遗忘门选择遗忘哪些过去信息,这也算是一定程度的Attention。但LSTM需要一步一步去捕捉序列信息,在长文本上的表现会随着步骤的增加而慢慢衰减,难以保留全部的有用信息。
LSTM通常需要得到一个向量,再去做任务,常用方式有:
-
直接使用最后的隐藏层(可能会损失一定的前文信息,难以表达全文)
-
对所有步骤下的隐藏层进行等权平均(对所有步骤一视同仁)。
-
Attention机制,对所有步骤的隐藏层进行加权,把注意力集中到整段文本中比较重要的隐藏层信息。性能比前面两种要好一点,方便可视化观察哪些步骤是重要的。