MLP 是否总能找到局部最小值
数据挖掘
神经网络
成本函数
2021-10-08 18:24:06
2个回答
当存在单层时,损失函数只是关于权重参数(和特定数据)的简单凸函数。更准确地说,它们可以证明相对于简单模型(线性或逻辑回归)中的权重总是凸的,但相对于更深网络的权重则不然。
您可以通过在找到最小值时考虑交换权重来证明具有 2 层或更多层的网络中必须存在多个最小值 - 因此损失函数不能是凸的。与单层网络不同,可以将馈送周围的权重交换到隐藏层,同时保持相同的输出。例如,您可以交换输入层和隐藏层之间的权重,以使神经元输出 1 和神经元输出 2 的值相反。然后,您还可以将这些神经元的权重交换到输出,以便网络仍然输出相同的值。网络将有一组不同的权重,但产生相同的输出,因此这种新的权重排列也是损失函数的最小值。它是“相同”的网络,但权重矩阵不同。很明显,必须有非常多的完全等效的解决方案,所有这些解决方案都至少是真正的最小值。
这是一个有效的例子。如果您有一个具有 2 个输入、隐藏层中的 2 个神经元和一个输出的网络,并且您发现以下权重矩阵是最小值:
然后以下矩阵提供相同的解决方案(网络为所有输入输出相同的值):
正如我们所说的第一组 6 个参数是一个解/最小值,那么第二组 6 个参数也必须是一个解(因为它输出相同)。因此,损失函数在权重方面有 2 个最小值。通常对于具有一个隐藏层的 MLP,包含神经元,有产生相同输出的权重排列。这意味着至少有最小值。
虽然这并不能证明存在更差的局部最小值,但它肯定表明损失表面一定比简单的凸函数复杂得多。