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