凸函数与非凸函数:为什么它在机器学习优化中很重要

2,137 阅读7分钟

介绍

如果你一直在钻研机器学习领域,那你一定在优化算法和损失最小化的背景下遇到过“凸函数”和“非凸函数”这两个词。在机器学习领域,损失函数可以是凸函数也可以是非凸函数。

凸函数和非凸函数在机器学习中起着重要作用,特别是在我们需要找到损失函数的最小值或最大值的优化问题中。

本文我们将探讨什么是凸函数和非凸函数,以及它们在机器学习中的重要性。

函数的最小值或最大值

函数的最大值和最小值分别是指函数图形上的最高点和最低点。

在数学术语中,我们可以通过取函数的导数并将其设置为零来找到函数的最大值和最小值。导数为零的点称为临界点。然后我们分析函数在这些临界点附近的行为以确定它们是最大值还是最小值。

为了更好地理解凸函数和非凸函数,掌握局部最小值、全局最小值和鞍点等概念至关重要。

image.png

局部最小值

局部极小值是指优化算法在参数空间的一个小区域中找到一组与损失函数的最小值对应的模型参数的情况。

但是这个最小值不一定是损失函数的全局最小值,它对应的是损失函数跨越整个参数空间的最小值。

全局最小值

全局最小值是损失函数的绝对最低点,对应于模型的最佳参数集。任何优化算法的目标都是找到全局最小值,这将为给定问题产生最佳结果。

鞍点

鞍点是参数空间中损失函数在一个方向上具有最小值而在另一个方向上具有最大值的点。在鞍点处,损失函数的梯度为零,这意味着优化算法可能会卡住,无法收敛到全局最小值。

鞍点对于优化算法来说可能是有问题的,并且已经提出了各种方法来处理它们,例如基于动量的方法和随机梯度下降。

损失最小化

image.png

形而上学.ai

机器学习中的术语“损失”是指模型的预测输出与实际输出之间的差异或误差。换句话说,它代表了模型期望看到的和实际观察到的之间的差异。机器学习模型的损失是借助损失函数计算的,较低的损失值表示更好的模型性能。因此,开发损失最小的机器学习模型以提高其准确性至关重要。

为了实现最小损失,我们需要调整模型的参数。损失最小化的目标是减少模型的整体误差或损失。这个过程涉及使用梯度下降等优化算法,它迭代地修改模型的参数以最小化损失。这些优化算法在机器学习中至关重要,因为它们有助于最大限度地减少损失,选择正确的算法至关重要。

选择优化算法时,必须考虑损失函数是凸的还是非凸的。 凸损失函数只有一个全局最小值,没有局部最小值,因此更容易用更简单的优化算法求解。然而,非凸损失函数同时具有局部和全局最小值,需要高级优化算法才能找到全局最小值。

到目前为止,您应该清楚地了解为什么区分凸损失函数和非凸损失函数是必不可少的,以及这些知识如何使您作为机器学习从业者受益。

在以下部分中,我们将深入研究这些概念中的每一个,以进一步加深您的理解。

凸函数

凸函数特别重要,因为它们具有唯一的全局最小值。这意味着如果我们想优化一个凸函数,我们可以肯定的是,我们总能通过搜索函数的最小值找到最佳解。这使优化更容易和更可靠。

image.png

从更数学的角度来看

函数f(x)是凸函数,如果对于 f(x) 域中的任意两个点x1x2 ,并且对于范围 [0,1] 中的任意“ t”  ,以下条件必须成立:

image.png

凸函数必须满足这个公式

简单来说,这意味着函数图上任意 两点之间的线段 位于函数图上方或上方,而不是下方。

可视化此属性的另一种方法是想象一条碗形曲线,其中函数的值随着您远离碗底而增加。这个曲率确保只有一个全局最小值,没有局部最小值,这使得优化更简单。

许多常见的损失函数,包括以下,都是凸函数:

  • L2损失
  • 日志丢失
  • L1 正则化
  • L2 正则化

非凸函数

如果函数不是凸的,则称该函数是非凸的。在几何上,非凸函数是向下弯曲或具有多个峰和谷的函数。看起来像这样:

image.png

非凸函数的挑战在于它们可以有多个局部最小值,这些点是函数值低于所有相邻点的点。

这意味着如果我们尝试优化一个非凸函数,我们可能会陷入局部最小值而错过全局最小值,而这正是我们正在寻找的最优解。

从更数学的角度来看

函数f(x) 是非凸函数,如果对于f(x) 域中的任意两个点x1x2 ,以及范围 [0,1] 中的任意“ t”  ,则:************

image.png 非凸函数必须满足这个公式

换句话说,函数图形上两点之间的线段在某些地方可能位于图形下方,从而形成山丘和山谷。

让我们用简单的术语来理解上面的陈述

想象一个函数,中间有一个“山”,就像钟形曲线。如果我们在山的相对两侧选择两个点,那么这些点之间的线段将在某个点与山相交。现在,如果函数在这个交点处的高度小于线段在同一点处的高度,那么这个函数是非凸的。

这意味着函数上存在曲线下降到连接其他两个点的直线下方的点。这就是在函数中产生山丘和山谷的原因,并且会使找到全局最小值变得更加困难。

许多常见的损失函数,包括以下,都是非凸函数:

  • 二元或分类交叉熵损失函数
  • 生成模型中的对抗损失函数

结论

凸函数和非凸函数是机器学习中的重要概念,尤其是在优化问题中。凸函数具有独特的全局最小值,使优化更容易、更可靠。另一方面,非凸函数可以有多个局部最小值,使优化更具挑战性。

使用非凸函数时,重要的是使用可以帮助我们避免陷入局部最小值的优化算法。例如,即使在非凸优化问题中,具有随机初始化和退火的梯度下降也可以帮助我们找到好的解决方案。

总之,了解凸函数和非凸函数之间的区别对于想要高效可靠地优化函数的机器学习从业者来说至关重要。