## 反向传播方向更新w和b的值:
反向传播的目的:求损失函数w和b的偏导数,其实也就是求损失函数在w和b方向上的梯度分量,然后用在梯度方向上更新w和b最后是损失函数降到最小。是不是很绕口,你也可以这样理解其实反向传播就是去更新参数的一种方法。二话不说先上例子一看就明白:
> 此例子出自:https://zhuanlan.zhihu.com/p/23270674
> 注意:每一个小圆圈相当于上面图像中的一个灰度值
来简单告诉读者推导过程吧(其实就是链式)!
![](https://box.kancloud.cn/f18fe4a2a283eaa202cc7ded73135f90_323x254.png)
先初始化权重和偏置量,得到如下效果:
![](https://box.kancloud.cn/95e2376d0ed1fe0f494ca05501679f8f_339x253.png)
**因为计算向后传播必须现有向前传播所以我们先来计算向前传播:**
1. 先计算h1 的输入:**net_h1 =w1 \* i1 + w2 \* i2 +b1 * 1**,代入数据可得:net_h1 =0.15\*0.05 +0.2\* 0.1+0.35\* 1=0.3775;
2. 然后利用logistic函数计算得h1 的输出:out_h1=1 / {1+e^-net_h1 } =1/{1+e^-0.3775 }=0.593269992;
3. 用同样的方法得out_h2=0.596884378;
4. 对输出层神经元重复这个过程,使用隐藏层神经元的输出作为输入。这样就能给出o_{1} 的输出:
![](https://box.kancloud.cn/d489c9ee07b9fe972699bf0f8e826c4d_753x246.png)
5. 开始统计所有的误差:
![](https://box.kancloud.cn/109481c1ab6620c8ee57c98d16dfce04_641x315.png)
**计算反向传播**:
1. 输出层 对于w5,想知道其改变对总误差有多少影响,于是得:dEtotal / dw5![](https://box.kancloud.cn/9795f7b91282c25bef27d1756daf22a3_714x458.png)![](https://box.kancloud.cn/aef1b7511f0c18dcaea15bac46c62ac0_733x698.png)![](https://box.kancloud.cn/0b2eba3b231bb887f7c7af2bded98da9_885x419.png)
2. 隐藏层![](https://box.kancloud.cn/e87883cd87adea8480124cc661c3ed4a_835x771.png)![](https://box.kancloud.cn/06b337732a4129ff40a87e158f6bf2f9_868x744.png)![](https://box.kancloud.cn/d90a7242e3cb7bf6ad77c6742dd0a90b_859x770.png)![](https://box.kancloud.cn/6d85d32c3d96841699ad8f3b03165d37_910x585.png)
**最后,更新了所有的权重! 当最初前馈传播时输入为0.05和0.1,网络上的误差是0.298371109。 在第一轮反向传播之后,总误差现在下降到0.291027924。 它可能看起来不太多,但是在重复此过程10,000次之后。例如,错误倾斜到0.000035085。
在这一点上,当前馈输入为0.05和0.1时,两个输出神经元产生0.015912196(相对于目标为0.01)和0.984065734(相对于目标为0.99)。很接近了O(∩_∩)O~~**
- 序言
- 第一章 机器学习概述
- 第二章 机器学习环境搭建
- 环境搭建
- 第三章 机器学习之基础算法
- 第一节:基础知识
- 第二节:k近邻算法
- 第三节:决策树算法
- 第四节:朴素贝叶斯
- 第五节:逻辑斯蒂回归
- 第六节:支持向量机
- 第四章 机器学习之深度学习算法
- 第一节: CNN
- 4.1.1 CNN介绍
- 4.1.2 CNN反向传播
- 4.1.3 DNN实例
- 4.1.4 CNN实例
- 第五章 机器学习论文与实践
- 第一节: 语义分割
- 5.1 FCN
- 5.1.1 FCN--------实现FCN16S
- 5.1.2 FCN--------优化FCN16S
- 5.2 DeepLab
- 5.2.1 DeepLabv2
- 第六章 机器学习在实际项目中的应用