梯度下降法——是一种最优化算法,用于找到函数的局部极小值或全局最小值。它基于函数的梯度(或偏导数)信息来更新参数,目标是通过逐渐调整参数值来最小化目标函数的值。在机器学习算法中,梯度下降是最常采用的方法之一,尤其是在深度学习模型中,BP反向传播方法的核心就是对每层的权重参数不断使用梯度下降来进行优化。
梯度下降法的一个直观的理解,就像一个圆球从山顶滚向山脚的过程:
1. 初始位置:圆球随机落在山顶的某个位置,就像算法一开始随机设定参数。
2. 找坡度:圆球会自动朝最陡的下坡方向滚动,这对应算法计算损失函数的梯度(最陡上升方向)并取反,确定参数更新方向。因为梯度方向与等高线垂直,所以圆球总是垂直于山坡滚动。
3. 控制步长:圆球滚动的距离由初始势能(学习率)决定。步子太大可能直接滚过山脚,太小又会走得很慢,学习率就是用来平衡这个“步子大小”的关键。
4. 不断迭代:每滚一步,圆球都会重新调整方向,直到感觉坡度变缓(梯度接近零),此时认为到达山脚(找到最优解)。但现实中可能因局部陡坡卡住(陷入局部最小值),需要调整策略。
整个过程圆球在复杂地形中“试探着往下走”,通过不断调整方向和步长逼近最低点,即,梯度下降算法最终找到让目标函数最小的参数。
一、梯度下降法的数学原理
1.1 什么是梯度
梯度是微积分中的基本概念,也是机器学习解优化问题经常使用的数学工具,要理解梯度,首先我们先温习一下导数的概念——导数是一元函数的变化率(斜率)。如下求导计算,第一个表达式为求的导数:
当一个函数有多个变量的时候,想知道在某个位置的变化率(最典型的就是曲面上某个点的变化率)时,需要分别对每个变量求偏导数,也就是求各个方向的变化率:
偏导数写成向量形式,二元时为