像 $f(x) = x^2$ 或 $f(x) = 3x + 5$ 这样的函数是单变量函数:它们接受一个输入 ($x$) 并产生一个输出。你可以轻松地将它们想象成2D图上的曲线,显示当单个输入变化时输出如何变化。"然而,许多情况,尤其是在机器学习中,涉及不止一个影响因素。想想预测房屋价格。它仅仅基于其平方英尺大小吗?可能不是。你可能还会考虑卧室数量、房屋年龄或社区的质量评分。每一个都是一个独立的输入变量。"同样,当我们训练机器学习模型时,例如我们稍后会看到的简单线性回归模型 $y = mx + b$,我们需要找到 $m$(斜率)和 $b$(截距)的最佳值。模型的表现,通常通过“成本”或“误差”函数来衡量,取决于为 $m$ 和 $b$ 选择的特定值。这就引出了多变量函数。不仅仅是 $f(x)$,我们现在处理的函数类型有:$f(x, y)$,它接受两个输入,$x$ 和 $y$。$f(x_1, x_2, x_3)$,它接受三个输入。通常来说,$f(x_1, x_2, \dots, x_n)$,它接受 $n$ 个输入。所有这些函数仍然产生一个单一的输出值。输出取决于所有提供输入值的具体组合。定义多变量函数多变量函数将一组输入值映射到一个单一的输出值。我们可以将其写为 $z = f(x, y)$(用于两个变量)或 $y_{output} = f(x_1, x_2, \dots, x_n)$(用于 $n$ 个变量)。在这里,$x_1, x_2, \dots, x_n$ 被称为自变量,而产生的输出($z$ 或 $y_{output}$)是因变量。让我们看一个简单例子: $$ f(x, y) = x^2 + y^2 $$ 这个函数接受两个输入,$x$ 和 $y$。为了得到输出,我们将每个输入平方然后将结果相加。如果 $x=1$ 且 $y=2$,那么 $f(1, 2) = 1^2 + 2^2 = 1 + 4 = 5$。如果 $x=3$ 且 $y=-1$,那么 $f(3, -1) = 3^2 + (-1)^2 = 9 + 1 = 10$。另一个例子,可能更接近你在模型误差方面可能看到的情况: $$ g(w, b) = (w \cdot 5 + b - 12)^2 $$ 在这里,函数 $g$ 取决于两个输入,$w$ 和 $b$。如果 $w=2$ 且 $b=3$,那么: $$ g(2, 3) = (2 \cdot 5 + 3 - 12)^2 = (10 + 3 - 12)^2 = (1)^2 = 1 $$ 在机器学习中,$w$ 和 $b$ 可能表示一个简单模型的权重或参数,值 $5$ 可能是一个来自我们数据的输入特征,而 $12$ 可能是真实的目标值。函数 $g(w, b)$ 可以表示该单个数据点的平方误差。训练模型的目标是找到使该误差(以及所有数据点的误差)尽可能小的 $w$ 和 $b$ 值。可视化多变量函数我们看到,单变量函数 $f(x)$ 可以被可视化为2D曲线。那么像 $z = f(x, y)$ 这样的双变量函数呢?由于我们有两个输入($x$, $y$)和一个输出($z$),我们需要三个维度来绘制函数。我们可以想象一个 $xy$ 平面表示可能的输入组合,以及一个垂直的 $z$ 轴表示输出。对于输入平面中的每个点 $(x, y)$,函数 $f(x, y)$ 给出高度 $z$。绘制这些点 $(x, y, z)$ 通常会在3D空间中形成一个曲面。考虑我们的例子 $f(x, y) = x^2 + y^2$。这个函数描述了一个碗状,称为抛物面,开口向上。它的最低点在 $(x, y) = (0, 0)$,此时 $f(0, 0) = 0$。{"data": [{"type": "surface", "x": [-2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2], "y": [-2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2], "z": [8, 5, 4, 5, 8, 5, 2, 1, 2, 5, 4, 1, 0, 1, 4, 5, 2, 1, 2, 5, 8, 5, 4, 5, 8], "colorscale": [[0, "#4263eb"], [0.5, "#a9e34b"], [1, "#f76707"]], "showscale": false}], "layout": {"margin": {"l": 10, "r": 10, "b": 10, "t": 10}, "scene": {"xaxis": {"title": "x"}, "yaxis": {"title": "y"}, "zaxis": {"title": "z = f(x, y)"}}, "width": 500, "height": 400}}$z = x^2 + y^2$ 的曲面图。输入 $x$ 和 $y$ 构成基平面,高度 $z$ 表示函数的输出。值得注意的是,最小值出现在原点 (0, 0)。输入多于两个的函数呢? 可视化 $f(x_1, x_2, x_3)$ 需要4个维度(3个用于输入,1个用于输出),而 $f(x_1, \dots, x_n)$ 将需要 $n+1$ 个维度。我们的大脑无法直接可视化超过三个维度的空间!然而,我们发展的数学思想在更高维度中也能正常运用。即使我们无法绘制一个依赖于数千个模型参数的成本函数图,我们仍然可以分析调整这些参数时成本如何变化。这为何重要了解多变量函数非常重要,因为大多数机器学习模型具有多个可调整参数(如神经网络中的权重和偏差),并且通常处理具有多个特征的输入数据。因此,衡量模型表现的成本函数自然是许多变量(即参数)的函数。训练中我们的目标通常是使这个成本函数最小化。由于成本取决于多个参数,我们需要一种方法来弄清楚改变每个单独参数如何影响成本。这正是偏导数这一方法开始起作用的地方,我们接下来会研究它。它使我们能够一次检查相对于一个变量的变化率,即使函数依赖于许多其他变量。