Transformer是什么
Transformer是目前最流行的特征抽取器,在大部分的场景中已经取代了RNN。 从BERT、T5到GPT其基座都是Transformer, 不管哪一个的出现都在相应领域引发了轰动。
Transformer vs RNN
RNN
- RNN不能并行。RNN会依赖前一时刻输出的隐层状态,导致RNN必须一步一步走完,无法并行结果是让运行变慢
- RNN词间距过长。词间距是两个词相隔的距离,当距离过长可能会导致梯度消失或梯度爆炸等问题。
TRANSFORMER
- transformer并行运行且速度极快;
- transformer每个词之间的词间距都是1;
上述两点奠定了transformer是目前最流行的特征抽取器。
Transformer理解
从整个深度学习流程来描述Transformer所处的工作位置,我们可以简单的把Transformer看成一个盒子:
将上述的盒子展开后会发觉transformer是由encoder与decoder构成,而每个encoder与decoder又由6个相同的层组成,如此盒子变成如下形式:
后续,我们陆续展开transformer内部的结构加以分析与阐述
总架构图
大部分神经序列转导模型都有一个编码器-解码器结构。 编码器输入序列用x(x1,…,xn)表示,输出用z(z1,…,zn)有示。 根据z解码器生成符号的一个输出序列有用y(y1,…,ym)表示 ,一次一个元素。 在每一步中,模型都是自回归的,当生成下一个时,使用先前生成的符号作为附加输入。
transformer也遵循了encoder-decoder架构,encoder和decoder都使用self-attention和Feed Forward。论文《Attention Is All You Need》中给出transformer的模型架构图如上所示,其中Encoder和Decoder都包含6个block,这6个block除了参数各自随机初始化外结构相同基本相同。
Encoder:每一层都有两个子层。
- 第一层是一个Multi-Head Attention(多头注意机制)
- 第二层是简单的、位置完全连接的Feed Forward(Feed Forward Neural Network 前馈神经网络),由两个线性变换组成,之间有一个ReLU激活。
- 每个子层会叠加一个Add&Norm, 即采用残差连接,接着进行特征归一化(标准化),每个子层的输出都是LayerNorm(x +Sublayer(x)),其中Sublayer(x) 是由子层本身实现的函数。
Decoder: 除了每个编码器层中的两个子层之外,解码器还插入第三个子层:
- 第一层是一个Masked Multi-Head Attention,妈注意力加入了masked 以防止位置关注到后面的位置。这种掩码结合将输出嵌入偏移一个位置,确保对位置的预测 i 只能依赖小于i的已知输出
- 第二层是 (Cross) Multi-Head Attention,该层对编码器堆栈的输出执行multi-head attention
- 与编码器类似,在每个子层都叠加一个Add&Norm, 即采用残差连接,接着进行特征归一化(标准化)。
为了方便残差连接,Transformer模型中的所有子层以及嵌入层产生的输出维度都为dmodel=512d_{model} = 512dmodel=512。
输入
transformer的输入用到了的嵌入(Embedding)将输入词符和输出词符转换为维度为dmodeld_{model}dmodel的向量。
encoder的输入层和decoder的输入层是一样的结构,都是token embedding(词向量)+ positional embedding(位置向量) , 得到最终的输入向量。
其中Word Embedding(词嵌入) 负责将自然语言转化为与其对应的独一无二的词向量表达, 而Position Embedding(位置嵌入) 表示单词出现在句子中的位置。理由是Transformer是使用全局信息,无法捕捉到序列顺序信息的,需要使用Position Embeddin表示句子位置。关于位置编码transform采用了正弦和余弦函数,公式如下:
注意力机制
Attention函数可以描述为将query和一组key-value对映射到输出,其中query、key、value和输出都是向量。 输出为value的加权和,其中分配给每个value的权重通过query与相应key的兼容函数来计算。
query、key、value 在后面的章节中会描述为 Q、K、V
多头注意力机制
图中红色圈中的部分为 Multi-Head Attention,是由多个Self-Attention组成的,可以看到 Encoder 包含一个 Multi-Head Attention,而 Decoder 包含两个 Multi-Head Attention 。
多头注意力机制的内部结构:
Scaled Dot-Product Attention
从多头注意力的内部结构我们可以看到其核心是由H个"Scaled Dot-Product Attention"组成的注意力层,该层我们称自注意力层(self-attention)", 输入由query、dk维的key和dvquery、d_k 维的key和 d_vquery、dk维的key和dv维的value组成。我们计算query和所有key的点积、用dk\sqrt{d_k}dk 相除,然后应用一个softmax函数以获得值的权重。
数学公式如下:
注意力总结
FeedForward(前馈神经网络)
在进行了Attention操作之后,Encoder和Decoder中的每一层都包含了一个完全连接前馈网络,对每个position的向量分别进行相同的操作,由两个线性变换组成,之间有一个ReLU激活。:
FEN(x)=max(0,xW1+b1)W2+b2FEN(x) = max(0,xW_1 + b_1)W_2 + b_2FEN(x)=max(0,xW1+b1)W2+b2
Encoder(编码器)
Encoder由2部分组成: 多头注意力、前馈神经网络
Decoder(解码器)
Decoder结构与Encoder相似,但是存在一些区别。
- Decoder 包含两个 Multi-Head Attention 层。
- 第一个 Multi-Head Attention 层采用了 Masked 操作。
- 第二个 Multi-Head Attention 层的K, V矩阵使用 Encoder 的编码信息矩阵C进行计算,而Q使用上一个 Decoder的输出计算。
- 最后有一个 Softmax 层计算下一个单词的概率。
Masked Self-Attention
Mask 表示掩码,它对某些值进行掩盖,使其在参数更新时不产生效果。
Transformer 模型里面涉及两种 mask,分别是 Padding Mask 和 Sequence Mask。其中,Padding Mask 在所有的 scaled dot-product attention里面都需要用到,而 Sequence Mask只有在Decoder的Self-Attention里面用到。
(Cross) Multi-Head Attention
其实这块与上文 Encoder 中 的 Multi-Head Attention 具体实现细节上完全相同,区别在于Encoder的多头注意力里的Q、K、V是初始化多个不同的矩阵得到的。而Decoder的K、V是来自于Encoder的输出,Q是上层Masked Self-Attention的输出。
Linear和softmax
Decoder最后会输出一个实数向量。再通过过一个linear layer将decoder的输出扩展到与vocabulary size一样的维度上。经过softmax 后,选择概率最高的一个word作为预测结果。
如何学习AI大模型?
大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业
?”“谁的饭碗又将不保了?
”等问题热议不断。
不如成为「掌握AI工具的技术人
」,毕竟AI时代,谁先尝试,谁就能占得先机!
但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈
学习路线
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓