asp 网站模板,网站建设前 需要准备的,手机兼职赚钱正规平台,自媒体素材视频网站文章目录 传统的神经网络框架存在的问题一. Transformer架构综述1.1 transformer的输入1.1.1 词向量1.1.2 位置编码#xff08;Positional Encoding#xff09;1.1.3 编码器与解码器结构1.1.4 多头自注意力机制 二.Transformer分步详解2.1 传统词向量存在的问题2.2 详解编解码… 文章目录 传统的神经网络框架存在的问题一. Transformer架构综述1.1 transformer的输入1.1.1 词向量1.1.2 位置编码Positional Encoding1.1.3 编码器与解码器结构1.1.4 多头自注意力机制 二.Transformer分步详解2.1 传统词向量存在的问题2.2 详解编解码器中自注意力机制2.2.1 缩放点积注意力机制计算步骤 矩阵形式2.2.2 softmax函数2.2.3 多头机制 三.FNN与MoE策略四.论文参考4.1 迈向终极专家专业化-Mixture-of-Expert 语言模型4.2 模型越狱-拒绝由LLMs单一方向调解4.3 LLM MOE策略的演化 文章学习b站 Transformer模型详解Attention is all you need 【Transformer速通指南】三天掌握自注意力机制
Transformer 是模型架构是 LLM 和 MoE 的基础。其核心是自注意力机制Self-Attention摒弃了传统 RNN 和 CNN 的序列处理方式。作用实现不同维度领域的数据归一化。LLM 是基于 Transformer 的大规模应用模型。MoE 是一种优化架构的策略用于扩展模型规模。
传统的神经网络框架存在的问题
传统神经网络框架存在一些局限性具体如下 循环神经网络RNNRNN在处理序列数据时需要按照时间顺序逐步迭代计算每个时间步的结果。这种串行处理方式限制了模型的并行化能力导致训练和推理过程相对缓慢。此外RNN在捕捉长距离依赖关系时面临挑战如梯度消失或爆炸问题这进一步限制了其性能。 卷积神经网络CNN虽然CNN在处理具有局部结构的数据如图像方面表现出色但在处理序列数据时存在一定的局限性。CNN通过滑动窗口机制捕捉局部特征但难以直接建模长距离依赖关系因为它们本质上是基于局部感受野的设计缺乏全局视角。尽管可以通过堆叠多层卷积层来部分缓解这一问题但这通常伴随着计算成本的增加和参数数量的增长。 Transformer模型与上述两种架构不同Transformer通过引入自注意力机制彻底改变了序列数据的处理方式。自注意力机制允许模型直接访问输入序列中的所有位置并为每个位置分配不同的权重即所谓的“关注度”。这种方式使得Transformer能够高效地捕捉长距离依赖关系同时支持高度的并行化计算从而显著提高了训练效率。在Transformer中每个词都通过Q查询、K键和V值向量来计算与其他词的相关性进而确定在整个上下文中该词的重要性。
综上所述每种传统的神经网络架构都有其特定的应用场景和局限性。RNN擅长处理序列数据但受限于其串行特性CNN在图像处理领域表现优异但对长距离依赖关系的支持有限而Transformer则通过创新的自注意力机制解决了这些问题提供了更强大的序列建模能力和更高的计算效率。这些特点使Transformer成为现代自然语言处理和其他涉及序列数据领域的首选架构之一。
一. Transformer架构综述 图1-1 transformer整体流程图 图1-2 transformer模型子结构示意图
整体分为下方输入单元、左侧编码器、右侧解码器、上侧推演结果其中图1-1描述了transformer大致组件。图1-2描述了每个组件中重要的核心处理方法。
Transformer的输入和输出是什么 输入 InputsOutputs(shifted right) 输出Output Probabilities
下列以模型处理英译汉为例解释transformer模型的整体运作过程。
1.1 transformer的输入
例如Are you OK 待翻译句子和标注数据 你好吗进入模型经模型处理后输出 你干什么如图1-3所示。 图1-3 数据输入输出示意图
1.1.1 词向量
在 Are you OK 和 你好吗进入模型时具体会被模型的第一个组件词向量处理如图1-4所示。 图1-4 词向量层示意图
假设每个单词用4维向量表示则[Are,you,OK,?] 四个词的句子可以用4 * 4的词向量矩阵表示每一行是一个词的词向量如图1-5所示。 图1-5 待译数据词向量
同理标注词[你,好吗,?]也会被处理成 3* 4的词向量矩阵如图1-6所示。 图1-6 标注数据词向量
1.1.2 位置编码Positional Encoding
得到Input Embedding和Output Embedding的词向量后transformer会对其进行位置编码。目的是把位置信息附加到原始的信息上。如图1-7所示。 图1-7 从词嵌入到位置编码示意图
在没有位置编码时 图1-8 词向量示意图
即模型可能当成You are OK ?OK ? you are等进行处理。那么这样子就可能违背本意如图1-8所示。 对于初学者而言下面的讨论可能会显得晦涩难懂不清楚其目的和实施的理由。这并不意外因为这部分内容旨在提供一个整体框架或概览而不会深入探讨每一个细节。现阶段您无需过分担忧具体的实现步骤或背后的原理。当前的重点在于理解这种方法的大致轮廓以及它试图达成的目标。具体的操作细节、技术术语以及每一步骤背后的原因将会在后续章节中详细展开。 为了帮助您更好地跟随学习进度这里将给出一个高层次的概念性描述。首先我们采取一种系统化的方法来解决问题这种方法依赖于一系列预先设定的步骤和规则。这些步骤被设计成能够引导用户从问题的起始点顺利到达解决方案。虽然此时您可能对其中的具体操作流程感到困惑但随着逐步深入的学习每一个环节都将得到清晰的解释和实例说明。 位置编码会用正弦函数和余弦函数的计算实现
位置编码的正余弦公式
其中 pos 表示词在序列中的位置。 i 表示编码向量中的维度索引。 d_model 表示模型嵌入维度大小。 对于偶数维度即 i 是偶数使用正弦函数 P E pos , 2 i sin ( p o s 1000 0 2 i / d model ) PE_{\text{pos}, 2i} \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) PEpos,2isin(100002i/dmodelpos) 对于奇数维度即 i 是奇数使用余弦函数 P E pos , 2 i 1 cos ( p o s 1000 0 2 i / d model ) PE_{\text{pos}, 2i1} \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) PEpos,2i1cos(100002i/dmodelpos)
其中pos 表示词语在序列中的位置i 表示该词语向量中的第 i 维度。d_model表示总维度数 例如[Are,you,OK,?]中 you的索引下标为1且前文假设词向量有4个维度现设4个维度分别为维度0维度1维度2维度3。因此you的位置编码为PE(10)PE(11)PE(12)PE(13)如图1-9所示。 图1-9 位置编码示意图 再次说明如上你可能看不懂为什么要这么做后续在章节2中介绍自注意力机制你会有所理解 1.1.3 编码器与解码器结构 图1-10 输入序列经过位置编码进入编解码器图
经过位置编码后英文的待译数据和中文的标注数据分别输入到编码器和解码器中会经过三个计算过程。如图1-11 图1-11 编解码器整体处理流程图 ① 编码器会基于 自注意力机制Multi-Head Attention前馈神经网络Feed Forward对英文的待译数据进行编码如图1-12所示 图1-12 编码器处理流程图 ② 解码器会基于 带有掩码的Masked自注意力机制Multi-Head Attention对中文的标注数据进行编码如图1-13 图1-13 解码器处理流程图 ③ 编码器-解码器注意力层 对两组数据一起解码得到解码器最终输出。如图1-14 所示。 图1-14 从编码器-解码器注意力层到解码器最终输出图
总体来说编解码器通过自注意力机制和前馈神经网络将输入数据中的全局信息附加到解码结果并最终输出。如图1-15所示。
1.1.4 多头自注意力机制 图1-16 多头自注意力机制整体示意图
其中自注意力机制Muti Head Self Attention会分别使用多个自注意力机制对Q,K,V 三个线性层Linear对输入数据进行线性变换并使用缩放点积注意力机制(Scaled Dot Product Attention)将特征变换后的Q,K,V进行结合最后使用fc线形层整合多头结果。 如图1-17所示。 图1-17 自注意力机制计算流程图 图1-18 自注意力机制源码实现图 在章节2我们会详细介绍Q,K,V参数的作用为什么是这样搞。 以编码器中的自注意力机制层说明自注意力机制是如何工作的。首先输入的数据是经过位置编码后的[Are,you,ok,?]其黄色表示[Are,you,ok,?]的词向量矩阵分别于QKV进行线性变换得到三组结果qxkxvx。如图1-19所示。 图1-19 举例说明自注意力机制计算流程图
接着将三组结果交给缩放点积注意力机制整合成最终结果。
关于自注意力机制和缩放点积注意力机制将在第二章详细介绍。 二.Transformer分步详解
在之前的概述中您可能对编码器与解码器之间的映射关系感到困惑不明白为何需要通过Q查询、K键和V值来进行信息处理和统一归一化为啥是softmax函数处理以及为何位置编码采用了正余弦函数的形式,。接下来我们将详细探讨这些问题以期为您提供清晰的理解。
首先让我们明确编码器和解码器在序列到序列Seq2Seq任务中的角色。编码器的任务是将输入序列转换为一个固定长度的内部表示形式通常称为上下文向量或特征向量。这个内部表示捕捉了输入序列的关键信息并将其压缩成一个抽象表达。而解码器则接收这个内部表示并逐步生成输出序列每一步都可能依赖于前一步的输出以及从编码器传递过来的上下文信息。这种结构使得模型能够处理不同长度的输入和输出序列适用于如机器翻译、文本摘要等任务。
接下来讨论Q、K、V的概念及其在自注意力机制中的应用。在Transformer架构中为了有效处理输入序列中不同位置之间的关系每个输入都需要经过线性变换从而生成Q、K、V三个不同的向量。这些向量分别代表查询、键和值它们的作用在于计算序列中元素间的相似度并确定权重以便实现对不同位置信息的有效区分。
最后我们来解释为什么位置编码采用正余弦函数。由于Transformer模型缺乏像循环神经网络RNNs那样的递归结构或卷积神经网络CNNs那样的卷积结构它无法直接识别序列中元素的位置信息。因此位置编码被引入其目的是赋予模型关于序列中各元素相对位置的知识。位置编码通常由正弦和余弦函数生成确保每个位置都有独特的表示。选择正余弦函数的原因在于这种方法可以保证对于任何给定的位置偏移都可以通过固定的数学运算获得对应的编码这有助于模型学习到位置间的相对距离关系。此外正余弦函数的周期性特性允许模型处理任意长度的序列而不会因为位置过远而导致位置信息丢失或混淆。
综上所述通过对编码器和解码器的工作原理、QKV在自注意力机制中的作用以及位置编码为何采用正余弦函数的深入解析希望能帮助您更准确地理解这些概念背后的逻辑和技术细节。
2.1 传统词向量存在的问题
预训练好的词向量一旦生成就保持不变这意味着它们无法根据不同的语境灵活调整。例如
“它无法通过这条河因为它太累了。” 在这句话中“它”指的是某个行动者比如一个人或动物表明是由于疲劳导致无法过河。“它无法通过这条河因为它太窄了。” 而在这句话里“它”指的是河流本身表示由于河道狭窄而不能通过。
如果词向量固定不变那么在处理这两个句子时就会遇到问题因为“它”这个词在两个句子中的含义完全不同。第一个句子中的“它”指的是执行动作的主体而在第二个句子中则是指物体河流的一个属性宽度。这种情况下固定的词向量无法准确捕捉到“它”在不同语境下的具体含义。
因此虽然预训练词向量能够提供一个良好的起点为词汇赋予基于大规模文本数据学习得到的通用意义但它们并不足以应对所有情况。为了更好地理解和区分词语在不同上下文中的意义我们需要采用更先进的模型如ELMo、BERT等这些模型可以根据词语所在的特定环境动态调整词向量从而更加精准地反映词语的实际用法和意义。这样即使是像“它”这样的代词在不同的句子中也能被正确理解。
2.2 详解编解码器中自注意力机制
主要目标是使计算机能够在处理文本时从上下文语句中识别并关注最关键的信息。Transformer模型通过其自注意力机制实现了这一目标该机制允许模型根据输入序列的上下文动态地为每个词分配相应的权重。这意味着在解析一个句子或段落时Transformer能够自动判断哪些词语对于理解整体意义最为重要并给予这些词语在上下文词语中的关注度。如图2-1所示。 图2-1 transformer的自注意力词热度权重图
具体来说在Transformer架构中每个词首先被转化为三个向量查询Query、键Key和值Value。通过计算查询向量与所有键向量之间的相似度得分模型可以确定当前词与其他词的相关性从而形成一个注意力分布。这个分布随后用于加权求和所有值向量生成一个反映整个上下文中关键信息的新表示形式。这样Transformer不仅能够捕捉到词汇间的直接联系还能够理解更为复杂的依赖关系确保了对文本深层次含义的准确把握。因此借助于这种机制Transformer可以在各种自然语言处理任务中更有效地利用信息提高理解和生成文本的能力。
2.2.1 缩放点积注意力机制
Q用于“查找”即寻找与当前位置相关的信息K存储序列中每个位置的信息供Q进行查询时使用每个词的Q会跟整个序列中每一个K计算得分然后基于得分再分配特征如图2-2V包含了实际的信息内容根据Q和K的相似度即注意力权重进行加权求和。通过这种方式模型能够动态地聚焦于输入序列中最相关的部分从而更好地捕捉序列数据中的复杂依赖关系。 图2-2 与QKV线性变换的关系图
假设我们有一个输入序列其对应的查询向量为 Q Q Q键向量为 K K K值向量为 V V V。这些向量通常由线性变换从原始输入嵌入得到。
计算步骤 计算点积对于每个查询 q i ∈ Q q_i \in Q qi∈Q计算它与所有键 k j ∈ K k_j \in K kj∈K的点积。获取当前词与每个词的相关程度。 score ( q i , k j ) q i T k j \text{score}(q_i, k_j) q_i^T k_j score(qi,kj)qiTkj 缩放分数由于点积的结果大小与向量维度 d k d_k dk有关为了防止梯度消失或爆炸我们需要将得分除以 d k \sqrt{d_k} dk 进行缩放。 scaled score ( q i , k j ) q i T k j d k \text{scaled score}(q_i, k_j) \frac{q_i^T k_j}{\sqrt{d_k}} scaled score(qi,kj)dk qiTkj 应用softmax函数对每个查询 q i q_i qi对应的键分数应用softmax函数以获得最终的注意力权重 α i j \alpha_{ij} αij。 α i j softmax j ( q i T k j d k ) exp ( q i T k j d k ) ∑ k exp ( q i T k d k ) \alpha_{ij} \text{softmax}_j\left(\frac{q_i^T k_j}{\sqrt{d_k}}\right) \frac{\exp\left(\frac{q_i^T k_j}{\sqrt{d_k}}\right)}{\sum_{k}\exp\left(\frac{q_i^T k}{\sqrt{d_k}}\right)} αijsoftmaxj(dk qiTkj)∑kexp(dk qiTk)exp(dk qiTkj) 加权求和最后利用注意力权重对值向量 V V V进行加权求和得到上下文向量 c i c_i ci。 c i ∑ j α i j v j c_i \sum_{j} \alpha_{ij} v_j cij∑αijvj
矩阵形式
在实践中我们通常会同时处理多个查询因此上述操作可以表示为矩阵运算的形式 Attention ( Q , K , V ) softmax ( Q K T d k ) V \text{Attention}(Q,K,V) \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)softmax(dk QKT)V
其中 Q ∈ R n × d k Q \in \mathbb{R}^{n \times d_k} Q∈Rn×dk K ∈ R m × d k K \in \mathbb{R}^{m \times d_k} K∈Rm×dk V ∈ R m × d v V \in \mathbb{R}^{m \times d_v} V∈Rm×dv分别是查询、键和值的矩阵 n n n是查询的数量 m m m是键/值的数量 d k d_k dk和 d v d_v dv分别是键和值的维度。
2.2.2 softmax函数
Softmax函数是一种归一化指数函数它能够将一个K维向量z“压缩”到另一个K维实向量σ(z)使得每一个元素的范围都在(0,1)之间并且所有元素的和为1。这样输出就可以被解释为概率分布 1,即百分率占比可以得出当前词与其余词的关系热度占比。
对于输入向量 Z [ z 1 , z 2 , z 3 . . . . . z k ] Z [z_1,z_2,z_3.....z_k] Z[z1,z2,z3.....zk]Softmax函数定义如下 σ ( z ) i e z i ∑ j 1 K e z j \sigma(\mathbf{z})_i \frac{e^{z_i}}{\sum_{j1}^{K} e^{z_j}} σ(z)i∑j1Kezjezi
数值稳定性的改进 为了避免数值溢出问题例如上溢或下溢通常会对输入进行平移操作即从每个 z i z_i zi中减去最大值 max ( z ) \max(z) max(z): σ ( z ) i e z i − max ( z ) ∑ j 1 K e z j − max ( z ) \sigma(\mathbf{z})_i \frac{e^{z_i - \max(\mathbf{z})}}{\sum_{j1}^{K} e^{z_j - \max(\mathbf{z})}} σ(z)i∑j1Kezj−max(z)ezi−max(z) 示例代码块
import numpy as npdef softmax(x):Compute softmax values for each sets of scores in x.e_x np.exp(x - np.max(x)) # 防止溢出return e_x / e_x.sum()# 测试数据
x np.array([-3, 2, -1, 0])
print(softmax(x))2.2.3 多头机制
在Transformer架构中为了模拟CNN能够从不同角度提取多种特征的能力采用了“多头注意力机制”Multi-Head Attention。这一机制通过不同的注意力头Attention Head并行地执行多个独立的自注意力过程。每个头都使用各自的学习参数来处理输入数据的不同子空间从而允许模型捕捉到输入序列内的各种复杂依赖关系 。通常情况下设置8个这样的头已经足够有效。
在完成多头注意力计算后每个头会输出一个特征表示。这些独立的特征表示随后会被拼接在一起形成一个综合的特征表示。接下来为了整合这些信息并减少维度通常会在拼接后的特征上应用一个全连接层Fully Connected Layer这一步骤有时也被称为降维处理。这样做的目的是将多头注意力机制得到的高维特征映射回模型需要的较低维度以便后续处理或预测任务的执行。 三.FNN与MoE策略
MoE模型中的每个专家Expert通常采用前馈神经网络结构 FeadFoward Network 如全连接网络或卷积网络。例如在Transformer模型中MoE层替换了传统的前馈子层每个专家独立处理输入数据的子集通过并行计算提升模型容量。门控网络Gating Network负责动态分配输入到不同专家其本身也是一个前馈网络通常包含Softmax或Gating Tree结构用于生成专家选择的概率分布。
混合专家模型Mixture of ExpertsMoE是一种先进的机器学习策略它通过将多个专门训练的子模型称为“专家”结合起来并使用一个或多个门控网络来控制这些专家输出的权重。这种方法旨在提高模型性能和效率特别是在处理复杂数据模式时的大模型训练。
在MoE架构中有三个关键组件专家、门控网络和稀疏激活。每个专家都是针对特定任务或数据特征而训练的子模型。例如在图像分类任务中一个专家可能专门识别纹理而另一个专家可能识别边缘或形状。这种分工有助于整个模型更高效地处理问题因为每个专家只处理它最适合的数据类型。 图3-1 Figure 2 | DeepSeekMoE的示意图
由于论发表已经非常详尽因此不再赘述。以下将会给出论文地址
四.论文参考
4.1 迈向终极专家专业化-Mixture-of-Expert 语言模型
DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models
4.2 模型越狱-拒绝由LLMs单一方向调解
Refusal in LLMs is mediated by a single direction
4.3 LLM MOE策略的演化
LLM MOE的进化之路从普通简化 MOE到 sparse moe再到 deepseek 使用的 share_expert sparse moe