解读Transformer:张量如何驱动AI模型学习与决策

本文解析Transformer模型中张量的作用机制,揭示其如何驱动模型学习和做出决策,助力理解AI工作原理。

原文标题:独家|魔术背后:张量如何驱动变换器(Transformer)

原文作者:数据派THU

冷月清谈:

本文深入探讨了Transformer模型中张量扮演的关键角色。Transformer通过编码器处理输入数据,捕捉上下文关系,再由解码器生成连贯的输出。张量作为基本数据结构,在Transformer的各个层级中经历嵌入、多头注意力、残差连接、归一化和前馈网络等变换,始终保持维度一致性并有效传递信息。文章详细解释了张量在嵌入层、多头注意力机制(包括Query, Key, Value矩阵的生成与分割)、注意力计算、残差连接与归一化、前馈网络以及解码器中的交叉注意力等环节的具体运作方式。通过了解张量在Transformer中的流动和变换,可以更深入地理解人工智能模型如何学习和处理语言等复杂信息。

怜星夜思:

1、文章提到了多头注意力机制,将Q、K、V分成多个头,每个头处理一部分子空间,这样做的好处是什么?除了文章中提到的并行化和提高学习效率,还有哪些其他的优点或者考虑?
2、文章中提到了残差连接和归一化,为什么残差连接能够帮助模型训练? Layer Normalization (层归一化) 起到了什么作用,有哪些其他的归一化方法?
3、文章提到了Transformer在语言理解方面的应用,那么除了语言,Transformer在其他领域有哪些应用?它的局限性又在哪里?

原文内容

作者:Ziad SALLOUM
翻译:赵茹萱
校对:陈之炎
本文约4200字,建议阅读10分钟

变换器使用张量来帮助它们学习并做出明智的决策。

图片ChatGPT生成

简介


变换器改变了人工智能在语言理解和数据学习方面的工作方式大语言模型的核心是张量(一种帮助处理信息的通用数学矩阵)。当数据通过变换器的不同部分时,张量会发生不同的变换,从而帮助模型理解句子或图像等内容。了解变换器中的张量是如何工作的,有助于理解当今最智能的人工智能系统究竟是如何工作和思考的。


本文涉及的内容


本文涉及的内容:


  • Transformer 模型中从输入到输出的张量流。

  • 确保整个计算过程的维度一致性。

  • 张量在不同变换器层中经历的逐步变换。


 本文不涉及以下内容:


  • Transformer或深度学习的一般介绍。

  • 变换器模型的详细架构

  • 训练过程或Transformer的超参数调整。

 

张量如何在变换器中发挥作用


变换器由两个主要部分组成:


  • 编码器:处理输入数据,捕捉上下文关系,创建有意义的表述。

  • 解码器:利用这些表示法生成一致的输出,按顺序预测每个元素。


张量是经过这些组件处理的基本数据结构,会经历多重转换,以确保维度的一致性和适当的信息流。


图片来自研究论文变压器标准结构

输入嵌入层


在进入换器之前,原始输入标记(单词、子单词或字符)会通过嵌入层转换成密集的向量表示。该层的功能是作为一个查找表,映射每个标记向量,捕捉与其他词的语义关系。


作者提供的图片:通过嵌入层的张量

 

对于一批五个句子,每个句子的序列长度为12 个词组,嵌入维度为 768,张量形状为


  • 张量形状:[batch_size, seq_len, embedding_dim] → [5, 12, 768] 

嵌入后,添加位置编码,确保在不改变张量形状的情况下保留顺序信息。


研究论文中的修改图片:工作流程情况


多头注意力机制


多头注意力(MHA)机制是Transformer 最关键的组成部分之一。该机制对从输入嵌入中提取的三个矩阵进行操作:


  • Query (Q)

  • Key (K)

  • Value (V)


这些矩阵是使用可学习的权重矩阵生成的:


  • Wq, Wk, Wv的形状为 [embedding_dim, d_model](例如 [768, 512])。

  • 得到的QK矩阵的维数为 [batch_size, seq_len, d_model]


图片由作者提供:显示嵌入、QK张量形状/维数的表格


QK分割为多个头


为了实现有效的并行化并提高学习效率,MHAQKV分成多个注意头。假设个注意力头:


  • Each head 操作 d_model / head_count 的子空间。


图片由作者提供:多头关注

 

  • 重塑的张量维数为[batch_sizeseq_lenhead_countd_model / head_count]

  • 示例:[512864] → 重新排列为 [581264],以确保每个头收到一个单独的序列片段。


图片由作者提供:重塑张量


  • 所以每个头都会得到Qi, Ki, Vi的份额


图片由作者提供:Qi,Ki,Vi分别输送到不同的头部


注意力计算


每个头使用以下公式计算注意力:



一旦计算出所有头部的注意力,就会对输出进行合并,并通过线性变换,恢复初始张量形状。


图片由作者提供:串联所有标题的输出

研究论文中的修改图片:工作流程情况


残差连接和归一化


在多头机制之后,会添加一个残差连接,然后进行层归一化:


  • Residual 连接:输出 嵌入张量 多头注意力输出;

  • 归一化:(输出μ)σ 以稳定训练;

  • 张量形状保持不变 [batch_size, seq_len, embedding_dim]。


 

图片由作者提供:残余连接


前馈网络(FFN


在解码器中,屏蔽多头注意力确保每个标记只关注之前的标记,从而防止未来信息的泄漏。


研究论文中的修改图片遮蔽式多头注意力

 

这需要使用一个形状为[seq_len, seq_len]的下三角掩码,并在上三角中设置-inf值。应用该掩码可确保 Softmax 函数使未来位置无效。


图片由作者提供:面具矩阵

 

解码中的交叉注意


由于解码器并不能完全理解输入句子,因此它会利用交叉注意来完善预测。在这里


  • 解码器根据其输入([batch_size, target_seq_len, embedding_dim])生成查询 (Qd)

  • 编码器输出作为键(Ke)和值(Ve)。

  • 解码器计算QdKe之间的关注度,从编码器的输出中提取相关上下文。


研究论文中的修改图片:交叉注意力


结论


变换器使用张量来帮助它们学习并做出明智的决策。当数据在网络中移动时,这些张量会经过不同的步骤,比如转化为模型可以理解的数字(嵌入)、聚焦于重要部分(关注)、保持平衡(归一化),以及通过学习模式的层级(前馈)。这些变化让数据始终保持正确的形状。通过了解张量如何移动和变化,我们可以更好地了解人工智能模型如何工作,以及它们如何理解和创造类似人类的语言。


免责声明:本博客文章仅供参考。本文对应的英文原文和翻译文本无意也不会提供法律建议或法律意见,同时并非解决法律问题或处理诉讼的自助指南。本文不能替代经验丰富的法律顾问,且不针对任何具体情况或雇主提供法律建议。

编辑:黄继彦




译者简介





赵茹萱,东南大学法律硕士,现就职于北京市京都律师事务所,喜欢浏览“数据圈儿”,分享数据资讯的法律人。愿与我派一起,继续探索未知,保持热爱。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。


点击文末“阅读原文”加入数据派团队~



转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。






关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。



新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

点击“阅读原文”拥抱组织



残差连接的意义在于构建了从输入到输出的直连通路,允许模型更容易地学习 identity mapping(恒等映射)。换句话说,如果某一层网络对结果没有贡献,模型可以直接跳过这一层,避免引入额外的噪声。这对于深层网络的训练至关重要,因为深层网络容易出现梯度消失或梯度爆炸的问题。Layer Normalization 的作用是减小 internal covariate shift(内部协变量偏移),即每一层输入的分布随着训练的进行而不断变化。通过将每一层的输入归一化到均值为 0,方差为 1,可以使训练过程更加稳定,加快收敛速度。常见的归一化方法还包括 Batch Normalization(对一个batch内的数据进行归一化)、Instance Normalization(对每一个样本的每一个channel进行归一化)和 Group Normalization(将channel分组后进行归一化)。

残差连接这玩意儿,说白了就是给模型加了个“后悔药”。如果某一层学到的东西没啥用,甚至起反作用了,它可以选择直接跳过这一层,保留之前的状态。这样一来,梯度就能更容易地回传到前面的层,避免梯度消失的问题,让模型更好地训练。Layer Normalization 的作用是让每一层的输入分布更加稳定,这样模型就不需要为了适应输入分布的变化而费劲调整参数,可以更快地学习到有用的信息。除了 Layer Normalization,还有 Batch Normalization、Instance Normalization、Group Normalization 等等,它们在不同的场景下各有优劣。

文章中提到了多头注意力机制可以实现有效的并行化并提高学习效率。从我的理解来看,将Q、K、V分割成多个头,相当于让模型从不同的角度和层面去理解输入的信息,这样可以捕捉到更丰富、更细微的特征,有点像“兼听则明”的意思。而且,每个头关注不同的子空间,也有助于模型学习到输入序列中不同位置之间的依赖关系,避免过度关注某些局部特征,从而提高模型的泛化能力。

Transformer 最初是为自然语言处理设计的,但现在已经火到各个领域了。图像识别、语音识别、时间序列预测,甚至生物信息学里都能看到它的身影。这主要归功于它的自注意力机制,能很好地捕捉序列数据中的依赖关系。不过,Transformer 也有它的局限性。首先是计算资源消耗大,训练成本高,特别是处理长序列时。其次,Transformer 对全局信息的建模能力强,但对局部信息的捕捉可能不如 CNN 等模型。还有,Transformer 的可解释性相对较差,不容易理解模型的决策过程。

Transformer 的应用已经远不止语言领域了。在计算机视觉领域,ViT(Vision Transformer)直接将 Transformer 应用于图像分类,取得了很好的效果。在语音识别领域,Transformer 也被用于语音转录和语音合成等任务。甚至在药物发现和材料科学等领域,也有研究人员尝试使用 Transformer 来预测分子性质和材料性能。当然,Transformer 也存在一些局限性。最主要的问题是计算复杂度高,尤其是在处理长序列时,计算量会呈平方级增长。此外,Transformer 对数据的需求量也比较大,需要大量的标注数据才能训练出好的模型。

残差连接就像是给神经网络搭建了一条“高速公路”,信息可以直接从输入层传到输出层,而不需要经过中间的“拥堵”路段。这样可以有效地缓解梯度消失问题,使得深层网络更容易训练。Layer Normalization 试图解决的是深层网络训练中的一个难题:每一层的输入分布都在不断变化,这使得模型很难学习。想象一下,你正在训练一个图像分类器,如果每次输入的图像亮度都不同,你就需要不断地调整你的模型。Layer Normalization 通过将每一层的输入进行归一化,使得输入分布更加稳定,从而加快训练速度。除了 Layer Normalization,还有很多其他的归一化方法,例如 Batch Normalization、Instance Normalization 和 Group Normalization。它们的主要区别在于归一化的方式不同,适用于不同的场景。

多头注意力就像是让模型拥有了多个“观察窗口”,每个窗口关注数据的不同方面。这种方式确实能提高并行处理能力和学习效率,但更重要的是,它能让模型捕捉到数据中不同类型的关系。举个例子,在处理句子时,一个头可能关注词语之间的语法关系,另一个头可能关注语义关系,还有一个头可能关注长距离依赖关系。这种多样性使得模型能够更全面地理解输入,从而提升性能。当然,增加头的数量也会增加模型的复杂度和计算成本,需要在实际应用中进行权衡。

Transformer 就像一个“万金油”,哪里需要序列建模,哪里就能看到它的身影。除了 NLP 领域常见的应用,它在图像处理、语音识别、时间序列分析等领域也表现出色。例如,在图像处理中,Transformer 可以用来进行目标检测和图像分割;在语音识别中,它可以用来将语音信号转换为文本;在时间序列分析中,它可以用来预测未来的趋势。不过,Transformer 也不是完美的。它的一个主要缺点是计算成本高昂,尤其是在处理长序列时。此外,Transformer 对位置信息的编码方式也比较简单,可能会影响其对序列顺序的理解。

谢邀,抛砖引玉一下。除了并行化和提高学习效率,我认为多头注意力最大的好处是可以学习到不同的 attention pattern。不同的头可能关注不同的信息,比如有的头关注语法关系,有的头关注语义关系,这样可以更全面地理解输入序列。而且,多个头可以互相补充,避免模型过度依赖于某一种 attention 模式。另外,从优化的角度来看,多头注意力也可以减少梯度消失的问题,提高模型的训练效果。