理解凸性:为什么梯度下降适用于线性回归
在机器学习中我们总会遇到线性回归问题,但是为什么我们可以用梯度下降算法来求解线性回归成本函数呢?凸性理论可以让我们更容易理解这个问题。
凸性
首先,通过凸集和凸函数定义凸度。凸集的定义如下:
在二维中,我们可以将凸集视为一个形状,无论您用什么线连接集中的两个点,都不会在集外。
(左)凸集,(中)非凸集,(右)凸集
凸集的定义正好体现在凸函数的定义中,如下所示:
你可以直观地把凸函数想象成这样的函数:如果你画一条从(x,f(x))到(y,f(y))的直线,那么凸函数的图像就会在这条直线的下方。下面是三个例子,我们应用这个直觉来确定函数是否是凸的。
(左)具有唯一优化器的凸函数,(中)非凸函数,(右)具有多个优化器的凸函数
我们可以看到中间的图不是凸的,因为当我们绘制连接图上两个点的线段时,有一些点(x,f(x))大于f(x)上对应的点。
左边和右边的图形都是凸的。不管你在这些图上画什么线段,这个线段总是在函数图的上面或者等于函数图。
现在我们对凸集和凸函数有了一些直觉和理解,让我们转向线性回归,看看凸性在哪里起作用。
线性回归回顾
假设在n维空间中有m个数据样本。每个样本都有n个映射到单个输出值的特性。我们可以访问输入和输出数据,但是我们想弄清楚输入数据和输出数据之间是否存在线性关系。这就是线性回归模型的用处。该模型的形式为:
现在,我们确定最佳线性模型的方法是求解模型的系数,使我们的估计输出值与实际输出值之间的误差最小化。我们可以用线性最小二乘法来实现。因此,我们的成本函数如下:
我们称这个函数为“成本”函数,因为我们计算的是估算值与实际值之间的总误差或成本。由于线性最小二乘问题是一个二次函数,我们可以用解析的方法最小化这个成本函数。然而,对于大型机器学习数据集,使用一种称为梯度下降的迭代方法来寻找最佳系数通常计算速度更快。如何使用梯度下降来最小化成本函数的详细说明如下:
成本函数的凸性
现在我们来看一些凸优化理论。如上所示,梯度下降法被应用于寻找成本函数的全局最小值。但是我们怎么知道存在一个全局最小值呢?当最小化函数时,凸函数可确保如果存在最小值,则它将是全局最小值。前面我们看到二次函数是凸函数。因为我们知道线性最小二乘问题是二次函数,所以我们也知道它是一个凸函数。
二次函数(例如线性最小二乘问题)是强凸的。这意味着该函数具有唯一的最小值,而该最小值是全局最小值。因此,当我们应用梯度下降算法时,我们可以确信它将收敛于正确的最小值。如果我们试图最小化的函数是非凸的,则梯度下降可能会收敛于局部最小值而不是全局最小值。这就是为什么使用非凸函数要困难得多。这很重要,因为许多机器学习模型(最著名的是神经网络)是非凸的。您可以看一个示例,梯度下降以最简单的形式没有找到全局最小化器。
在非凸函数上收敛到局部最小值的梯度下降的示例