我一直在考虑这个问题已有一段时间了,而且我还没有找到一个我很满意的答案。
想象一下,我们已经在MNIST数字数据库上训练了一个DNN,该数据库以非常高的精度对样本外观察进行分类。然后我们将DNN显示为4和3的异常图像,如下所示。 DNN会正确分类吗?我不这么认为,因为隐藏层根本就没有图像中存在的具有不寻常数字(各种卷曲)的特征,因此它可能会错误地分类它们。
我还认为仅对这些不寻常数字的数据库进行培训会很困难。隐藏层将如何存储(非常相似)功能?直觉上,它会过度拟合这个数据库,因为隐藏的神经元会因卷曲之间的相似性而学习所有不必要的特征。
我认为训练这样一个DNN的方法是以某种方式学习构成数字的“条形”/卷曲之间的角度,例如:在数字'4'中,条形之间有一个直角,但我不太确定。我也找不到处理这个问题的论文。
答案 0 :(得分:1)
很抱歉,但我认为尝试构建代表角度的功能并不符合DNN的精神:深度学习的重点在于您没有任何手动设计此类详细功能,但您让网络学习它们并自动发现目标任务最相关的功能。
对于您的问题,更“主流”的方法是采用现有的数字数据库并破坏数字图像,以便获得类似于您的示例的图片。例如,您可以尝试用随机曲率替换N个像素的直线。
这种方法通常用于深度学习以增加训练数据集,同时提高网络对某种噪声的鲁棒性。因此,传统的腐败方法包括翻译/旋转数字图像。
但是请注意,对于您展示的两张图片,更简单的解决方案可能是模糊或像素化或降低清晰度,或者更好地计算带剪裁的光谱变换,以便仅捕获全局/更大的形状并且更小的变化被过滤掉了。
答案 1 :(得分:0)
如果你看看MNIST上的最佳结果,你会发现它们(我上次检查过)在训练期间每个时期都使用弹性变形。
在您的情况下,您必须添加这种类型的变形:弹性振荡(或?)。
如果您确定只有这种类型的信息,那么您可以尝试简化数字(曲线的主要部分而不是这些振荡),然后将其提供给您的DNN。