7.2 Transformer:具有里程碑意义的新模型——自注意力模型

简介: 该文章详细介绍了Transformer模型及其核心组件自注意力模型(Self-Attention Model),解释了其如何克服循环神经网络在处理长序列数据时遇到的长程依赖问题,并促进了深度学习在多个领域的应用发展。


7.2 Transformer:具有里程碑意义的新模型


第7.1章节中我们学习了经典的循环神经网络RNN和其变体长短期记忆网络LSTM。循环神经网络是处理时序数据的主要模型,可以实现很多不同类型的深度学习任务,如:

1)序列到类别任务:输入是时序数据,输出是类别,如文本分类、情感分析任务等。

2)同步的序列到序列任务:输入是时序数据,输出是等长度的序列数据,如图1所示的序列标注任务。

图1 序列标注任务

3)异步的序列到序列任务:输入是序列数据,输出是不等长度的序列数据,如机器翻译、问答系统等。

然而循环神经网络是一个串行建模方式,即下一个时刻t的单元状态依赖t−1时刻的单元状态的输入,这种设计在实际应用时存在两个瓶颈问题:

1)计算过程难以并行,使得训练较大模型常用的并行计算技术无用武之地,无法充分发挥硬件的能力。

2)序列较长时,存在长程依赖的问题(梯度爆炸或梯度消失)。理论上循环神经网络可以建立长时间间隔状态之间的依赖关系,但由于存在长程依赖问题,对于序列前边重要的信息,在序列后续的计算过程中可能会丢失。如在阅读理解任务中,一篇文章最后段落的理解,可能依赖对于该文章开篇的典故的理解,这种与全局信息的关联,显然不是循环神经网络能够捕捉的。循环神经网络会随着扫描序列的进行,更关注距离较近的环境信息,距离更远的信息会逐渐变弱。

2017年,Transformer模型在论文《Attention is all you need》中被提出,字面理解“您只需要一个Attention就可以解决所有问题”。Transformer最开始被应用于机器翻译任务上,取得了SOTA的效果,并推动机器翻译任务达到新的高度,这一切很大程度上要归功于一个非常核心的组件:自注意力模型(Self-Attention Model)。

由于自注意力模型的引入,Transformer不仅摆脱了循环神经网络中串行计算的问题,同时能够在任意时刻,只关注输入序列中对当前计算最重要的信息(更全局化,而不是关注序列中临近的输入),从而缓解了循环神经网络在建模长时间间隔时时面临的长程依赖问题。

Transformer模型是一个具有里程碑意义的模型,它的提出催生了众多基于Transformer网络结构的模型,特别是在2018年预训练模型BERT的提出,其在多项NLP任务上均取得了突破性的进展。自此,不管是学术界,还是工业界均掀起了基于Transformer的预训练模型研究和应用的热潮,并且逐渐从NLP领域延伸到CV、语音等多项领域。例如ViT, DETR, TimeSformer分别在图像分类、检测和视频领域全面超过之前SOTA。

各种基于Transformer结构的变体模型在模型结构、运行效率和不同领域模型应用等方面纷纷被提出,同时各个领域的多项任务指标更是不断被刷新,深度学习领域进入了一个新的时代。

本章内容主要分如下两个部分:

  • 理论解读:介绍Transformer两个核心组件自注意力模型和序列到序列模型(Sequence-to-Sequence,Seq2Seq)以及Transformer的完整结构。
  • 动手实践:使用Transformer的Encoder模块完成新闻分类的任务。

7.2.1 自注意力模型

7.2.1.1 自注意力模型的实现原理

自注意力模型(Self-Attention Model)的设计思想来源于解决循环神经网络在解决长序列数据时遇到的问题:

1)如何计算更全局的信息依赖,而不局限于距离的远近

2)如何使得计算以并行化,而不是只能串行进行?

为了解决如上两个问题,自注意力模型采用查询-键-值(Query-Key-Value,QKV)的模式。对于输入序列X=[x1,...,xL]∈RL×D,每一个输入xi都有三个向量表示:查询向量qi∈RDk向量i∈RDk向量vi∈RDv

其中qiki用来计算序列中其它输入对本输入的影响力,vi是本输入的向量表示,输入xj对输入xi影响力使用 qjki 表示。影响力越大,说明处理输入xi的时候需要重点考虑输入xj的信息。

这样模型在处理当前输入时,它的注意力可以在整个输入序列上不受约束的扫描,从而得到对处理当前内容最有帮助的信息。

基于上面朴素的想法,自注意力模型的网络结构如图2所示。

图2 自注意力模型结构图

模型在处理输入xi时,先计算其它输入对xi的影响(qjki),用αij表示;然后将αij经过Softmax后得到的值α^ij与值向量vi相乘,就得到xi经过整个序列信息影响后的向量表示zi,即

7.2.1.2 自注意力模型严谨的数学表达

假设输入序列为X=[x1,...,xL]∈RL×D,经过线性变换得到xi对应的查询向量q``i``∈R``Dk、键向量ki∈RDk和值向量vi∈RDv。对于整个输入序列X,线性变换的过程可以简写为

其中WQ∈RDk×DWK∈RDk×DWV∈RDv×D可学习的映射矩阵。默认情况下,可以设置映射后的QKV的特征向量维度相同,都为D

图3展示了输入为两个向量序列x1和x2的自注意力的计算过程,需要执行如下步骤:

图3 自注意力计算示意

1)两个输入向量x1和x2经过线性变换,分别获得它们在查询向量Q、键向量K和值向量V

2)使用点积计算,先得出q1在k1和k2的分数α11和α12;再将分数缩放并使用Softmax进行归一化,获得x1的自注意力分布分数 α^11和α^12;最后根据该位置的自注意力分布对v1和v2进行加权平均,获得最终x1位置的输出向量z1 。

3)同理,可以获得x2的自注意力向量z2,即每个输入向量的位置均对应一个自注意力输出的编码向量zi∈R1×Dv

为了加快计算效率,在实际应用时,可以使用矩阵计算的方式一次性计算出所有位置的自注意力输出向量,即

其中Z∈RL×Dv

在自注意力计算过程中,为了防止注意力分布具有较大的方差,导致Softmax的梯度比较小,不利于模型的收敛,在计算过程中除以了一个D,可以有效降低方差,加速模型收敛

相关文章
|
6月前
|
人工智能 自动驾驶 机器人
ICLR 2024:模型选择驱动的鲁棒多模态模型推理
【2月更文挑战第24天】ICLR 2024:模型选择驱动的鲁棒多模态模型推理
74 1
ICLR 2024:模型选择驱动的鲁棒多模态模型推理
|
1月前
|
机器学习/深度学习 自然语言处理 数据建模
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
本文深入探讨了Transformer模型中的三种关键注意力机制:自注意力、交叉注意力和因果自注意力,这些机制是GPT-4、Llama等大型语言模型的核心。文章不仅讲解了理论概念,还通过Python和PyTorch从零开始实现这些机制,帮助读者深入理解其内部工作原理。自注意力机制通过整合上下文信息增强了输入嵌入,多头注意力则通过多个并行的注意力头捕捉不同类型的依赖关系。交叉注意力则允许模型在两个不同输入序列间传递信息,适用于机器翻译和图像描述等任务。因果自注意力确保模型在生成文本时仅考虑先前的上下文,适用于解码器风格的模型。通过本文的详细解析和代码实现,读者可以全面掌握这些机制的应用潜力。
58 3
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
|
2月前
|
机器学习/深度学习 搜索推荐
CIKM 2024:LLM蒸馏到GNN,性能提升6.2%!Emory提出大模型蒸馏到文本图
【9月更文挑战第17天】在CIKM 2024会议上,Emory大学的研究人员提出了一种创新框架,将大型语言模型(LLM)的知识蒸馏到图神经网络(GNN)中,以克服文本图(TAGs)学习中的数据稀缺问题。该方法通过LLM生成文本推理,并训练解释器模型理解这些推理,再用学生模型模仿此过程。实验显示,在四个数据集上性能平均提升了6.2%,但依赖于LLM的质量和高性能。论文链接:https://arxiv.org/pdf/2402.12022
77 7
|
4月前
|
机器学习/深度学习 自然语言处理
彻底改变语言模型:全新架构TTT超越Transformer,ML模型代替RNN隐藏状态
【7月更文挑战第25天】近年来,NLP领域取得显著进展但也面临挑战,如长上下文建模与计算效率的平衡。为此,研究人员提出Test-Time Training (TTT) 模型架构。TTT由多机构合作开发,旨在解决长上下文建模难题及提高计算效率。通过将隐藏状态视为可学习更新的模型,TTT能随输入增长提升表示能力;采用自监督学习更新规则确保线性计算复杂度的同时保持高性能。实验显示TTT在多种NLP任务中表现优秀,尤其在长上下文处理方面超越Transformer。尽管如此,TTT仍面临训练资源需求高及自监督学习鲁棒性等挑战。[论文](https://arxiv.org/abs/2407.04620)
123 5
|
4月前
|
机器学习/深度学习 自然语言处理 并行计算
【YOLOv8改进 -注意力机制】Mamba之MLLAttention :基于Mamba和线性注意力Transformer的模型
YOLOv8专栏探讨了该目标检测模型的创新改进,包括使用Mamba模型的线性注意力Transformer变体,称为MLLA。Mamba的成功关键在于遗忘门和块设计,MLLA结合了这些优点,提升了视觉任务的性能。文章提供全面分析,并提出MLLA模型,其在效率和准确性上超过多种视觉模型。论文和代码可在提供的链接中找到。MLLA Block的代码示例展示了如何整合关键组件以实现高效运算。更多配置详情见相关链接。
|
4月前
|
机器学习/深度学习 自然语言处理 前端开发
大模型问题之神经语言模型与大模型的关系是什么
大模型问题之神经语言模型与大模型的关系是什么
|
5月前
|
机器学习/深度学习 编解码 并行计算
【深度学习】多头注意力机制详解
【深度学习】多头注意力机制详解
155 1
|
6月前
|
机器学习/深度学习 人工智能 PyTorch
LLM 大模型学习必知必会系列(四):LLM训练理论篇以及Transformer结构模型详解
LLM 大模型学习必知必会系列(四):LLM训练理论篇以及Transformer结构模型详解
LLM 大模型学习必知必会系列(四):LLM训练理论篇以及Transformer结构模型详解
|
6月前
|
机器学习/深度学习 自然语言处理
【大模型】在大语言模型的架构中,Transformer有何作用?
【5月更文挑战第5天】【大模型】在大语言模型的架构中,Transformer有何作用?
|
6月前
|
机器学习/深度学习 编解码 算法
助力目标检测涨点 | 可以这样把Vision Transformer知识蒸馏到CNN模型之中
助力目标检测涨点 | 可以这样把Vision Transformer知识蒸馏到CNN模型之中
238 0