Transformer——Q74 推导动态FFN(Dynamic FFN)的门控权重更新公式

该问题归类到Transformer架构问题集——前馈网络——全连接层。请参考LLM数学推导——Transformer架构问题集

在大语言模型(LLM)不断突破与创新的浪潮中,动态前馈神经网络(Dynamic FFN)凭借独特的门控机制,成为提升模型性能的关键技术。门控权重更新公式作为动态 FFN 的核心,其推导过程蕴含着精妙的数学逻辑,而在 LLM 中的实际应用则展现出强大的价值。接下来,我们将深入剖析这一公式的奥秘,从理论推导到实际应用,全方位呈现动态 FFN 的魅力。

1. 动态 FFN 基础概念

1.1 动态 FFN 结构概述

动态 FFN 在传统 FFN 基础上,引入门控机制,构建起更灵活的网络架构。以处理一段新闻文本为例,输入向量进入网络后,会被分别送入多个并行的子 FFN 模块。这些子 FFN 模块可以看作是不同功能的 “信息处理器”,有的擅长提取事件的时间、地点等基础信息,有的专注于分析事件的因果关系 。门控网络根据输入文本的语义、语法等特征生成门控权重向量,这个向量中的每个元素对应一个子 FFN 模块,用于精准调控各子模块输出在最终结果中的占比。就像一位 “智能指挥官”,根据战场(输入文本)的局势,决定各个作战单元(子 FFN 模块)的使用程度,使网络能根据输入动态调整信息处理路径,高效应对复杂自然语言任务。

1.2 门控机制的作用

门控机制赋予动态 FFN 强大的适应性。在处理不同类型文本时,其优势体现得淋漓尽致。例如在处理新闻报道时,描述事件经过的部分和分析事件影响的部分,所需的语义理解和特征提取方式存在明显差异。当处理事件经过时,门控权重会使负责提取事件细节的子 FFN 模块获得更高权重,让模型专注于挖掘事件发生的先后顺序、具体过程等信息;而在分析事件影响时,与语义推理相关的子 FFN 模块将得到更多 “关注”,模型会深入分析事件对社会、经济、文化等方面产生的影响,从而提升模型对多样语境的处理能力 。

2. 相关数学基础

2.1 矩阵运算与向量操作

矩阵与向量运算贯穿动态 FFN 信息处理全程。假设输入向量x是一个d_{in}维向量,子 FFN 模块中的权重矩阵W_{i}维度为d_{in} \times d_{ff} 。在进行计算时,通过矩阵乘法xW_{i}实现输入特征的线性变换,这一过程就像是给输入信息进行 “重新编码”,将其转换为更适合后续处理的形式。门控权重向量g是一个n维向量,当它与子 FFN 模块输出向量f_i(x)(维度为d_{out})进行加权操作时,需要将g扩展为与f_i(x)维度匹配的矩阵形式(通常通过广播机制实现),再进行元素级乘法,从而完成对各子 FFN 模块输出的加权求和,确保信息在网络中有序高效传递 。

2.2 激活函数及其导数

ReLU、Sigmoid 等激活函数为网络注入非线性活力。以 ReLU 函数f(z) = \max(0, z)为例,它的图像在z = 0处有一个明显的转折点,当z > 0时,函数值等于输入值z,导数为1;当z \leq 0时,函数值恒为0,导数也为0 。在门控权重更新过程中,激活函数的导数用于计算梯度,帮助确定权重调整的方向和幅度 。比如在计算门控网络输出g关于门控权重参数的梯度时,激活函数的导数将参与链式求导过程,对梯度的计算结果产生重要影响 ,就像汽车的方向盘,引导着权重更新的方向。

2.3 反向传播与梯度下降

反向传播算法基于链式法则,从网络输出层开始,将损失函数关于输出的梯度反向传播到网络的每一层,计算每个参数的梯度 。这个过程就像是在一条信息传递的 “链条” 上,从终点开始,一步步回溯,找出每个环节对最终结果的影响程度。梯度下降算法则根据计算得到的梯度,更新网络参数,以最小化损失函数 。在动态 FFN 中,门控权重也作为网络参数的一部分,通过反向传播计算其梯度,再利用梯度下降算法进行更新,从而使门控机制在训练过程中不断优化,提高模型的性能 ,就像不断打磨一件艺术品,使其越来越完美。

3. 动态 FFN 门控权重更新公式推导

3.1 定义目标函数

设训练数据集为

### Transformer 模型公式推导过程详解 #### 输入表示 在Transformer模型中,输入序列首先被转换成向量形式。对于每一个位置上的token,其对应的嵌入向量由两部分组成:词嵌入(Token Embeddings)和位置编码(Positional Encoding)。这种设计使得即使并行处理所有tokens也能保留它们的位置信息[^1]。 ```python import numpy as np def get_position_encoding(seq_len, d_model): position_enc = np.array([ [pos / np.power(10000, 2 * (i // 2) / d_model) for i in range(d_model)] for pos in range(seq_len)]) position_enc[:, 0::2] = np.sin(position_enc[:, 0::2]) # apply sin to even indices position_enc[:, 1::2] = np.cos(position_enc[:, 1::2]) # apply cos to odd indices return position_enc ``` #### 自注意力机制 自注意力层允许每个position与其他positions交互来计算新的特征表达。具体来说,在给定查询Q、键K以及值V的情况下,通过下面的公式可以得到加权求和的结果作为输出: \[ \text{Attention}(Q,K,V)=\text{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}} \right)V \] 其中\( Q=WK^qX,\; K=W_K^k X ,\; V=W_V^v X\) ,这里W代表权重矩阵,X则是输入embedding加上位置编码后的结果[^2]。 #### 前馈神经网络 每一层还包含了一个简单的前馈全连接网络应用于各自的子空间内独立操作: \[ FFN(x)=max(0,x W_1+b_1)W_2+b_2 \] 这一步骤有助于引入非线性特性到模型架构之中。 #### 编码器-解码器结构 Encoder接收原始句子并通过多层堆叠上述组件形成上下文理解;Decoder则基于encoder产生的中间表征逐步生成目标语言表述。两者之间通过masked multi-head attention防止decoder提前看到未来的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨顿

唵嘛呢叭咪吽

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值