梯度下降法是用来计算函数最小值的。它的思路很简单,想象在山顶放了一个球,一松手它就会顺着山坡最陡峭的地方滚落到谷底: 凸函数图像看上去就像上面的山谷,如果运用梯度下降法的话,就可以通过一步步的滚动最终来到谷底,也就是找到了函数的最小值。 1 动机 只是有一些凸函数,比如下面这个二元函数(该函数实际上是逻辑回归的经验误差函数,在监督式学习中确实需要求它的最小值): 要求它的最小值点就需要解如下方程组: 这个方程组实在太复杂了,直接求解难度太高,好在 的图像就像一座山谷: 所以可以用梯度下降法来找到 的谷底,也就是最小值。 2.1 梯度向量 假设起点在 处,也就是将球放在 : 它的梯度为 1 维向量: 这是在 轴上的向量,它指向函数值增长最快的方向,而 就指向减少最快的方向: 将 也看作 1 维向量 ,通过和 相加,可以将之向 移动一段距离得到新的向量 : 其中 称为步长,通过它可以控制移的动距离,本节设 ,那么: 此时小球(也就是起点)下降到了 这个位置: 2.2 迭代 的梯度为: 继续沿着梯度的反方向走: 小球就滚到了更低的位置: 重复上述过程到第 10 次,小球基本上就到了最低点,即有 : 2.3 梯度下降法 把每一次的梯度向量 的模长 列出来,可以看到是在不断减小的,因此这种方法称为梯度下降法: 这也比较好理解,当最终趋向于 0 时有: 所以梯度下降法求出来的就是最小值(或者在附近)。 3.1 过小 如果设 就过于小了,迭代 20 次后离谷底还很远,实际上 100 次后都无法到达谷底: 3.2 合适 上面例子中用的 是较为合适的步长,10 次就差不多找到了最小值: 3.3 较大 如果令 ,这个时候会来回震荡(下图看上去只有两个点,实际上在这两个点之间来来回回): 3.4 过大 继续加大步长,比如令 ,反而会越过谷底,不断上升: 3.5 总结 总结下,不同的步长 ,随着迭代次数的增加,会导致被优化函数 的值有不同的变化: 寻找合适的步长是个手艺活,在工程中可以将上图画出来,根据图像来手动调整:
其图像及等高线如下(等高线中心的蓝点表示最小值): 下面用梯度下降法来寻找最小值。 4.1 前进一步 设初始点为 ,此时梯度为: 令步长 ,那么下一个点为: 可以看到向最小值方向前进了一步: 4.2 迭代 同样的方法找到下一个点: 此时又向最小值靠近了: 我们通过通俗易懂、图形化的方式,对机器学习中的《监督式学习》进行了精讲,目前还在连载中,可以享受早鸟价格,可以点击下面的链接购买: 👉 也可以直接点击下面这个图片购买机器学习的前置课程,《线性代数》、《单变量微积分》、《多变量微积分》、《概率论与数理统计》: |
|