MNIST


如下是用的是普通的前馈神经网络,输入层节点为784,隐层节点500,输出层10。这是一个标准的讲解DeepLearning中,在Tensorflow, Pytorch框架下的典型的用于识别MNIST手写体数据库的神经网络。


训练集合


测试集合



训练后的准确率98.5%左右

换句话说,每七十个手写体字符中,差不多会有一个识别错误。当然,这个效果距离工业上,以及距离一些更复杂的卷积神经网络的效果还差一点。


训练集合的误差

下面是显示的在训练集合上识别错误的一些例子。的确有一些识别错误的情况还是容易解释的。但仍然有一些是非常奇怪的错误。


测试集合的误差

这是在测试集合上识别错误的一些例子。通过人工审查可以看出,有些错误是难免的,认为人工看起来都很难识别。但大多数的错误还是可以修正过来的。



看看印刷体的识别效果吧?

那么,上述训练长辈的网络对于非常清晰的字符识别效果呢,下面使用同样的网络对于不同的字体,大小的是个印刷体的数字识别结果,情况让人大跌眼镜。这几种情况,没有一种是十个数字认全的。

F


人类在认识数字的过程中,不仅是看形状记忆,同时还是用手进行书写,即将字符反向生成。反应在儿童的认知上,在幼儿园学会了十个数字,回到家里,无论在哪里看到了不同形状、字体、颜色、纹理的十个数字,都会进行认读。


因此,在神经网络训练中增加上生成对抗的过程会增加识别的效果。