神经网络的成本函数是非凸的?

机器算法验证 机器学习 神经网络 损失函数
2022-02-08 05:46:53

神经网络的代价函数J(W,b), 并且声称它是非凸的我不太明白为什么会这样,因为我看到它与逻辑回归的成本函数非常相似,对吧?

如果是非凸的,那么二阶导数JW<0, 对?

更新

感谢下面的答案以及@gung 的评论,我明白了你的意思,如果根本没有隐藏层,它就是凸的,就像逻辑回归一样。但是如果有隐藏层,通过置换隐藏层中的节点以及后续连接中的权重,我们可以得到多个权重解,从而导致相同的损失。

现在更多的问题,

1)有多个局部最小值,其中一些应该具有相同的值,因为它们对应于一些节点和权重排列,对吧?

2)如果节点和权重根本不会被置换,那么它是凸的,对吧?最低标准将是全球最低标准。如果是这样,1) 的答案是,所有这些局部最小值都将具有相同的值,对吗?

4个回答

神经网络的成本函数通常既不是凸的也不是凹的。这意味着所有二阶偏导数(Hessian)的矩阵既不是半正定的,也不是半负定的。由于二阶导数是矩阵,因此它可能既不是一个也不是另一个。

为了使这类似于单变量函数,可以说成本函数的形状都不像x2也不像x2. 另一个非凸非凹函数的例子是sin(x)R. 最显着的区别之一是±x2只有一个极值,而sin有无穷多个最大值和最小值。

这与我们的神经网络有什么关系?成本函数J(W,b)也有一些局部最大值和最小值,例如,您可以在这张图片中看到。

事实是J有多个最小值也可以很好地解释。在每一层中,您使用分配了不同参数的多个节点以使成本函数变小。除了参数的值,这些节点是相同的。因此,您可以将一层中的第一个节点的参数与同一层中的第二个节点的参数交换,并在后续层中考虑这种变化。您最终会得到一组不同的参数,但无法区分成本函数的值(基本上您只是将一个节点移动到另一个地方,但保持所有输入/输出相同)。

如果您对隐藏层中的神经元进行置换并对相邻层的权重进行相同的置换,则损失不会改变。因此,如果有一个非零全局最小值作为权重的函数,那么它就不可能是唯一的,因为权重的排列给出了另一个最小值。因此函数不是凸的。

目标函数是否凸取决于网络的细节。在存在多个局部最小值的情况下,您会询问它们是否都等价。一般来说,答案是否定的,但是找到具有良好泛化性能的局部最小值的机会似乎随着网络规模的增加而增加。

这篇论文很有趣:

Choromanska 等人。(2015 年)。多层网络的损失面

http://arxiv.org/pdf/1412.0233v3.pdf

从介绍:

  • 对于大型网络,大多数局部最小值是等效的,并且在测试集上产生相似的性能。

  • 对于小型网络,找到“坏”(高值)局部最小值的概率不为零,并且随着网络规模的增加而迅速降低。

  • 努力在训练集上找到全局最小值(而不是许多好的局部最小值之一)在实践中没有用,并且可能导致过度拟合。

他们还引用了一些论文,描述了在训练大型网络时鞍点如何比局部最小值更重要。

您的更新的一些答案:

  1. 是的,通常有多个局部最小值。(如果只有一个,则称为全局最小值。)局部最小值不一定具有相同的值。通常,可能没有局部最小值共享相同的值。

  2. 不,除非它是一层网络,否则它不是凸的。在一般的多层情况下,后面层的参数(权重和激活参数)可以是前面层参数的高度递归函数。通常,某些递归结构引入的决策变量相乘往往会破坏凸性。另一个很好的例子是时间序列分析中的 MA(q) 模型。

旁注:我真的不知道置换节点和权重是什么意思。例如,如果激活函数因节点而异,并且您对节点进行了置换,那么您实际上是在优化不同的神经网络。也就是说,虽然这个置换网络的最小值可能是相同的最小值,但这不是同一个网络,所以你不能对同一个最小值的多重性做出陈述。对于最小二乘框架中的类比,例如,您正在交换一些行yX并说,因为最小yXβ和以前一样,有多少排列就有多少个极小值。