
开局一把牌,怎么都能打 | 神经网络从“白痴”训练到“专家”水平,其参数并没有太大的变化
这两天重读了一篇很有趣的论文,《Effect of the initial configuration of weights on the training and function of artificial neural networks》( https://arxiv.org/pdf/2012.02550 )。它非常直白的展示了人工神经网络训练过程中的初始权重配置对网络功能和性能的影响。
通俗来讲,神经网络就像是一台复杂的机器,它内部有很多“开关”(也就是权重),这些开关从一开始就有随机的初始设置。在训练过程中,这些开关的设置会一点一点调整,目标是让网络最终能够给出尽量准确的输出。
作者通过分析发现,在使用常见的训练方法(SGD/AdamW等)时,网络的最终状态通常不会离初始设置太远。这就好比网络的学习是在“微调”初始状态,而不是完全重置或重新安排所有开关。
训练算法通常不需要走到离初始设置太远的地方,在初始设置的周围就能找到理想的解。
受论文思路的启发,我做了一个实验,来观察上述现象。( 详细完整的代码在 https://github.com/zhangfaen/effect-of-the-initial-configuration-of-weights )。
我们定义一个简单的多层神经网络。
其中nn.Linear(128, 128)这个参数矩阵,是随机初始化的。我们制作一个分辨率图片是128*128的图片,图片中我们故意放了一个水印(“中”)字。
图1
然后,我们把这个图片叠加到nn.Linear(128, 128)这个参数矩阵中。
我们把这个参数矩阵当一个图片看的话,会是这个样子:
图2
然后,我们用著名的手写字符识别数据集来训练这个模型。
训练完成后,我们再用图片的方式看一下nn.Linear(128, 128)这个参数矩阵,如图3。
图3
可以看到,模型从最初的8.92%准确率(就是随机猜的准确率),到95.77%的准确率,nn.Linear(128, 128)这个参数矩阵居然没有什么大的变化(看 图2 和 图3)。
下面的图中第1行,10个“中”字,表示训练过程10个epoch中,这个nn.Linear(128, 128)这个参数矩阵的整体数值如何在变(其实没怎么变)
所以,一个深度神经网络模型,初始参数配置不管怎样,从“白痴”训练到“专家”水平,其实其内部参数并没有太大的变化。是不是有点 “朽木皆可雕也” 或者 “开局一把牌,怎么都能打”的意思?
再感受一下论文中的图和一个论述,启发且有趣
本文转载自后向传播,作者: 张发恩
