导航
当前位置:首页 > 公式大全

反向传播算法公式推导-反向传播公式推导

2026-06-12 11:06:20 作者 :佚名 围观 : 2次

在机器学习的深拷贝训练里,反向传播实际上说白了就是顺着梯度河往回游。别被那些教科书上的逻辑结构绕晕了,咱们直接把参数看作一个个负责搬砖的伙计,损失函数当作那个被破坏掉的家。
这个家之故此疼,是出于某个神经元把信号搞错了,不够准要么忒乱。 这疼劲儿得传回去,得告诉那个伙计:“嘿,你刚刚干的活儿不对,重来。” 如何传回去?这就得看梯度的流向。当我们想优化模型,脑子里装的实际上是损失函数 $J$。
要是我们想让它变小,就得算出这个家疼得有多深,也就是 $frac{partial J}{partial theta}$ 这个梯度。
这个梯度就是当前状态下,转变参数 $theta$ 能带来多大影响。 这就回到了那个神经元的基准值 $theta^{(l)}$。
这个值是如何来的?它得从最底层的输出层往上捞。假设网络有个输出层,它的输出是 $y$。为了算出 $y$ 之后形成的误差,我们得先算出它的激活值 $z$,也就是 $y = f(z)$。
这一步叫前向传播,算得再准也得犯个错,毕竟激活函数 $f$ 有时候是非线性的,好办扯皮。
那这个 $z$ 是如何来的?它是上一层的加权总和 $sum x_i w_i$。 但这还不够。为了算出 $y$ 对 $z$ 的敏感度,也就是 $frac{partial y}{partial z}$,我们需求求导。根据链式法则,这个敏感度是 $f'(z)$。
要是是线性激活,$f'(z)$ 就是个常数 1,那后面就挺顺滑,误差直接滑那会儿。但现实情况不是这样的,激活函数一般有斜率,比如 sigmoid 要么 tanh,它们的导数 $frac{partial y}{partial z}$ 就得根据具体的函数形式算出来,不能当成常数硬套。
这一步多出来的计算,就是我们在做模态推理,确保每一步的导数都精确到位。 有了 $frac{partial y}{partial z}$,再看 $z$ 的上层输入 $x$。为了算出 $x$ 对 $z$ 的影响,我们需求 $frac{partial z}{partial x} = sum frac{partial z}{partial x_i}$。
这里 $i$ 代表所有的输入向量。
这一步实际上有点绕,出于我们是在逆向回溯,而不是正向前向。 为了理解“逆向”和“前向”的区别,咱们换个角度。前向传播是瀑布式往下流,数据从输入层一层层堆上去,最终变成输出,每一步都要用前向传播公式算一下激活值。而后向传播则是逆流而上,从输出层启动,把误差算出来,顺着 $z$ 往回推。 第一步,从输出层出发。设输出层有一个参数 $beta$,它管住输出 $y$ 和误差 $e$ 的关系,比如 $y = beta e + text{bias}$。为了知道 $y$ 对 $beta$ 的敏感度,导数就是 $frac{partial y}{partial beta} = e$。
这就挺好办了,误差直接传给参数。 第二步,这一层是线性层,参数是 $w$。输出 $y$ 对 $w$ 的敏感度是 $frac{partial y}{partial w} = frac{partial y}{partial z} cdot frac{partial z}{partial w}$。前半段 $frac{partial y}{partial z}$ 是上面算出来的,后半段 $frac{partial z}{partial w} = 1$。
故此这一步就是 $frac{partial y}{partial w} = frac{partial y}{partial z}$。 第三步, tiếp tục 往上推。每一层都是线性的,参数是 $w^{(l)}$。敏感度公式就是 $frac{partial y}{partial w^{(l)}} = frac{partial z^{(l)}}{partial w^{(l)}} = 1$。 第四步,到了激活层。参数是 $a^{(l)}$,敏感度是 $frac{partial y}{partial a^{(l)}} = f'(z^{(l-1)})$。
这里的 $z^{(l-1)}$ 来自上一层的输出。 第五步,线性累积。参数是 $b^{(l)}$,敏感度是 $frac{partial y}{partial b^{(l)}} = frac{partial y}{partial z^{(l-1)}} cdot frac{partial z^{(l-1)}}{partial b^{(l)}} = frac{partial y}{partial z^{(l-1)}}$。 把这些敏感度加起来,就是总的梯度 $frac{partial J}{partial theta}$。 举个具体例子,假设我们有一个好办的二分类模型。输入是特征向量 $x$,经过线性层后拿到 $z = Wx + b$。再经过 sigmoid 激活拿到 $a = sigma(z)$。我们的目标是最小化交叉熵损失 $J = -[y log(a) + (1-y) log(1-a)]$。 为了优化 $W$ 和 $b$,我们得算出 $frac{partial J}{partial W}$ 和 $frac{partial J}{partial b}$。
起初看 $a = sigma(z)$,这意味着 $a$ 是 $z$ 的函数。根据链式法则,$frac{partial a}{partial z} = sigma'(z) = a(1-a)$。 然后看 $z = Wx + b$,故此 $frac{partial z}{partial W} = x$。 综合起来,$frac{partial J}{partial W} = frac{partial J}{partial a} cdot frac{partial a}{partial z} cdot frac{partial z}{partial W}$。代入刚刚的项,$frac{partial J}{partial W} = frac{partial J}{partial a} cdot a(1-a) cdot x$。 再看 $b$ 项。出于 $z$ 是 $b$ 的线性函数,$frac{partial z}{partial b} = 1$。
故此 $frac{partial J}{partial b} = frac{partial J}{partial z} cdot 1$。而 $frac{partial J}{partial z} = frac{partial J}{partial a} cdot frac{partial a}{partial z} = frac{partial J}{partial a} cdot a(1-a)$。 这就得出了 $W$ 和 $b$ 的梯度更新公式。在反向传播算法里,我们实际上就是在递归地计算这些导数。出于每一层都是线性的,前面的导数会直接传递到后面的参数。而到了激活层,就需求额外乘一个斜率项。
这就像是在一条河里,水流(梯度)往下走,遇到石头(激活函数)要转弯,可是你不能来回折腾,得顺着水流往下游。 这听起来有点玄乎,但说白了就是计算量大的时候,我们得算出方向。
要是不用反向传播,最终得重新算一次梯度,那就等于白做。反向传播的核心思想只有两个字:复用。每一次从输出层到输入层,我们都在复用前面所有层的梯度信息,而不是从头到尾重新算一遍。 在代码实现里,这一般表现为一个递归函数。
第一个参数是当前的损失函数,第二个是当前层的输入。
要是当前层是激活层,函数内部会先传给上一层层的参数,算出它们对当前输入的敏感度,然后把这些敏感度传给当前层。
要是当前层是线性层,它就直接把上一层的敏感度传给当前层,不需求额外乘斜率。 这种结构在处理深层网络时贼高效。别看每一层都要算一次前向传播来求导,但导数计算本身也是线性的操作,故此整体复杂度是 $O(N^2)$,其中 $N$ 是参数个数。别看比直接求导要慢一点,但能极大地削减内存占用,避免显存爆炸。 实际上反向传播的精髓在于它把复杂的求导过程拆解成了好办的递推步骤。我们不需求一次性把所有 $frac{partial J}{partial theta}$ 都算出来,而是按需计算。从输出层启动,误差 $e$ 是最直接的梯度。一旦有了误差,它就沿着网络“爬”上去,穿过每一层的参数,直到影响到输入层。 在这个过程中,数据流向是固定的:前向传播时是从下到上,反向传播时是从上到下。前向传播负责生成结局,反向传播负责调整参数。它们共用同一个神经网络结构,只是计算方向反之。 看着这些公式,是不是认定还是有点枯燥?实际上要是把它们具象化,就是一场接力赛。
第一棒从输出端出发,把最终的目标值(误差)递下去。
第二棒接到第一棒,算出这一层对误差的贡献。
第三棒算出这一层对第二棒的贡献。直到最终一棒把梯度传回输入端,最终拍板给哪个参数加点盐要么减点醋。 这就是反向传播算法。它不只是是一套公式,更是一种思维方式:把复杂的优化难题,分解成一个个小的局部优化难题,利用局部梯度来指导全局方向。
这种递归的逻辑在人工智能的世界里无处不在。
相关标签:
相关文章
  • 通风换气量计算公式-通风换气量计算公式

    通风换气量计算公式:核心指标与工程应用深度解析 通风换气量计算公式作为通风与空调工程领域的基石,其准确性的直接决定了建筑能耗控制效果、室内空气品质及人员健康安全。长期以来,该公式在各类职业资格考试及

    2026-05-23
  • 解一元二次方程公式法-一元二次方程公式法

    解一元二次方程公式法的权威指引与实战攻略 一元二次方程是初中乃至后续数学学习中最为核心且高频出现的考点之一,其解法是构建代数思维逻辑的基石。长期以来,学生在学习此类题目时往往陷入盲目试算的困境,无法

    2026-05-23
  • 比例计算方法及公式-比例计算方法公式

    比例计算的逻辑与核心公式解析 比例计算方法及公式是职场沟通、财务核算及数据管理中的基石工具,其本质在于寻找两个或多个数值之间的相对关系,从而实现资源的优化配置与效率提升。在职场环境中,无论是分配奖金

    2026-05-23
  • 多重指数导数公式大全-多重指数导数公式全

    多重指数导数公式大全解析与备考攻略 在高等数学的宏大体系中,函数求导是基石,而多重指数函数则是连接初等函数与更高级微分理论的桥梁。多重指数导数公式大全作为学习这一领域不可或缺的权威工具,其重要性不言

    2026-05-23
  • 经验熵公式-经验熵公式改写

    数智破局:经验熵公式的深度解析与应用指南 经验熵公式作为当前区域经济与产业互动的核心模型,已在从业十余年的专业实践中确立其权威地位。它超越了传统线性预测的局限,通过引入动态的熵值机制,精准捕捉了复杂

    2026-05-23