面试准备-LR,SVM and 反向BP (2)

反向传播

为了更好的理解BP算法,我们先分析一个具体的例子,然后根据这个具体的例子,可以得到Ng给的总结(https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/),网络结构如下,同时,初始的值也标注在了图上:
在这里插入图片描述
首先前向传播: 激活函数sigmold
在这里插入图片描述
然后是反向传播:
首先计算现在的cost function,假设 cost function 为 squared error function:
在这里插入图片描述
所以有:
在这里插入图片描述
然后是更新系数:
首先更新系数 w5
在这里插入图片描述
w6,w7,和w8的更新与 w5相似,这里,对于最后一层,假设:
在这里插入图片描述
则有:
在这里插入图片描述
然后更新 Hidden Layer,也就是 w1到w4,此处以w1为例:
在这里插入图片描述
这里要注意一个变形:
在这里插入图片描述
所以有:
在这里插入图片描述
这里再假设:
在这里插入图片描述
所以就可以得到Ng给出的反向传播公式,以下是Ng在讲义中提到的反向传播的理解过程:

首先我们是在分类问题中讲BP传播,用吴恩达的课件,中对网络的定义,假设一共有L层,第l层的的神经元有 S_l个,如下图,最终的输出有二分类的,也可以是多分类的,只在于最后一层神经元的数量
在这里插入图片描述
定义好网络结构之后,定义cost function:
对于二分类问题,我们一般定义cost function为:
在这里插入图片描述
如果为多分类问题,分为k类别,则其cost function 可以被定义为:
在这里插入图片描述
其中yi和 h(x_i)都变成了向量
在这里插入图片描述
得到网络结构和cost function之后,我们就可以使用梯度下降法,来获得每一个参数的更新了。
那么具体的反向传播要怎么做呢:Ng直接给我们了公式,对于每一层,都可以得到一个 “error”,这个error是通过反向传播得到的:
在这里插入图片描述
这里的公式和上面例子中,区别仅仅是将激活层的导数放的位置不同而已,整个过程是完全相同的,所以我们在真实的机器学习中,可以先求出每一层的“error”然后根据这个error直接求解每一个参数的偏导数即可,求解error的过程,就是将方向完全反过来的过程,将输出层的error作为输入,然后箭头方向反向即可得到每一层的error,所以又叫反向传播
在这里插入图片描述
2021.06.16:
关于VAE 重参数化技巧的一篇博文分享,重参数主要就是为了能够更新参数,即和反向传播相关:
https://blog.csdn.net/qq_40128284/article/details/107299847

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值