机器学习领域的数学非常有趣,我们很高兴您点击了链接了解详情。但请注意,TensorFlow 会为您处理所有梯度计算,因此您实际上不必了解此处提供的微积分。
偏导数
多变量函数指的是具有多个参数的函数,例如:
$$f(x,y) = e^{2y}\sin(x)$$
对 \(x\)的 \(f\) 偏导数,表示如下:
$$ \partial f \over \partial x $$
是 \(f\) (仅视作 \(x\)的函数)的导数。如需找到以下内容:
$$\partial f \over \partial x $$
您必须保持 \(y\) 恒定不变(因此 \(f\) 现在是单变量的函数 \(x\)),并取 \(f\)相对于 \(x\)的常规导数。例如,当 \(y\) 固定为 1 时,前面的函数变为:
$$ f(x) = e^2\sin(x) $$
这只是一个变量 \(x\)的函数,其导数为:
$$ e^2\cos(x) $$
一般来说,假设 \(y\) 固定, \(f\) 对 \(x\) 的偏导数的计算公式如下:
$$\frac{\partial f}{\partial x}(x,y) = e^{2y}\cos(x)$$
同理,如果我们设定 \(x\) 固定值, \(f\) 对 \(y\) 的偏导数为:
$$ \frac{\partial f}{\partial y}(x,y) = 2e^{2y}\sin(x) $$
直观地说,偏导数可以让您知道当您略微变动一个变量时函数的变化幅度。在前面的示例中:
$$ \frac{\partial f}{\partial x} (0,1) = e^2 \approx 7.4 $$
因此,当您从 \((0,1)\)开始,保持 \(y\) 恒定不变并稍微移动 \(x\) 时,\(f\) 变化量会是变化量的 7.4 倍左右 \(x\)。
在机器学习中,偏导数主要与函数的梯度结合使用。
渐变
函数的梯度是偏导数相对于所有自变量的矢量,表示如下:
$$ \nabla f $$
例如,如果:
$$ f(x,y) = e^{2y}\sin(x) $$
则:
$$\nabla f(x,y) = \left(\frac{\partial f}{\partial x}(x,y), \frac{\partial f}{\partial y}(x,y)\right) = (e^{2y}\cos(x), 2e^{2y}\sin(x))$$
请注意以下几点:
$$\nabla f$$
|
指向函数增长最快的方向。 |
$$ {-\nabla f} $$
|
指向函数下降最快的方向。 |
该矢量中的维度个数等于 \(f\)公式中的变量个数;换言之,该矢量位于该函数的域空间内。例如,以下函数 \(f(x,y)\)的图表:
$$ f(x,y) = 4 + (x - 2)^2 + 2y^2 $$
在三维空间中使用 \(z = f(x,y)\) 看起来就像一个山谷,最小值为 \((2,0,4)\):
\(f(x,y)\) 的梯度是一个二维矢量,可让您了解\((x,y)\) 向哪个方向移动,高度增加的最大幅度。因此,渐变的负值可使您朝着高度降低的最大方向移动。换言之,梯度矢量的负值指向山谷。
在机器学习中,梯度用于梯度下降法。在尝试最小化的许多变量中,经常会有一个损失函数,为此,我们会尝试跟踪函数梯度的负值。