梯度下降法(Gradient Descent)
- 不是一个机器学习算法(不能用于解决回归或分类问题)
- 是一种基于搜索的最优化方法
- 作用:最小化一个损失函数
- 梯度上升法:最大化一个效用函数
在机器学习领域,熟练掌握梯度法来求一个目标函数的最优值是非常重要的。
如图,寻找一个theta 使得 损失函数J 最小 。
每取一个 theta 值都对应一个 J。
对于导数 dJ / d theta,在直线方程中,导数代表斜率;曲线方程中,导数代表切线斜率;在此图中,导数代表 theta 单位变化时,J相应的变化。
由图右半部分可知,若随着 theta 增大,J 会减小;theta 减小,J 会增大。因此,从某种意义上讲导数可以代表方向,随着 theta 增大, 对应 J 增大的方向就可表示为 -n dJ / d theta,即图中蓝点右移,直到 -n dJ / d theta 为 0 。
对于多维函数,这个导数就是梯度。
同理,随着 theta 减小,对应 J 减小的方向为 -n dJ / d theta,即图中蓝点左移,直到 -n dJ / d theta 为 0 ,对应的损失函数 J 最小。
其中
- n 称为学习率(learning rate)
- n 的取值影响获得最优解的速度
- n 取值不合适,甚至得不到最优解
- n 是梯度下降法的一个超参数
但并不是所有函数都有唯一的极值点,如会遇到下图问题:
如果从右侧找一点,则会找到局部最优解,但不是我们要的全局最优解。
对于这个问题,我们的解决方案是:
- 多次运行,随机化初始点
- 梯度下降法的初始点也是一个超参数
对于线性回归法的损失函数具有唯一的最优解,线性回归的目标是使
尽可能小。