这是在参加深度学习演讲时想到的一个相当普遍的问题。已经用 32x32 图像训练了一个深度网络,有 10 个类(CIFAR 数据集)。数据集中大约有 60000 张图像。演讲者表示,该网络已经学习了超过 1000 万个参数。这对我来说似乎有点奇怪,因为所有这些图像中的像素数都在这个顺序附近。如何使用这么多参数证明模型的合理性?过度拟合数据集的机会不会随着参数数量的增加而增加吗?
你的模型可能有多少个参数?
机器算法验证
分类
神经网络
深度学习
2022-03-05 02:35:30
1个回答
是的,在 CIFAR-10 上训练的模型不应该有 1000 万个参数,因为它的输入维度很小(32*32*3 = 3072)。它几乎不能达到数百万个参数,但该模型容易过度拟合。这是在 CIFAR-10 上训练的合理的卷积网络结构;
2个卷积层1个全连接层和1个分类层(也是全连接的)。大多数参数都集中在最后两层,因为它们是完全连接的。
- 第一个卷积层的过滤器大小为 7x7@32
- 第一个池化层的池化大小为 2x2
- 第二个卷积层的过滤器大小为 5x5@16
- 第二个池化层的池化大小为 1x1(无池化)
我假设池化的有效卷积和步幅数等于池化大小。在他的配置下,第一个特征图的维度是 (32-7+1)/2 x (32-7+1)/2 = 13x13@32。第二个特征图的维度是 (13-5+1)/1 x (13-5+1)/1 = 9x9@16
由于卷积层在进入全连接层之前被滚动成向量,因此第一个全连接层的维度为 9*9*16 = 1296。假设最后一个隐藏层包含 500 个单元(这个超参数是最重要的一个参数总数)。最后一层是10。
参数总数为 7*7*32 + 5*5*16 + 1296*500 + 500*10 = 1568 + 400 + 648000 + 5000 = 654968。
但我希望较小的网络可以产生更好的结果,因为样本数量相对较少。因此,如果将 500 个神经元减少到 100 个神经元,则参数总数减少到 1568 + 400 + 129600 + 5000 = 136568。也许最好在第二层包括另一个池化层,或者丢弃第一个全连接层。
如您所见,大部分参数都集中在第一个全连接层。我不认为更深的网络可以产生显着的收益,因为输入层的维度很小(相对于 ImageNet)。所以你的观点是对的。
如果您担心过度拟合,可以查看Alex 的 convnet 论文的“Recuding overfitting”部分
其它你可能感兴趣的问题