Python 显著不同”;重量“;及;偏袒;使用相同数据训练的两个神经网络

Python 显著不同”;重量“;及;偏袒;使用相同数据训练的两个神经网络,python,machine-learning,deep-learning,neural-network,backpropagation,Python,Machine Learning,Deep Learning,Neural Network,Backpropagation,我最近被介绍到了神经网络的神奇世界。我开始使用NN来识别手写数字。它实现了一个三层网络(1个输入、1个隐藏和1个输出),并使用MNIST数据集进行训练 我刚刚发现,两个具有类似层[784,30,10]结构且使用相同数据集训练的神经网络的权重矩阵非常不同。偏置矩阵也是如此 一般直觉认为,由于我们使用多个历元并在每个历元对数据进行随机化,两个神经网络的权重矩阵应收敛到相似的值。但结果却大不相同。可能是同样的原因吗 以下是NN1的前几个权重: [array([[-1.2129184 , -0.0841

我最近被介绍到了神经网络的神奇世界。我开始使用NN来识别手写数字。它实现了一个三层网络(1个输入、1个隐藏和1个输出),并使用MNIST数据集进行训练

我刚刚发现,两个具有类似层[784,30,10]结构且使用相同数据集训练的神经网络的权重矩阵非常不同。偏置矩阵也是如此

一般直觉认为,由于我们使用多个历元并在每个历元对数据进行随机化,两个神经网络的权重矩阵应收敛到相似的值。但结果却大不相同。可能是同样的原因吗

以下是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的前几个权重,具有相同的层数,并使用相同的训练数据、历元和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的权重肯定不会相同,除非出现重大巧合


这是因为您分配的初始权重是随机的,而且正如您在问题“每个历元的数据都是随机选择的”中提到的那样

除非有重大巧合,否则两个NN的权重肯定不会相同

这是因为您分配的初始权重是随机的,而且正如您在问题“每个历元的数据都是随机选择的”中提到的那样

一般的直觉说,因为我们使用了多个时代 将每个历元的数据随机化,两个神经网络的权重矩阵 应该收敛到类似的值

不幸的是,事实并非如此。这是因为神经网络的损失情况非常复杂,有大量的局部极小值,可以很好地推广。由于初始化和训练过程的随机性,基本上可以保证以良好的性能收敛到不同的参数集

还要注意,随机性不足以产生不同的结果。例如,无论示例的初始值和顺序如何,线性回归总是收敛到相同的参数。只有凸损失函数才能保证收敛到相同的参数

一般的直觉说,因为我们使用了多个时代 将每个历元的数据随机化,两个神经网络的权重矩阵 应该收敛到类似的值

不幸的是,事实并非如此。这是因为神经网络的损失情况非常复杂,有大量的局部极小值,可以很好地推广。由于初始化和训练过程的随机性,基本上可以保证以良好的性能收敛到不同的参数集


还要注意,随机性不足以产生不同的结果。例如,无论示例的初始值和顺序如何,线性回归总是收敛到相同的参数。只有凸损失函数才能保证收敛到相同的参数。

我对这一点不熟悉,因此,我没有理解!!我问这个可能是错的,所以,请善待我。因为梯度下降是在使代价函数最小化并达到函数极小值的方向上移动权重。为什么权重没有收敛到相同的值。毕竟,我们在两个NN中都多次遍历数据。我们能说存在多个权重组合吗?如果是,那么,我们可能会达到函数的极小值,而不是它的全局极小值,在应用梯度下降之后,我们可能会陷入其中。我们如何确保达到成本函数的全局最小值,并且不使用“随机选择”的数据来收敛权重值。我在这方面是新手,因此,我不明白!!我问这个可能是错的,所以,请善待我。因为梯度下降是在使代价函数最小化并达到函数极小值的方向上移动权重。为什么权重没有收敛到相同的值。毕竟,我们在两个NN中都多次遍历数据。我们能说存在多个权重组合吗?如果是,那么,我们可能会达到函数的极小值,而不是它的全局极小值,在应用梯度下降之后,我们可能会陷入其中。我们如何确保达到成本函数的全局最小值,并且不使用“随机选择”的数据来收敛权重值。这里涉及到很多随机性。两种重要类型:1)训练前如何初始化权重,2)训练示例如何洗牌。某些类型的随机性可以通过设置随机种子来修复,具体取决于您使用的框架/库,但某些操作可能仍然是不确定的。一句话:永远不要假设两次训练都会得到相同的结果。这里有很多随机性。两种重要类型:1)训练前如何初始化权重,2)训练示例如何洗牌。某些类型的随机性可以通过设置随机种子来修复,具体取决于您使用的框架/库,但某些操作可能仍然是不确定的。一句话:千万不要以为两次训练都会得到同样的结果。谢谢你这么精彩的解释。在这里提问有点离题,但我无法在最初的问题页面上发表评论,所以在这里寻求帮助。我尝试在以下链接中使用两种方法实现查询:1)使用新的NN模型将输出转换回输入。2) 正如所建议的,在具有给定输出和未知输入的预训练神经网络上使用反向传播。第一个似乎有效,第二个似乎无效。你能在这里或问题页面上添加你对它的见解吗?@NipunPruthi下面的链接,第二种方法应该有效。你为什么不在这个网站上问一个新问题并提供更多细节呢?好的:),实际上他们不允许在短时间内问两个问题