(1)在微积分里,对多元函数的参数求偏导数,把求得的各个参数以向量的形式写出来,就是梯度
(2)梯度向量从几何意义上来讲,就是 函数变化增加最快的地方
(3)在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步步迭代求解,得到最小化损失函数和模型参数值
(4)通过反向传播,将最终的误差反向传递,步长决定在梯度下降迭代过程中,每一步 沿梯度方向前进的长度(需不断调整步长)。
一、梯度下降算法思想:
一种优化算法,该算法从任一点开始,沿该点梯度的反方向(梯度方向为导数上升的方向)运动一段距离,再沿新位置的梯度反方向运行一段距离 ...... 如此迭代。解一直朝下坡最陡的方向运动,希望能运动到函数的全局最小点。
更通俗的理解:
利用损失函数进而调整权重参数最终使损失函数尽量小。
二、梯度不稳定:梯度消失、梯度弥散、梯度爆炸的理解
梯度消失,简单点来说,就是整个曲线太平了,太平意味这求导后的值越来越接近0.
如果梯度更新的慢,那么参数 w下沉的速度那是特别慢,从而导致收敛速度慢,训练时间无限延长。梯度消失和梯度爆炸本质上是一样的,都是因为网络层数太深而引发的梯度反向传播中的连乘效应。靠近输出层的hidden layer 梯度大,参数更新快,所以很快就会收敛;
而靠近输入层的hidden layer 梯度小,参数更新慢,几乎就和初始状态一样,随机分布。
在下面的四层隐藏层网络结构中,第一层比第四层慢了接近100倍!!
这种现象就是梯度弥散(vanishing gradient problem)。而在另一种情况中,前面layer的梯度通过训练变大,而后面layer的梯度指数级增大,这种现象又叫做梯度爆炸(exploding gradient problem)。
加深神经网络的层数(4层)
参考链接:
https://www.cnblogs.com/yangmang/p/7477802.html
https://zhuanlan.zhihu.com/p/33006526
这里x = points[i,0] 相当于points[i][0]
y = points[i,1] 相当于points[i][1]
是numpy的一种特殊写法
这里b_gradient和w_gradient的求法根据对b和W分别求导计算而出。
需要优化的模型参数W,b按照以下方式更新参数
其中lr为学习率:(防止每次更新步长跨越大,无法找到最小的点,如图,学习率设置太大,从A点跨到B点,而最小值在C点)
如果lr太小:收敛缓慢。
如果lr太大:不会在每次迭代中都减小,因此可能不会收敛。
损失函数loss的计算和参数w,b的更新方式。