赞
踩
在上一节中已经完成了机器学习的总体概念学习,这一节则具体学习一下梯度下降(Gradient Descent)和计算梯度的方法——反向传播
一个函数某个点的梯度是来源于函数的导数或者偏导数
θ
\theta
θ0点的梯度为L对
θ
\theta
θ1、
θ
\theta
θ2求导构成的二维向量
梯度下降是沿着梯度相反的方向走,即更新参数的时候是用原参数减去学习率乘以梯度
η
\eta
η为学习率
由公式可知,当
η
\eta
η大的时候更新的幅度大,
η
\eta
η小的时候更新的幅度较大,所以在实际做实验的时候我们要调整适当的学习率大小,学习率过小会导致损失函数下降缓慢,学习率过大会导致损失函数先大幅度下降然后逐渐趋于平稳或者来回震动,而当学习率特别大的时候甚至会让损失迅速上升。
一般来说学习率设置为0.1或者0.01,比较好用的几个优化器:Adagrad,Adam等等他们可以在训练过程中自动调节学习率的大小
例如:Adagrad
其中
η
\eta
ηt是学习率
小批量梯度下降法是批量梯度下降法和随机梯度下降法的折中,也就是对于m个样本,我们采用x个example来迭代计算,更新参数,实际上我们现在常用的都是小批量梯度下降方法,也就是我们实际操作是使用的batch,当batch是整个数据集时就是批量梯度下降,当batch等于一时就是随机梯度下降,batch等于x是就是批量为x的小批量梯度下降。
C是损失函数的结果
根据链式法则我们可以通过求z对w的偏导和C对z的偏导来求出C对与w的偏导,而对于z对于w的偏导是非常好计算的
∂
a
∂
z
∂
C
∂
a
\frac{\partial a}{\partial z}\frac{\partial C}{\partial a}
∂z∂a∂a∂C
然后进行进一步的计算
∂
C
∂
z
′
和
∂
C
∂
z
′
′
\frac{\partial C}{\partial z^{'}}{和}\frac{\partial C}{\partial z^{''}}
∂z′∂C和∂z′′∂C
那么我们能够很容易的计算得到
∂
C
∂
z
\frac{\partial C}{\partial z}
∂z∂C
所以问题是
∂
C
∂
z
′
和
∂
C
∂
z
′
′
\frac{\partial C}{\partial z^{'}}{和}\frac{\partial C}{\partial z^{''}}
∂z′∂C和∂z′′∂C究竟该怎样计算。
现在我们假设第二层已经是最后一层,那么计算
∂
C
∂
z
′
和
∂
C
∂
z
′
′
\frac{\partial C}{\partial z^{'}}{和}\frac{\partial C}{\partial z^{''}}
∂z′∂C和∂z′′∂C就会变得很简单
∂
C
∂
w
\frac{\partial C}{\partial w}
∂w∂C
即梯度,也就是说我们计算的时候实际上是从后向前计算,将计算结果向初始反向传递,即反向传播(Backward pass)
对于梯度下降方法进行了进一步的学习明确了三种梯度梯下降方式和求梯度的方法——反向传播
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。