ADD / XOR / ROL:帮助我更好理解神经网络的实验,第3篇
实验背景
在上一次发布相关文章后,时隔9个月我才再次发布,而这次仅隔数日?无论如何,在上次文章之后,我忍不住开始进行一些实验,试图观察是否能在训练的神经网络中诱发“过拟合”——让一个高度参数化的神经网络仅仅“记忆”训练点,从而导致泛化能力差。
在之前文章中进行的实验中,一个关键优势是我知道训练数据的“真实分布”——输入图像。因此,过拟合的网络会找到正确着色训练点的方法,但不会通过在白色背景上绘制黑色圆环来实现(这样在训练数据上正确但无法泛化)。
实验设计
我启动了以下实验:从一个参数数量远多于训练点的网络开始。由于我们从5000个训练点开始,我选择了30层、每层30个神经元,总参数数量约为27000个。如果冯·诺依曼说他可以用4个参数画一头大象,并用5个参数让它的鼻子扭动,他肯定能用27000个参数拟合5000个训练点?
实验结果
令我非常惊讶的是,没有任何过拟合的迹象:网络非常清楚地学会了绘制一个圆,而不是拟合单个点。这有些令人惊讶,但也许这只是因为我们的训练点在空间中相对“密集”——5000个训练点占1024*1024的0.4%,这是总空间的一大部分。
作为下一步,我训练了相同的网络,但逐渐减少训练数据量:2500点、1250点、625点和312点。用27000个参数训练312个数据点肯定会产生明显的过拟合迹象?
在2500点时,虽然训练过程明显变慢,但基本概念似乎学习得很好:
当我们降到更低的625点时,可以看到网络在学习概念时更加困难,但……它似乎仍然有强烈的偏向于创建类似圆环的几何形状,而不是过拟合单个点?
学习过程似乎变慢了——到6000轮时,网络还没有重现整个圆环——训练似乎不太稳定——但看起来网络正在朝着正确的方向前进。如果我们再次将训练点减半会怎样?
这有点神秘——我本以为现在我们应该明显处于网络应该尝试拟合单个点的状态,我们只给了它空间中0.02%的点。网络显然在学习上很困难,到6000轮时还远未“准备好”——但它肯定在朝着圆环形状努力。
问题与思考
这些实验给我提出了一些问题:
-
网络似乎有某种内置的倾向形成连续区域——甚至可能是几何形状——数据需要变得非常稀疏才能发生真正的过拟合。我不清楚为什么这里会出现形状——网络完全可以只选择训练点所在的多面体及其直接邻居,然后用具有大参数的陡峭线性函数仅将单个点着色为黑色。但这里没有发生这种情况;有某种机制或过程导致形状的出现。
-
似乎存在一种权衡——如果你有更少的数据,你需要训练更长时间,也许要长得多。但我不清楚我们是否即使只有312个数据点也无法达到相对较好的近似。
下一步计划
作为下一步,我正用20000轮而不是6000轮重新运行这些实验,以查看在非常稀疏的训练数据上训练的网络是否会随着时间的推移赶上拥有更多数据的网络。
发布日期:2025年4月10日
作者:halvar.flake
发布时间:上午12:36