【李宏毅ML笔记】 11 BP反向传播

梯度提升在神经网络训练中的过程

实际,BackPropagation是一种比较有效率计算的Gradient Descent方法

记住BackPropagation中的链式法则Chain Rule如下:


以上,即多元复合函数的求导公式,如下:



如下,在Neuron Network的training中,

yn 与 yn^的距离,即(偏差)距离值定义为Cn。

累加所有的Neuron的(偏差)距离值,得到整个Network的total loass损失值L(θ)。

用该累加公式对w求导。该公式意义在与,求L(θ)对w的偏微分,可以转换为求每个Neuron对w的求导的累加和。


如下,以第一个Neuron为例,则x1,x2位原始输入向量,进行计算。

由计算损失函数对w的偏导,基于链式法则,改为求函数模型对w的偏导*损失函数对激活函数模型的偏导


如下,第一步,计算φ(z)/φ(w),规律就是wi前接的input是xi,则其偏微分为xi。


举例如下,计算z,然后使用activation function(这里用的sigmoid function),计算得到输出0.98。


第一步,计算φ(C)/φ(z),C是在计算得到z,再经过activation function得到yn^,最后还要经过loss function,得到了C的值。因此,φ(C)/φ(z)很复杂。

假设a = σ(z), σ为sigmoid函数,然后a再与w3/w4得到z'/z'',以及后续的a',a''



ruxia因为a结合w3,w4分别影响后续的z'和z'',基于链式法则,假设后一层只有两个neuron,也可以有1000个,下面式子更长。

然后,求φ(z')/φ(a)也很简单了,跟前面的φ(z)/φ(w)类似,偏微分就是前面的wi,其余部分φ(C)/φ(z')假设已经算出(后面考虑)。

即可得到下式:


反过来,从右往左看,假设有一个新的neuron,且不在原先的Network中,所做的工作跟上面中等式中括号中一样,再直接乘以在forward pass中得到的已知的φ(z')。样子如下,其input是φ(C)/φ(z'),φ(C)/φ(z''),得到的结果就是φ(C)/φ(z),z是固定的值,则φ(z)是常数。形成了backward pass



如下:假设能算φ(z'),φ(z''),则问题就都能解决了,假设已经处于最后一层neuron,输出为y1,y2...可加入y1,y2,并利用链式法则,基于假设的C误差函数,求出φ(C)/φ(z'),φ(C)/φ(z''),进而求出φ(C)/φ(z)。如果只有两层,那按下面方法,就可以求出w1,w2了。


然而,如下,假设第一层后没有输出层,接的是下一个隐层,一样原理。


换一个方向,从y1,y2输出层开始,反向算,运算量跟forword pass是一样的,只是用了很多链式法则。

如下,想要计算z1对C的偏微分,则算z3、z4根C的偏微分,想知道z3的偏微分,需要知道z5,z6对C的偏微分。

反之,就都算出来了。如果先算z5,z6对C的偏微分,再算z3、z4的偏微分,往前算。


那么,怎么先算z5,z6呢?利用假设一个反向的Neuron network,层层计算,做backward pass如下:



总结:

先做一个forward pass,知道activation function的output,就是φ(z)/φ(w)=a,在backward pass中,求φ(C)/φ(z),相乘,得到φ(C)/φ(w)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值