机器学习模型是需要优化的函数,导数衡量这些函数如何变化。这如何转化为能够实际找到例如最小化成本函数 $J(\theta)$ 的最佳参数的算法?微积分成为理解许多机器学习算法运作方式的必要工具。设想你正站在浓雾笼罩的山坡上,目标是抵达山谷底部(成本函数的最低点)。你只能感受到脚下地面的坡度。你应该往哪个方向走?直观来说,你会感受最陡峭的下坡方向,然后往那个方向迈出一小步。你会重复这个过程,希望每一步都让你更接近谷底。微积分提供了“感受坡度”的数学对应方式。对于一个我们希望最小化的函数 $J(\theta)$:找到最陡方向: 如我们所见,导数 $\frac{dJ}{d\theta}$(或对于多参数函数 $\theta = [\theta_1, \theta_2, ..., \theta_n]$ 来说,梯度 $\nabla J(\theta)$)指示了函数的变化率。重要的一点是,梯度向量 $\nabla J(\theta)$ 指向函数在点 $\theta$ 处增长最快的方向。趋向最小值: 既然我们希望减小函数值(最小化成本),我们就应该沿着与梯度相反的方向移动。负梯度 $-\nabla J(\theta)$ 指向下降最快的方向。这一核心思想构成了机器学习中最基本的优化算法之一:梯度下降。该算法通过沿着负梯度的方向迈出小步来迭代地更新模型参数 $\theta$。基本更新规则如下所示: $$ \theta_{new} = \theta_{old} - \alpha \nabla J(\theta_{old}) $$ 在此:$\theta_{old}$ 表示当前的参数值。$\nabla J(\theta_{old})$ 是在当前参数处计算的成本函数的梯度。它指示了最陡峭的上升方向。$\alpha$ 是学习率,一个小的正数,控制着我们迈出步子的大小。选择合适的学习率很重要——如果太大,我们可能会越过最小值;如果太小,收敛可能会非常慢。$\theta_{new}$ 表示迈出一步后更新的参数值。这个过程会重复进行:在新点计算梯度,再迈出一步下坡,依此类推,直到函数值收敛到一个最小值(或者至少不再显著下降)。digraph GradientDescent { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fillcolor="#e9ecef", style="filled,rounded"]; edge [color="#495057", fontname="sans-serif"]; Start [label="初始化参数 θ"]; Compute [label="计算梯度\n∇J(θ)"]; Update [label="更新参数\nθ = θ - α∇J(θ)"]; Check [label="检查收敛\n(例如,梯度小?成本变化小?)", shape=diamond, color="#228be6", fillcolor="#a5d8ff"]; Start -> Compute; Compute -> Update; Update -> Check; Check -> Compute [label=" 否"]; Check -> End [label=" 是", color="#12b886"]; End [label="已收敛\n(找到最小值)", shape=ellipse, color="#0ca678", fillcolor="#96f2d7"]; }一个由梯度引导以找到函数最小值的迭代过程。因此,微积分不仅仅是理论上的要求;它是推动优化过程的引擎。梯度在每一步都提供了必要的方向信息,指导算法获得更好的参数值。尽管梯度下降是一个基本例子,但微积分的作用更广。理解偏导数和链式法则(我们稍后会讲到)这类内容对理解像神经网络中使用的反向传播这类更复杂的算法如何高效计算跨多层函数优化所需的梯度很有用。如果没有微积分,设计甚至理解这些强大的学习算法将困难得多。它为系统地处理成本函数复杂“地形”以找到机器学习问题的解提供了框架。