机器学习基础随笔(7)反向传播

本文介绍了反向传播(Backpropagation)在训练神经网络中的作用,它实际上是梯度下降的一种高效实现方式。文章详细讲解了链式法则、前向传播和反向传播的概念,并通过例子解释了如何计算神经网络中参数的梯度。反向传播利用链式法则,通过计算损失函数对网络各层节点的偏导数,逐层反向传播,从而高效求得权重的梯度。最后,总结了反向传播的基本步骤,包括前向传播的输出和反向传播的损失梯度计算。
摘要由CSDN通过智能技术生成

Backpropagation

Backpropagation(反向传播),就是告诉我们用gradient descent来train一个neural network的时候该怎么做,它只是求微分的一种方法,而不是一种新的算法

Gradient Descent

gradient descent的使用方法,跟前面讲到的linear Regression或者是Logistic Regression是一模一样的,唯一的区别就在于当它用在neural network的时候,network parameters θ = w 1 , w 2 , . . . , b 1 , b 2 , . . . \theta=w_1,w_2,...,b_1,b_2,... θ=w1,w2,...,b1,b2,...里面可能会有将近million个参数

所以现在最大的困难是,如何有效地把这个近百万维的vector给计算出来,这就是Backpropagation要做的事情,所以Backpropagation并不是一个和gradient descent不同的training的方法,它就是gradient descent,它只是一个比较有效率的算法,让你在计算这个gradient的vector的时候更有效率

Chain Rule

Backpropagation里面并没有什么高深的数学,你唯一需要记得的就只有Chain Rule(链式法则)
个人感觉跟微积分里面的链式求导法则差不多

对整个neural network,我们定义了一个loss function: L ( θ ) = ∑ n = 1 N l n ( θ ) L(\theta)=\sum\limits_{n=1}^N l^n(\theta) L(θ)=n=1Nln(θ),它等于所有training data的loss之和

我们把training data里任意一个样本点 x n x^n xn代到neural network里面,它会output一个 y n y^n yn,我们把这个output跟样本点本身的label标注的target y ^ n \hat{y}^n y^n作cross entropy,这个交叉熵定义了output y n y^n yn和target y ^ n \hat{y}^n y^n之间的距离 l n ( θ ) l^n(\theta) ln(θ),如果cross entropy比较大的话,说明output和target之间距离很远,这个network的parameter的loss是比较大的,反之则说明这组parameter是比较好的

然后summation over所有training data的cross entropy l n ( θ ) l^n(\theta) ln(θ),得到total loss L ( θ ) L(\theta) L(θ),这就是我们的loss function,用这个 L ( θ ) L(\theta) L(θ)对某一个参数w做偏微分,表达式如下:
∂ L ( θ ) ∂ w = ∑ n = 1 N ∂ l n ( θ ) ∂ w \frac{\partial L(\theta)}{\partial w}=\sum\limits_{n=1}^N\frac{\partial l^n(\theta)}{\partial w} wL(θ)=n=1Nwln(θ)
这个表达式告诉我们,只需要考虑如何计算对某一笔data的 ∂ l n ( θ ) ∂ w \frac{\partial l^n(\theta)}{\partial w} wln(θ),再将所有training data的cross entropy对参数w的偏微分累计求和,就可以把total loss对某一个参数w的偏微分给计算出来

我们先考虑某一个neuron,先拿出上图中被红色三角形圈住的neuron,假设只有两个input x 1 , x 2 x_1,x_2 x1,x2,通过这个neuron,我们先得到 z = b + w 1 x 1 + w 2 x 2 z=b+w_1 x_1+w_2 x_2 z=b+w1x1+w2x2,然后经过activation function从这个neuron中output出来,作为后续neuron的input,再经过了非常非常多的事情以后,会得到最终的output y 1 , y 2 y_1,y_2 y1,y2

现在的问题是这样: ∂ l ∂ w \frac{\partial l}{\partial w} wl该怎么算?按照chain rule,可以把它拆分成两项, ∂ l ∂ w = ∂ z ∂ w ∂ l ∂ z \frac{\partial l}{\partial w}=\frac{\partial z}{\partial w} \frac{\partial l}{\partial z} wl=wzzl,这两项分别去把它计算出来。前面这一项是比较简单的,后面这一项是比较复杂的

计算前面这一项 ∂ z ∂ w \frac{\partial z}{\partial w} wz的这个process,我们称之为Forward pass;而计算后面这项 ∂ l ∂ z \frac{\partial l}{\partial z} zl的process,我们称之为Backward pass

Forward pass

先考虑 ∂ z ∂ w \frac{\partial z}{\partial w} wz这一项,完全可以秒算出来, ∂ z ∂ w 1 = x 1 ,   ∂ z ∂ w 2 = x 2 \frac{\partial z}{\partial w_1}=x_1 ,\ \frac{\partial z}{\partial w_2}=x_2 w1z=x1, w2z=x2

它的规律是这样的: ∂ z ∂ w \frac{\partial z}{\partial w} wz,就是看w前面连接的input是什么,那微分后的 ∂ z ∂ w \frac{\partial z}{\partial w} wz值就是什么,因此只要计算出neural network里面每一个neuron的output就可以知道任意的z对w的偏微分

  • 比如input layer作为neuron的输入时, w 1 w_1 w1前面连接的是 x 1 x_1 x1,所以微分值就是 x 1 x_1 x
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值