前文:论文要点总结:Gradient-Based Learning Applied to Document Recognition(一)
GitHub实现:KNN-MNIST-TensorFlow,RBF-Network-MNIST-TensorFlow,Neural-Network-MNIST-TensorFlow
目录
III. 结果和与其他方法的对比
A. 数据集:MNIST(Modified NIST)
B. 结果
C. 与其他分类器的对比
虽然识别单个数字只是设计一个实际识别系统所涉及的众多问题之一,但它是比较形状识别方法的一个很好的基准。尽管许多现有方法是将手工特征提取器与可训练分类器结合,本文集中研究直接对尺寸归一化图像进行操作的自适应方法。
NIST数据集中,训练集中的数字要比测试集中的更加清晰、易于识别。将NIST数据重组后,得到本文中使用的MNIST数据集,由60000张训练图片与10000张测试图片组成。
MNIST数据集中,原始图像尺寸为20x20,像素值在0-1之间。该数据集有三种版本:1)常规数据集,原始图像位于一个28x28的图像中心,有时扩展边界为32x32(如LeNet-5中的操作);2)deslanted数据集,裁剪为20x20的图像;3)在一些早期的实验中使用过,裁剪为16x16。Fig. 4是测试集中随机抽取的一些例子。
在常规数据集上训练了多个版本的LeNet-5。每次都在整个训练集上迭代训练二十次。全局学习率如下设定:前两次0.0005,接着三次0.0002,接着三次0.0001,接着四次0.00005,之后0.00001。在每次迭代之前,在500个样本上重新评估对角Hessian近似(如Appendix C描述的),并在本次迭代过程中保持不变。参数设为0.02。在第一次迭代中,在参数集上的有效学习率大约在和0.016之间变化。测试错误率在训练集上迭代10次左右后稳定在0.95%。19次迭代后,训练集的错误率达到0.35%。
过度训练(过拟合)在训练神经网络等学习算法时经常出现,但在本实验中并未出现,如Fig. 5中的学习曲线所示。一个可能的原因是学习率保持相对较高。这样做的结果是,权重永远不会落在局部最小值上,而是一直随机地振荡。由于这些波动,平均代价将更低。因此,随机梯度与正则化项具有相似的效果,有利于更广的极小值(broader minima)。更广的最小值对应于参数分布熵大的解,有利于提高泛化误差。
通过对网络进行15000、30000和60000个样本的训练来衡量训练集大小的影响。得到的训练误差和测试误差如Fig. 6所示。很明显,即使使用像LeNet-5这样的专用架构,更多的训练数据也会提高精确度。
为了验证这个假设,我们通过随机扭曲原始训练图像来人为地生成更多的训练样本。增加后的训练集由60000个原始样本和540000个随机选取畸变参数的畸变样本组成。畸变使用以下平面仿射变换的组合:1)水平和垂直平移;2)缩放;3)挤压(同时进行水平压缩和垂直拉伸,或相反);4)在水平方向截取。Fig. 7是用于训练的畸变样本实例。加入了畸变样本后,测试误差从0.95%下降到0.8%。值得注意的是,在这20次迭代过程中,网络只有效地看到每个样本两次。
Fig. 8展示了全部82个误分类的测试样本。其中一些样本确实是模棱两可的,但有几个是完全可以被人类识别的,尽管它们的书写不太规范。这表明,使用更多的训练数据有望进一步改善实验结果。
为了便于比较,在同一个数据集上对其他多种可训练分类器进行了训练和测试。一部分早期的结果在[51]中展示过。各方法的测试集错误率如Fig. 9所示。
1) 线性分类器和成对(Pairwise)线性分类器
人们认为最简单的分类器可能就是线性分类器。在常规数据集上的错误率为12%,网络有7850个自由参数。在deslanted数据集上,测试误差为8.4%,网络有4010个自由参数。线性分类器的缺陷在[1]中得到了很好的说明,在这里使用它只是作为一个比较更复杂的分类器的基础。Sigmoid单元、线性单元、梯度下降学习和直接求解线性系统的学习的多种组合都给出了类似的结果。
[52]中测试了基础线性分类器的简单改进。其思想是训练单层网络的每个单元来将各个类两两分开。在我们的例子中,这一层包含45个单元,标记为0/1,0/2,……,0/9,1/2,……,8/9。i/j单元被训练为对第i类生成+1,对第j类生成-1,且没有在其他类上做训练。第i类的最终分数是所有i/x单元输出的和减去所有y/i单元的差。在常规数据集上的测试错误率为7.4%。
2) 基础(Baseline)最近邻分类器
另一个简单分类器是衡量输入图像之间欧式距离的K-NN分类器。这种分类器的优点是不需要训练时间,也不需要设计者的思考。但是需要大量的内存和识别时间:在运行时需要完整的60000个20x20的训练图像(大约24M,每像素一个字节)。在错误率适度增加的情况下,可以设计出紧凑得多的表示。在常规数据集上的测试错误率为5%。在deslanted数据集上为2.4%,令k=3。
自然,一个实际的欧氏距离最近邻系统作用于特征向量而非直接在像素上,但是由于本研究中的其他所有系统都是直接作用于像素上,这个结果可以用于基础比较。
3) PCA与多项式分类器
像[53]和[54]一样,通过一个预处理过程将输入图像映射到训练向量集上的40个主成分。为了计算主成分,首先令训练向量的各元素减去它们的均值。然后计算得到的向量的协方差矩阵,并使用奇异值分解将矩阵对角化。采用40维的特征向量作为二次多项式分类器的输入。这个分类器可以看作是一个有821个输入的线性分类器,前面有一个计算输入变量对的所有乘积的模块。在常规数据集上的测试错误率为3.3%。
4) RBF网络
如[55]建立一个RBF网络。第一层由1000高斯RBF单元组成,输入图像尺寸为28x28,第二层是一个简单的1000个输入、10个输出的线性分类器。RBF单元分为10组,每组100个。每组单元使用自适应K-means算法在十个类中的一个类的所有训练样本上进行训练。采用正则化伪逆方法计算第二层权重。在常规数据集上的测试错误率为3.6%。
5) 单隐层全连接多层神经网络
我们测试的另一个分类器是一个具有两层权重(其中一个隐藏层)的全连接多层神经网络,使用Appendix C中描述的反向传播进行训练。
在常规数据集上,当网络有300个隐藏单元时测试误差为4.7%,隐藏单元数为1000时测试误差为4.5%。使用人为畸变来生成更多训练数据对结果只要些微改善:隐藏单元数为300时测试误差为3.6%,隐藏单元数为1000时测试误差为3.8%。当使用deslanted数据集时,隐藏单元数为300时测试误差大幅降低到1.6%。
拥有大量自由参数的网络能够得到相当少的测试错误,这仍是一个谜。我们推测多层网络中梯度下降学习的dynamics(怎么翻译好,,,)具有“自正则化”效应。由于权重空间的原点是一个在几乎每个方向都attractive的鞍点(既为极小值,又为极大值),在最初的几个epoch权重总是在下降(近期的理论分析似乎已经证明了这一点[56])。小权重使得Sigmoid单元运行在准线性区域(即原点附近),使得网络本质上相当于一个低容量的单层网络。随着学习的进行权重升高,这逐渐增加了网络的有效容量。这似乎是Vapnik的“结构风险最小化”原则(即为防止由样本容量不足造成的过拟合,而在损失函数中加上表示模型复杂度的正则化项)的几乎完美的实践[6]。
6) 双隐藏层全连接多层神经网络
为了了解这种结构的效果,训练了多个双隐藏层的多层神经网络。理论结果显示一个单隐藏层神经网络可以拟合任何函数[57]。然而,一些作者注意到双隐藏层架构在实际情况下有时会有更好的表现。
一个28x28-300-100-10网络的测试错误率为3.05%,比单隐藏层网络好得多。而扩大为28x28-1000-150-10网络后,测试错误率只得到了很小的改善:2.95%。使用畸变数据训练后,两个网络的错误率分别改善为2.50%和2.45%。