我正在使用ConvNet对从一系列灰度红外图像(二进制分类)中裁剪的对象进行分类 . 网络输入的大小(WxHxN),其中N> 3 .

dataset is small ,只有1-1.5K样本用于训练 . 因此,我使用的是一个相对较小的ConvNet(32,32,64,64,128,128,256,256 FC 512),最后3层有丢失(0.5);用tflearn和/或keras用 TensorFlow 实现 . 我还使用数据增强(随机模糊,水平翻转,随机旋转) .

当我使用带有learning_rate = 1e-4Adam optimizer 时,它会在几个时期收敛到99%的训练精度和非常小的损失,但验证损失不断增加,准确度波动很大 . 最终,测试集性能约为50-60%,几乎与随机猜测(二进制分类)相同 .

我尝试了L2权重正则化,批量归一化;不同的批量大小,较小的网络等 . 但是,它没有用 .

现在,我正在探索各种优化算法 . 似乎, tflearn.optimizers.Nesterov(learning_rate=2e-3, momentum=0.9, lr_decay=0.90, decay_step=100) ,学习速度慢得多,但更顺畅;验证错误不会像以前那样增加,准确性不会大幅改变(大多数情况下,缓慢增加或保持不变) . 准确性更好,在50个时期约为60%,在100个时期约为70% .

现在的问题是:似乎优化算法(及其参数)的选择会影响过度拟合 . 但是,我还没有看到任何关于此的工作 . 是否有任何工作/论文/博客详细阐述了这个问题?你有经验可以分享吗?哪些优化算法适用于小型数据集,并且更好地处理过度拟合?