观看b站up:霹雳吧啦Wz的课程学习笔记
至于为什么要用反向传播算法以及用到的梯度知识,有必要了解清楚,链接如下:
https://blog.csdn.net/Strive_LiJiaLe/article/details/115327218
神经网络训练方法----反向传播算法
它是计算深度学习模型参数梯度的方法。总的来说,反向传播会依据微积分中的链式法则,按照输入层,靠近输出层的隐含层,靠近输入层的隐含层和输入层的次序,计算并存储模型损失函数有关模型各层的中间变量的参数的梯度。
应用链式求导法则的误差反向传播算法(BP)
通过不断修正网络参数,求得输出层节点的误差平方和的最小值。
包括信息的正向传播和误差的反向传播过程,主要解决正向传播算法中难以直接计算隐含层误差的问题。
正向传播过程是逐层迭代计算出各单元的输出值。
反向传播过程是根据网络输出的误差,按误差梯度下降的方式,将误差进行逐层回代,修正每一层的权值。
1.误差的计算
softmax激活函数:
输出的y1,y2并不满足规则分布,为使得其服从概率分布,进行表达式处理。
此时O1+O2=1
2.损失的计算(交叉熵损失)
1.多分类:softmax
例如:分类人和男人,那么就不满足概率分布了,只能二分类。
2.二分类:sigmoid
默认log以e为底等于ln
3.误差的反省传播
有了上面的损失之后,
就可以进行误差的反向传播;
以求W(2)11为例讲解:
将W(2)11的输入作为常数a来处理,方便计算。
求其偏导(梯度):根据链式求导法则。
计算公式中的Loss对O1求偏导:此时O2视为常数。
带入以后,最终结果为:
有了误差的梯度以后,进行反向的更新。
4.权重的更新
表达式:
若使用整个样本集进行求解,损失梯度指向全局最优方向。
但是,时间应用中往往不能一次性将所有数据载入内存,所以只能分批次(batch)训练。此时,梯度指向当前批次最优方向。
优化器optimazer
目的:为了使网络更快的收敛