机器学习编程:从编码到深度学习
上QQ阅读APP看书,第一时间看更新

第3章 梯度

我们在前两章实现了令人自豪的成就:编写完成了一小段可以进行机器学习的代码。然而,如果我们把这段代码拿给计算机科学家看,就会发现代码中其实还存在一些缺陷。尤其是对于当前使用的train()函数,严格的计算机科学家会说:“这段代码仅适用于比较简单的问题,不能解决比较复杂的实际问题。”

话说得没错。我们将在本章使用两种方式来解决上述问题。首先,我们不会让计算机科学家检查我们的代码。其次,我们将分析现有train()函数的实现过程中存在的问题,并且使用一种名为梯度下降的算法来解决这些问题。梯度下降法是机器学习领域的一个关键算法,虽然它与我们当前使用的train()函数一样,也是一种寻找损失函数最小值的方法,但是它要比前两章的代码计算速度更快、计算结果更加精确且通用性更强。

梯度下降法不仅仅适用于我们这里的小型程序。事实上,如果没有梯度下降法,你在机器学习领域走不了多远。这个算法将伴随我们直到本书的结尾。

我们从介绍梯度下降法要解决的问题开始。