机器学习反向传播算法的数学推导

本文深入探讨了反向传播算法(BP算法),一种在神经网络中极为有效的训练方法。通过对误差的反向传播,算法能够动态调整网络连接权重,实现有监督学习。文中详细推导了BP算法的数学原理,包括误差的梯度计算和参数更新过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

周志华的西瓜书机器学习被誉为是机器学习的入门宝典,但是这本书对于深度学习的知识介绍非常少,仅仅只是在第五章《神经网络》中对其进行简单的概括。
这一章对于深度学习的介绍非常浅显,没有很深入的对其中的知识进行挖掘,也没有很复杂的数学推导。
博主在这里对反向传播算法进行数学推导,这里我使用的方法和周老师有些不同,或许更方便一些。

一、反向传播算法概述

误差反向传播算法又称为BP算法,是由Werbos等人在1974年提出来的,我们熟知的Hinton也对该算法做出非常巨大的贡献。这是一种在神经网络中最为有效的训练算法,直到现在还在深度学习中发挥着极其重要的作用。

它是利用输出后的误差来估计输出层前一层的误差,再用这个误差估计更前一层的误差,如此一层一层地反传下去,从而获得所有其它各层的误差估计。这是一种属于有监督学习的方式,可以对网络中的连接权重做动态调整。

反向传播算法和正向传播算法相对应,一起构成了神经网络的整个过程:
在这里插入图片描述

二、数学推导

在这里,为方便对模型的理解和数学推导,我们没有采用西瓜书中的模型表示方式,而是用下图来对其进行简化:
在这里插入图片描述

  • 与输入层相关的变量和参数:下标 i i i
  • 与隐含层相关的变量和参数:下标 h h h
  • 与输出层相关的变量和参数:下标 j j j
  • 激励函数的输入: a a a
  • 激励函数的输出: z z z
  • 节点误差: δ \delta δ

则输入隐藏层和输出层的量分别为:
a h = ∑ i = 1 d w i h x i + Θ h a_{h}=\sum_{i=1}^{d}w_{ih}x_{i}+\Theta _{h} ah=i=1dwihxi+Θh a j = ∑ i = 1 d w h j x i + Θ h a_{j}=\sum_{i=1}^{d}w_{hj}x_{i}+\Theta _{h} aj=i=1dwhjxi+Θh
隐含层和输出层的的输出分别是:
z h = f ( a h ) z_{h}=f\left ( a_{h} \right ) zh=f(ah) z j = f ( a j ) z_{j}=f\left ( a_{j} \right ) zj=f(aj)

函数的误差损失为: E k = 1 2 ∑ j = l ( t j − z j ) 2 E_{k}=\frac{1}{2}\sum_{j=l}\left ( t_{j}-z_{j} \right )^{2} Ek=21j=l(tjzj)2
BP算法是基于梯度下降的策略,以目标的负梯度方向对参数进行调整,所以我们用链式法则求出误差的梯度为:
∂ E ∂ w h j = ∂ E ∂ z j ∂ z j ∂ a j ∂ a j ∂ w h j \frac{ \partial E}{\partial w_{hj}}=\frac{\partial E}{\partial z_{j}}\frac{\partial z_{j}}{\partial a_{j}}\frac{\partial a_{j}}{\partial w_{hj}} whjE=zjEajzjwhjaj

由前文我们得到的关系有: ∂ a j ∂ w h j = z h \frac{\partial a_{j}}{\partial w_{hj}}=z_{h} whjaj=zh ∂ E ∂ z j ∂ z j ∂ a j = ∂ E ∂ a j = − ( t j − z j ) f ′ ( a j ) \frac{\partial E}{\partial z_{j}}\frac{\partial z_{j}}{\partial a_{j}}=\frac{\partial E}{\partial a_{j}}=-\left ( t_{j}-z_{j} \right ){f}'\left ( a_{j} \right ) zjEajzj=ajE=(tjzj)f(aj)
所以,综上所得,我们有:
g ( h ) = ∂ E ∂ w h j = ∂ E ∂ z j ∂ z j ∂ a j ∂ a j ∂ w h j = = − ( t j − z j ) f ′ ( a j ) z h g(h)=\frac{ \partial E}{\partial w_{hj}}=\frac{\partial E}{\partial z_{j}}\frac{\partial z_{j}}{\partial a_{j}}\frac{\partial a_{j}}{\partial w_{hj}}==-\left ( t_{j}-z_{j} \right ){f}'\left ( a_{j} \right )z_{h} g(h)=whjE=zjEajzjwhjaj==(tjzj)f(aj)zh

对于误差 E k E_{k} Ek,当我们给定学习率为 η \eta η时有:
Δ w h j = − η ∂ E k ∂ w h j \Delta w_{hj}=-\eta \frac{\partial E_{k}}{\partial w_{hj}} Δwhj=ηwhjEk
g ( h ) g(h) g(h) b ( h ) b(h) b(h)带入后有: Δ w h j = η g ( h ) b ( h ) \Delta w_{hj}=\eta g(h) b(h) Δwhj=ηg(h)b(h)

则得到上式之后,则我们根据 v ← v + Δ v v\leftarrow v+\Delta v vv+Δv进行参数更新。

至此,反向传播算法的推导过程全部完成,其他参数的更新与上文相同,这里不再赘述,读者感兴趣可以用这种方法自己来完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值