使用相同数据训练的两个 NN 的显着差异 "weights" 和 "bias"
Significantly different "weights" and "bias" of two NN trained using same data
我最近了解到神经网络的神奇世界。我开始关注 Neural Networks and Deep Learning,它实现了一个神经网络来识别手写数字。它实现了一个 3 层网络(1 个输入、1 个隐藏层和 1 个输出层)并使用 MNIST 数据集进行训练。
我刚刚发现,具有相似层 [784,30,10] 架构并使用相同数据集训练的两个 NN 的权重矩阵非常不同。偏差矩阵也是如此。
一般直觉告诉我们,由于我们使用多个时期并随机化每个时期的数据,因此两个 NN 的权重矩阵应该收敛到相似的值。但结果却大不相同。可能是相同的原因吗?
这里是NN1的前几个权重:
[array([[-1.2129184 , -0.08418661, -1.58413842, ..., 0.14350188,
1.49436597, -1.71864906],
[ 0.25485346, -0.1795214 , 0.14175609, ..., 0.4222159 ,
1.28005992, -1.17403326],
[ 1.09796094, 0.66119858, 1.12603969, ..., 0.23220572,
-1.66863656, 0.02761243],.....
这是 NN2 的前几个权重,具有相同的层数并使用相同的训练数据、epochs 和 eta 进行训练。
[array([[-0.87264811, 0.34475347, -0.04876076, ..., -0.074056 ,
0.10218085, -0.50177084],
[-1.96657944, -0.35619652, 1.10898861, ..., -0.53325862,
-1.52680967, 0.26800431],
[-1.24731848, 0.13278103, -1.70306514, ..., 0.07964225,
-0.88724451, -0.40311485],
...,
两个NN的权重肯定不会一样,除非是重大巧合
这是因为您分配的初始权重是随机的,就像您在问题中提到的那样'the data at each epoch is randomly chosen'。
General intuition says that since we are using multiple epochs and
randomizing the data at each epoch, the weight matrix of both NN
should converge to similar values
不幸的是,这不是真的。这是因为神经网络的损失情况非常复杂,有很多泛化能力很好的局部最小值。由于初始化和训练过程的随机性,您基本上可以保证以良好的性能收敛到一组不同的参数。
另请注意,随机性不足以产生不同的结果。例如,无论样本的初始值和顺序如何,线性回归总是会收敛到相同的参数。只有 convex 损失函数才能保证收敛到相同的参数。
我最近了解到神经网络的神奇世界。我开始关注 Neural Networks and Deep Learning,它实现了一个神经网络来识别手写数字。它实现了一个 3 层网络(1 个输入、1 个隐藏层和 1 个输出层)并使用 MNIST 数据集进行训练。
我刚刚发现,具有相似层 [784,30,10] 架构并使用相同数据集训练的两个 NN 的权重矩阵非常不同。偏差矩阵也是如此。
一般直觉告诉我们,由于我们使用多个时期并随机化每个时期的数据,因此两个 NN 的权重矩阵应该收敛到相似的值。但结果却大不相同。可能是相同的原因吗?
这里是NN1的前几个权重:
[array([[-1.2129184 , -0.08418661, -1.58413842, ..., 0.14350188,
1.49436597, -1.71864906],
[ 0.25485346, -0.1795214 , 0.14175609, ..., 0.4222159 ,
1.28005992, -1.17403326],
[ 1.09796094, 0.66119858, 1.12603969, ..., 0.23220572,
-1.66863656, 0.02761243],.....
这是 NN2 的前几个权重,具有相同的层数并使用相同的训练数据、epochs 和 eta 进行训练。
[array([[-0.87264811, 0.34475347, -0.04876076, ..., -0.074056 ,
0.10218085, -0.50177084],
[-1.96657944, -0.35619652, 1.10898861, ..., -0.53325862,
-1.52680967, 0.26800431],
[-1.24731848, 0.13278103, -1.70306514, ..., 0.07964225,
-0.88724451, -0.40311485],
...,
两个NN的权重肯定不会一样,除非是重大巧合
这是因为您分配的初始权重是随机的,就像您在问题中提到的那样'the data at each epoch is randomly chosen'。
General intuition says that since we are using multiple epochs and randomizing the data at each epoch, the weight matrix of both NN should converge to similar values
不幸的是,这不是真的。这是因为神经网络的损失情况非常复杂,有很多泛化能力很好的局部最小值。由于初始化和训练过程的随机性,您基本上可以保证以良好的性能收敛到一组不同的参数。
另请注意,随机性不足以产生不同的结果。例如,无论样本的初始值和顺序如何,线性回归总是会收敛到相同的参数。只有 convex 损失函数才能保证收敛到相同的参数。