美文网首页CNN
(1989)Generalization and Network

(1989)Generalization and Network

作者: 运动小爽 | 来源:发表于2019-01-10 20:06 被阅读0次

    Yan Lecun在这篇论文主要讨论了神经网络(或者更普遍的监督学习模型)的泛化性能和一些针对具体问题设计神经网络的技巧

    这篇论文的一个主要观点是:处理实际问题时,当针对该问题的先验知识被加入到监督模型的设计中时,设计出的模型通常能在该问题上面获的更好的泛化性能。

    该观点实际上要说的就是具体问题应该具体分析,没有一个模型能同时处理所有的问题,就算是最聪明的人类大脑,不还是由不同的区域如视觉区、听觉区等组成嘛,每个区域负责不同类型的任务。

    比如针对视觉识别问题,离得越近的区域,图像内容的相关性越大,先提取图像的局部信息,然后再将局部信息进一步组合,可以得到更高级的特征,这就是视觉识别问题的先验知识。那CNN网络就是将该先验知识加入到模型设计中的完美体现。

    1. 监督网络的泛化性能(generalization)

    泛化性能和哪些因素有关?如何提高模型的泛化性能?

    通常情况下,网络的泛化性能取决于假设空间的大小/网络中自由参数的数量训练样本的大小,减小网络中自由参数的数量、增加训练样本的数量,能有效提高网络的泛化性能。

    对此,论文中举了曲线拟合的例子:如果用一个曲线模型(如多项式)去拟合一堆样本点,当模型的参数数量与样本点数量相当的时候,构造的曲线能完美地拟合所有训练样本点,但是对于新的测试点,拟合出的曲线表现通常会很差,特别是训练样本点中有很多噪声/异常点时。

    相反,当模型的参数数量较小时,曲线不必去精确拟合每一个样本点,而是去学习训练样本通用的大致规律,从而对新的测试样本进行大致正确的预测。

    其实,将具体任务的先验知识加入到网络设计中,通常能够有效地减少网络的自由参数数量,自然也就能达到较好的泛化性能了。

    2. 提高网络泛化性能的常用方式

    那如何减小网络中自由参数的数量以提高泛化性能呢?文中提到了三种方法:

    第一种方法是在网络的训练过程中,动态地删除掉一些无用的连接(useless connections),这可以通过在损失函数(cost function)中增加一项,用于惩罚那些拥有过多参数的网络。也就是正则化思想。

    第二种方法是权重共享(weight sharing),指的是使用单个参数(weight)控制多个连接(connections)。权重共享可以被解释为在这些连接强度上面施加相同的限制(contraints)。

    第三种方法实质上是权重共享的泛化,称作权重空间转换(Weight-Space Transformation, WST )。WST基于这样一个事实:在学习过程中,模型参数的优化并不一定要在权重空间中(weight space)执行,可以在任何适合该优化任务的参数空间中执行,只要权重空间可以由该参数空间通过已知的转换公式(transformation)计算得到,同时该转换公式的雅克比矩阵(Jacobian matrix)已知(因为在反向传播计算损失函数关于参数空间的梯度时需要用到)。

    3. 具体问题举例:数字识别

    文中第三部分,针对一个数字识别问题,设计了5种不同的神经网络模型,每个模型拥有不同大小的模型参数数量,此外,一部分模型中加入了该任务的一些先验知识。并通过实验结果验证了前面提出的主要观点。

    3.1 数据集

    数字识别问题(识别数字0-9,和MNIST类似的分类问题)的数据集特点如下:

    • 包含480张数字图片,其中320张作为训练集(training set)和160张测试集(test set);
    • 每张图像大小是16x16,是由工作人员用鼠标作画的位图(bitmap),部分图片如下所示:
    3.2 激活函数和损失函数

    神经网络所用的激活函数是双曲正切函数

    其中A和S是超参数,论文中A=1.7159,S=2/3。

    双曲正切函数的表达式和图像如下:


    网络的损失函数用的是均方误差(mean squared error):


    下面是针对数字识别问题设计的5个模型的细节:
    Net-1: A single layer network
    • Net-1是一个单层网络,输入向量和权重向量的点积,再接一个激活函数,直接得到输出结果,这实质上是一个线性模型;
    • Net-1包含了2570个模型参数(16x16x10+10=2570,包含bias);
    • 经过训练,Net-1在测试集上面的准确率是72%-80%。
    Net-2: A two-layer, fully connected network
    • Net-2在Net-1的基础上增加了一个隐藏层H1,H1包含12个神经元,实质上是一个多层感知机(MLP);
    • Net-2包含3240个模型参数(按道理应该是16x16x12+12+12x10+10=3214个模型参数???没懂。。。);
    • 经过训练,Net-2在测试集上面的准确率达到了87%;
    • 文中提到,Net-2在泛化性能上面的标准偏差比Net-1要大许多,表明网络处于欠定状态(underdetermined),进一步指出Net-2模型太大,即拥有太多的自由参数。
    Net-3: A fully-connected, 3-layer network

    前面的两个网络都是全连接网络。

    文章中指出,之前在视觉识别任务方面的工作已经证明了:对于图像识别这类任务,可以先提取局部特征,然后将其结合成更高级的特征。因此,对于数字识别的问题,网络的隐藏层可以先提取输入图像的局部特征,然后进一步结合成更高级特征,即将数字识别任务的先验知识加入到Net-3的设计中。

    Net-1、Net-2和Net-3的模型结构如下图所示:


    Net-3包含了两个单通道的隐藏层H1和H2,实质上是不共享权重的卷积操作,根据论文:

    • H1卷积层采用了3x3的卷积核,得到8x8大小的feature map;
    • H2卷积层采用5x5的卷积核,得到4x4大小的feature map;
    • H2全连接到包含10个神经元的输出层,整个Net-3包含1226个模型参数,解释一下,因为Net-3Z中的卷积操作不共享权重,因此总的模型参数=(3x3x8x8+8x8)+(5x5x4x4+4x4)+(4x4x10+10)=1226。
    • Net-3在测试集上面的准确率比Net-2稍好,达到了88.5%。但由于Net-3比Net-2小了接近3倍,因此速度快了许多,同时Net-3的泛化标准偏差(???也不太懂)比Net-2减小了许多。
    Net-4: A constrained network

    Net-4的设计依据是:图像的目标在不同位置通常包含多个不同的特征,因此有必要同时使用一组特征检测器(feature detectors)用于检测输入图像中的不同特征。

    另外,对于图像分类问题,目标特征的精确位置信息不太重要,只需要保留特征的大致位置信息,以便接下来的卷积层用于进一步组合,得到更高级的特征。这其实就是每一个卷积层都进行了下采样操作的原因(16-->8,8-->4),因为逐渐的下采样能保留特征大致的位置信息,更重要的是,随着每一层的feature map逐渐减小,后面的全连接层的权重参数数量会大大减小(有助于提高模型的泛化性能)。

    Net-4的网络结构如下图所示:


    Net-4采用了和Net-3相似的设计,包括每个卷积层的卷积核大小,以及feature map的大小。相比于Net-3,Net-4具有如下改进:

    • 在H1卷积层使用了两组卷积,得到2个8x8的feature map,试图捕获输入图像的不同特征;
    • H1中,同一张feature map中的所有单元(units)分享同一组卷积权重(权重共享),用于检测图像中不同位置的相同特征,但是使用不同的bias。
    • H2中的卷积不共享卷积权重;
    • 这样,总的模型参数=(3x3x2 + 8x8x2) + (4x4x(5x5+5x5+1)) + (4x4x10+10) =1132;
    • Net-4在测试集上面的准确率达到了94%。
    Net-5: A network with hierarchical feature extractors

    既然Net-4中的卷积权重共享和多个特征检测器(多通道的feature map)效果不错,那Net-5在Net-4基础上更进一步:

    • H1和H2的卷积操作都采用权重共享,H1还是采用2个feature map,但H2使用了4个feature map;
    • 这样,总的模型参数=(3x3x2 + 8x8x2) +(5x5x2x4 + 64) + (4x4x4x10 + 10)=1060。
    • Net-5在测试集上面的准确率达到了98.4%,而且训练速度比前面的版本更快,表明使用多个层级、多组权重共享的特征检测器的效果相当不错。

    5个模型的信息总结在下面表格中:


    4. 总结

    当设计监督学习模型来解决具体问题时,重复这篇论文的主要观点:处理实际问题时,当针对该问题的先验知识被加入到监督模型的设计中时,设计出的模型通常能在该问题上面获的更好的泛化性能。

    当然,某个问题的先验知识具体指什么?如何将先验知识加入到监督学习模型的设计中,这不是一个简单的问题。

    但论文中至少证明了,针对图像识别任务,作者Yan LeCun大神成功将图像识别任务的先验知识(先提取局部特征,再进一步可以结合成更高级特征这一先验知识)加入到了神经网络的设计中,即实验中的Net-3、Net-4、和Net-5,并且获得了优秀的泛化性能。这可能就是CNN网络最初的设计初衷吧。

    从这篇论文中大致可以了解到,现在火的不行的CNN网络,在大约30年前(1989)是如何被一步步探索出来的。而且,当时就出现的专业术语如权重共享(weight sharing)、感受野(receptive field)等,一直被沿用至今。另外还有如激活函数(tanh)、反向传播(Back-Propagation)算法、损失函数(cost function)、数据集划分时的训练集(training set)、测试集(test set),甚至还有数据增强(data augmentation)。

    相关文章

      网友评论

        本文标题:(1989)Generalization and Network

        本文链接:https://www.haomeiwen.com/subject/vbhzrqtx.html