说明:
**💡💡💡本文后续更新和完善将在新账号展开,请移步新地址:
深度学习笔记——Transformer
**
历史文章
机器学习
机器学习笔记——损失函数、代价函数和KL散度
机器学习笔记——特征工程、正则化、强化学习
机器学习笔记——30种常见机器学习算法简要汇总
机器学习笔记——感知机、多层感知机(MLP)、支持向量机(SVM)
机器学习笔记——KNN(K-Nearest Neighbors,K 近邻算法)
机器学习笔记——朴素贝叶斯算法
机器学习笔记——决策树
机器学习笔记——集成学习、Bagging(随机森林)、Boosting(AdaBoost、GBDT、XGBoost、LightGBM)、Stacking
机器学习笔记——Boosting中常用算法(GBDT、XGBoost、LightGBM)迭代路径
机器学习笔记——聚类算法(Kmeans、GMM-使用EM优化)
机器学习笔记——降维
深度学习
深度学习笔记——优化算法、激活函数
深度学习——归一化、正则化
深度学习——权重初始化、评估指标、梯度消失和梯度爆炸
深度学习笔记——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总
深度学习笔记——卷积神经网络CNN
深度学习笔记——循环神经网络RNN、LSTM、GRU、Bi-RNN
深度学习笔记——Transformer
深度学习笔记——3种常见的Transformer位置编码
深度学习笔记——GPT、BERT、T5
深度学习笔记——ViT、ViLT
深度学习笔记——DiT(Diffusion Transformer)
深度学习笔记——多模态模型CLIP、BLIP
深度学习笔记——AE、VAE
深度学习笔记——生成对抗网络GAN
深度学习笔记——模型训练工具(DeepSpeed、Accelerate)
深度学习笔记——模型压缩和优化技术(蒸馏、剪枝、量化)
文章目录
- 历史文章
- 机器学习
- 深度学习
- 深度学习笔记——优化算法、激活函数 [深度学习——归一化、正则化](https://blog.csdn.net/haopinglianlian/article/details/143835273) [深度学习——权重初始化、评估指标、梯度消失和梯度爆炸](https://blog.csdn.net/haopinglianlian/article/details/143835336) [深度学习笔记——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总](https://blog.csdn.net/haopinglianlian/article/details/143835406) [深度学习笔记——卷积神经网络CNN](https://blog.csdn.net/haopinglianlian/article/details/143841327) [深度学习笔记——循环神经网络RNN、LSTM、GRU、Bi-RNN](https://blog.csdn.net/haopinglianlian/article/details/143841402) [深度学习笔记——Transformer](https://blog.csdn.net/haopinglianlian/article/details/143841447) [深度学习笔记——3种常见的Transformer位置编码](https://blog.csdn.net/haopinglianlian/article/details/144021458) [深度学习笔记——GPT、BERT、T5](https://blog.csdn.net/haopinglianlian/article/details/144092300) [深度学习笔记——ViT、ViLT](https://blog.csdn.net/haopinglianlian/article/details/144093215) [深度学习笔记——DiT(Diffusion Transformer)](https://blog.csdn.net/haopinglianlian/article/details/144094540) [深度学习笔记——多模态模型CLIP、BLIP](https://blog.csdn.net/haopinglianlian/article/details/144096378) [深度学习笔记——AE、VAE](https://blog.csdn.net/haopinglianlian/article/details/144097222) [深度学习笔记——生成对抗网络GAN](https://blog.csdn.net/haopinglianlian/article/details/144103764) [深度学习笔记——模型训练工具(DeepSpeed、Accelerate)](https://blog.csdn.net/haopinglianlian/article/details/144107447) [深度学习笔记——模型压缩和优化技术(蒸馏、剪枝、量化)](https://blog.csdn.net/haopinglianlian/article/details/144108373)
- 初识Transformer
- 编码解码的过程
初识Transformer
Transformer 是一种革命性的神经网络架构,最早由 Vaswani 等人在 2017 年提出,它彻底改变了自然语言处理(NLP)的领域。与传统的递归神经网络(RNN)和长短期记忆网络(LSTM)不同,Transformer不依赖于序列的时间步 ,而是通过注意力机制 并行处理整个输入序列。它在诸如机器翻译、文本生成和语言模型等任务中表现出色。下面详细介绍 Transformer 的原理、结构和应用。
1. 编码器-解码器架构
Transformer 的架构由两个部分组成:
- 编码器(Encoder):将输入序列 -> (映射) -> 连续的表示空间。
- 解码器(Decoder):根据编码器的输出 ->生成目标序列。
编码器和解码器均由多个相同的层堆叠而成。每层都有两个主要组件:
- 多头自注意力机制(Multi-Head Self-Attention Mechanism)
- 前馈神经网络(Feed-Forward Neural Network)。
解码器的额外结构
解码器除了与编码器相同的结构外,还多了一个编码器-解码器注意力机制,它在生成每个目标时依赖于编码器的输出。
2. 自注意力机制(Self-Attention Mechanism)
Transformer 的核心是自注意力机制,它能够捕捉输入序列中的全局依赖关系,并且不需要像 RNN 那样逐步计算。
解码器中的注意力机制的2点特殊
- 编码器-解码器注意力机制:解码器中,不仅包含自注意力机制,还包括一个与编码器输出交互的注意力机制,它允许解码器在生成每个词时参考编码器的上下文信息。
- 未来遮蔽:确保在生成第 t 个词时,只能看到之前生成的词,而看不到未来的词。
3. 位置编码(Positional Encoding)
因为 Transformer 不依赖输入序列的顺序信息,它需要显式地将位置信息引入模型中。为此,Transformer 使用位置编码(Positional Encoding)来为每个输入向量添加位置信息。
位置编码通过正弦和余弦函数生成,并按照序列的索引位置注入到每个词向量中:
其中 (
p
o
s
pos
pos ) 是词在序列中的位置,(
i
i
i ) 是词向量的维度索引,(
d
d
d ) 是词向量的总维度。
4. 前馈神经网络(Feed-Forward Neural Network, FFN)
在每个编码器和解码器层中,除了自注意力机制外,还包括一个前馈神经网络。每个时间步上的前馈网络是独立应用的,它的公式如下:
5. 残差连接和层归一化(Residual Connections and Layer Normalization)
Transformer 的每个子层(如自注意力机制或前馈神经网络)后面都有一个残差连接(Residual Connection)和层归一化(Layer Normalization),确保在网络训练的过程中信息可以直接传递,缓解深层网络中的梯度消失问题。
残差连接的形式为:
6. Transformer 的应用
Transformer 由于其并行计算的优势,以及在处理长距离依赖关系上的优越表现,在许多任务中取得了卓越的成果:
- 机器翻译:例如谷歌翻译。
- 文本生成:例如 OpenAI 的 GPT 系列模型。
- 文本摘要:自动生成文档摘要。
- 语言建模:如 BERT、GPT 及其变体,用于各种 NLP 任务。
- 图像处理&多模态:ViT、ViLT。
7. Transformer 的优势
- 并行处理:不依赖时间步顺序,可以并行处理整个序列,因此训练速度更快,特别适合大规模数据集。
- 长距离依赖处理能力强:注意力机制,能够轻松处理序列中远距离的依赖关系,而不像 RNN 或 LSTM 那样受限于序列的长度。
- 广泛的应用:Transformer 已成为 NLP 的标准架构,并被扩展到其他领域,如图像处理(Vision Transformer, ViT)和语音处理等。
编码解码的过程
编码过程(Encoder)
主要任务是将输入序列转换为一种捕捉全局上下文信息的表示。这一过程确保输入序列中的每个元素(如文本中的单词或句子中的其他单位)都能够有效地“理解”整个输入序列中的其他元素,从而为后续任务(如机器翻译、文本生成等)提供丰富的上下文信息。
输入数据的准备(输入数据向量化+位置编码)
其中
x
e
m
b
e
d
d
i
n
g
x_{embedding}
xembedding是输入数据向量化;
P
E
p
o
s
i
t
i
o
n
PE_{position}
PEposition是位置编码,具体实现如下: