如何检查我的损失函数是否凸?

人工智能 目标函数 收敛 凸函数
2021-11-10 06:01:15

损失函数在计算损失时很有用,然后我们可以更新神经网络的权重。因此,损失函数在训练神经网络中很有用。

考虑这个答案的以下摘录

原则上,可微性足以运行梯度下降。也就是说,除非L是凸的,梯度下降不能保证收敛到全局最小化器在实践中,神经网络损失函数无论如何都很少是凸的。

这意味着,如果我们使用梯度下降算法,损失函数的凸性特性有助于确保收敛。这个问题还有另一个处理交叉熵损失的缩小版本。但是,这个问题实际上是一个普遍的问题,并不局限于特定的损失函数。

如何知道损失函数是否凸?有什么算法可以检查吗?

2个回答

它与其他功能相同。您可以在本讲座中使用定理 2 (来自普林斯顿大学):

在此处输入图像描述

(ii) 条件是关于凸性的一阶条件,(iii) 是二阶条件。您还可以在本书的第 3 章(Stephen Boyd 和 Lieven Vandenberghe 的“凸优化”)中找到更多详细信息。

对于至少两次可微函数的情况,@OmG 给出了答案——您需要查看 Hessian 的特征值。

对于一维情况,图片相当直观:

在此处输入图像描述

如果函数增长快于线性并偏离最小值,则该函数是凸函数。

对于平面上任何投影的多维情况,切割损失超曲面需要与一维情况相同的图片。假设 Hessian 矩阵是正定的,这就满足了。

在此处输入图像描述

如果函数不是二次可微的,情况就会变得更复杂,我不知道有什么通用算法。

但是,对于分段线性函数的情况,您可以想象类似|x|,或更通用的函数,例如:

f(x)={αxα>0,x>0βxβ<0,x<0

如果在这种奇点附近的损失超曲面的任何部分具有这种形式 - 该函数也将是凸的。

在此处输入图像描述