深度学习模型是否超出了其数据集估计熵所需的容量?

数据挖掘 神经网络 深度学习 信息论
2021-09-14 15:19:02

这个问题可能看起来有点奇怪。我正在对信息论进行一些自学,并决定对深度学习进行一些更正式的调查。请耐心等待我尝试解释。我将 MNIST 的一个大型“训练”子集作为我的豚鼠。

1) 将 MNIST 中的每个图像都转换为“黑白”(像素值只有 0 或 1)

2)对所有数据图像求和以在像素上构建直方图 - 我计算了每个像素在数据集中获得 1 值的次数

3)归一化直方图以获得“真实”概率分布的估计

4)由此,我得到以下概率分布(显示为 matplotlib 的热图):

[MNIST 训练集的概率分布[1]

5)现在我计算了熵并得到: 191

6) 根据 David MacKay 在他的信息理论书中的说法,我们可以将神经网络解释为噪声通道,并将每个神经元视为具有 2 位容量。尽管他确实声明要谨慎使用这个想法。他的书第 40 章http://www.inference.org.uk/itila/book.html )

7) 因此,作为粗略估计(并且要小心),我们可以说我们需要一个由 95 个神经元组成的神经网络,以便能够对这个 MNIST 训练集 (190/2) 的标签进行编码 8) 现在我们可以得到我的问题:

即使这是一个非常“粗略”的计算,一个能够学习标签的神经网络不应该至少在 95 个神经元的范围内吗?例如,为什么我们需要一个具有 21840 个参数的神经网络才能获得 99% 的准确率?(考虑到 MNIST 的 PyTorch 示例中的那个:https ://github.com/pytorch/examples/blob/master/mnist/main.py )

1个回答

当前的想法是拟合过度参数化的神经网络更容易,因为局部极值是表达同一事物的不同方式,而在最小神经网络中,您必须担心获得全局极值:

这背后的微妙原因是较小的网络更难使用梯度下降等局部方法进行训练:很明显,它们的损失函数具有相对较少的局部最小值,但事实证明,这些最小值中的许多更容易收敛,而且它们很糟糕(即损失很大)。相反,更大的神经网络包含明显更多的局部最小值,但这些最小值在实际损失方面要好得多。由于神经网络是非凸的,因此很难从数学上研究这些属性,但已经进行了一些尝试来理解这些目标函数,例如在最近的一篇论文多层网络的损失表面中。在实践中,你会发现,如果你训练一个小型网络,最终的损失会显示出很大的方差——在某些情况下,你很幸运并收敛到一个好地方,但在某些情况下,你会陷入一个糟糕的最小值。另一方面,如果你训练一个大型网络,你会开始找到许多不同的解决方案,但最终实现损失的方差会小得多。换句话说,所有解决方案都差不多一样好,并且较少依赖随机初始化的运气。

CS231n 用于视觉识别的卷积神经网络