Transformer模型详解

本文详细介绍了Transformer模型,从整体结构、编码器-解码器、自注意力机制、词向量和位置向量、多头注意力、残差与归一化、前馈网络等方面进行了详尽阐述,展示了Transformer如何利用注意力机制提升模型性能和并行计算能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Transformer模型详解

前言

Transformer模型现在已经是大语言模型搭建的主流框架,其由谷歌团队在2017年发表的论文《Attention is All You Need》[1706.03762] Attention Is All You Need (arxiv.org)提出,论文相关的Tensorflow代码:tensorflow/tensor2tensor: Library of deep learning models and datasets designed to make deep learning more accessible and accelerate ML research. (github.com)

本文的目的是在弄懂Transformer模型结构、底层逻辑的基础上,进一步理解当前大语言模型的主要技术架构。

参考链接:

Transformer模型详解(图解最完整版) - 知乎 (zhihu.com)

十分钟理解Transformer - 知乎 (zhihu.com)

【Transformer模型】曼妙动画轻松学,形象比喻贼好记_哔哩哔哩_bilibili

The Annotated Transformer (harvard.edu)

The Annotated Transformer的中文注释版(1) - 知乎 (zhihu.com)

The Annotated Transformer(译) - 知乎 (zhihu.com)

【LLM】万字通俗讲解大语言模型内部运行原理 (qq.com)

Large language models, explained with a minimum of math and jargon (understandingai.org)

中国人工智能学会 (caai.cn)

自注意力(Self-attention)清晰解释 (qq.com)

一、Transformer模型整体结构

Transformer是一个利用注意力机制来提高模型训练速度的模型,因其适用于并行化计算以及本身模型的复杂程度使其在精度和性能上都要高于之前流行的循环神经网络。

标准的Transformer结构如下图所示,是一个编码器-解码器架构,其编码器和解码器均有一个编码层和若干相同的Transformer模块层堆叠组成。
在这里插入图片描述

1.1 Encoder-Decoder结构

神经网络均可理解为是一个黑箱模型,Transformer的黑箱主要由两部分组成:EncodersDecoders。以文本翻译任务为例,输入文本会先经过Encoders模块(编码器),该模块对文本数据进行编码;编码后的文本数据再被传入Decoders模块(解码器),该模块对文本数据进行解码得到最终的翻译结果。
在这里插入图片描述
上述的编、解码模块都是由多个编码器组成的,经典的Transformer模型一般都是6个编码器和6个解码器。在编码模块,每个编码器的输出作为下一个编码器的输入;而在解码模块,则是每个解码器的输出结合整个编码模块的输出作为下一个编码器的输入。
在这里插入图片描述

1.2 编解码器组成部分

每个编码器内部又可以分为“self-attention”和“前馈网络”两个部分,每个解码器则分为“self-attention”、“编解码-attention”和“前馈网络”三个部分。
在这里插入图片描述
在这里插入图片描述

二、模型输入

原始文本 → 令牌化(Tokenization) → 嵌入(Embedding) → 模型

Transformer模型的输入是文本经转换(embedding/嵌入)后的向量矩阵,矩阵则是由输入文本中每个单词的表示向量组成,表示向量由每个单词的词向量位置向量相加得到。

2.1 词向量

原始输入文本经Word2Vec等方法进行embedding后的得到的长列表称为单词的词向量。例如单词“cat”的词向量可以表示为:[0.0074, 0.0030, -0.0105, …… , -0.0396, -0.0998, -0.0796, …… , 0.0002]。完整向量长度为300(具体使用的维度根据实际情况确定),点击该链接可以查看完整内容:Semantically related words for “cat_NOUN” (nlpl.eu)

对于使用词向量来表示单词的方法,我们可以类比于经纬度坐标的使用,经纬度构成的向量可以表示一个地点的具体位置,通过计算两个向量的距离或相似性可以用于判断两个地点距离的远近。如:

  • Washington DC is at [38.9, 77]
  • New York is at [40.7, 74]
  • London is at [51.5, 0.1]
  • Paris is at [48.9, -2.4]

我们可以通过38.9接近于40.7以及77接近于74来判断纽约离华盛顿特区很近。同样的道理,巴黎靠近伦敦,但巴黎离华盛顿特区很远。

语言模型采用类似的方法:每个词向量代表了虚拟的“词空间”中的一个点,具有更相似含义的单词会被放置在彼此更靠近的位置。

例如,在词向量空间中,最接近"cat"的词包括"dog"、“kitten"和"rabbit”。
db144a6c293ca609729c81fd534aeb0
使用实数向量(而不是像"C-A-T"这样的字母序列)来表示单词的一个关键优势是,数字使得可以进行字母无法实现的操作。

单词太复杂,无法仅用二维空间表示,因此语言模型使用具有数百甚至数千维度的向量空间,如基础Transformer模型使用的512维,GPT3中的Transformer使用的是12288维。人类无法想象具有如此多维度的空间,但计算机完全能够利用矩阵运算对其进行推理并产生有用的结果。

2.2 位置向量

上述的词向量实现了单词的表示、单词间相似性度量等等,但仍无法解决的一个问题是:单词通常具有多个含义,具体的词义取决于上下文。单词在语句中出现的位置对语义理解非常重要,而且Transformer与循环神经网络不同,它不能利用单词的顺序信息,而是使用文本的全局信息。因此,还需要引入位置向量来表示单词在语句中的相对或绝对位置。

位置向量(Positional Encoding, PE)利用如下公式进行求解:
P E ( p o s , 2 i ) = s i n ( p o s / 1000 0 2 i / d ) PE(pos,2i)=sin(pos/10000^{2i/d}) PE(pos,2i)=sin(pos/100002i/d)

P E ( p o s , 2 i + 1 ) = c o s ( p o s / 1000 0 2 i / d ) PE(pos,2i+1)=cos(pos/10000^{2i/d}) PE(pos,2i+1<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值