序 —— 孤陋寡闻的我
深度学习自2015年开始在中国逐渐火起来。在这之前,业内几乎完全不了解深度学习在图像识别领域的应用。我从2011年开始做人脸识别算法研究,到2014年为止,所有参考资料都未提及卷积神经网络技术在图像识别领域有何应用,看觉老天给我开了个不小的玩笑。
LeNet 早在 1998 年就发表了(有文章说1994年就发表了),而且明确提出了卷积神经网络的概念。为什么在人脸识别算法领域的那么多资料中几乎无人提及呢?一个重要原因是 LeNet 这类模型在很长一个时期内表现并不出色。与现代网络模型比较,它确实存在不少缺陷。所以我想仔细剖析一下 LeNet,分析一下设计缺陷。然而,仔细阅读冗长的原文后,我惊呆了,自己真的如此孤陋寡闻,原文全面详实地介绍了卷积神经网络搭建的思路,性能分析。即使放到今天,LeNet 这篇论文仍然光彩夺目。
回想一下,1994~1998年我在干什么?在那个沸腾的向钱看的年代,我正在中关村不亦乐乎地倒腾电脑呢!
1. 端到端的训练思想
文章指出,传统的模式识别算法把特征提取和特征分类人为分成两个独立的步骤,实验表明,不去人为分割这款两个步骤,而是建立一个完整的网络,通过训练优化网络参数,可以取得更好的效果。
2. 训练集和测试集
论文总结了训练集误差和测试机误差与训练样本规模和网络模型复杂度之间关系,模型最佳复杂度与测试集误差最小化之间的关系。这些理论今天仍在使用。
甚至论文还总结了损失函数正则化的方法,让我觉得以前真的轻视的神经网络理论,那些鼓吹SVM理论的文章迷惑了。
3. 如何避免梯度学习局部极小解
论文指出,经验表明,梯度学习似乎并不需要过分担心局部极小解的陷阱。并指出不会轻易陷入局部极小解的一个重要原因,模型的复杂度远远高于实际需要,因此,在高维空间优化模型,可能不会轻易陷入低维空间的局部极小解。举个例子来讲,如果函数 y = f ( x ) y=f(x) y=f(x) 存在局部极小值,当 x x x 定义域由实数集扩展到复数集后,很可能存在单调下降的路径直通全局最小值,从而绕过实数域上的局部极小值。因此,提升模型复杂度有可能避免过早陷入局部极小解。
4. GTN和RNN
论文介绍了图形转移网络(GTN)技术,我震惊了,这几乎就是RNN了。文章认为,OCR识别不能基于单个字符,因为这样无法解决字母o和数字0、字母 l 和数字1的识别问题。算法模型应该面向字符串识别,因此网络模型需要保留一个“状态图”,通过图的转移,实现字符的正确分割识别。
Gradient-Based Learning Applied to Document Recognition,作为CNN模型的第一篇论文,犹如一尊巨石,奠定了后续各种模型的基础。
5. 模型 LeNet-5
模型如图:
这个模型有两个出乎意料的设计:
5.1 不完全的卷积层
S2 到 C3 的卷积,按照一般的想法,应该采用 6 通道的卷积核。实际上, LeNet-5 采用了更灵活的通多配置,防止出现重复的卷积核,提升卷积核的多样性,同时减少卷积核的参数数量。原文讲到:
C3图层是一个卷积图层,有16个要素图。每个要素地图中的每个单元都连接到S2要素地图子集内相同位置的几个5x5邻域。表1显示了由每个C3要素图组合的一组S2要素图。为什么不将每个S2要素地图与每个C3要素地图连接起来呢?原因有两个。首先,非完全连接方案将连接数保持在合理的范围内。更重要的是,它迫使网络打破对称。不同的特征映射被迫提取不同的(希望是互补的)特征,因为它们得到不同的输入集。表1中连接方案的基本原理如下。前六个C3要素地图从S2三个要素地图的每个相邻子集获取输入。接下来的六个从四个连续子集中获取输入。接下来的三个从不连续的四个子集获取输入。最后一个从所有S2要素地图中获取输入。图层C3有1516个可训练参数和151600个连接。
5.2 预置权重
F6层到OUTPUT层的权重,是按照7x12点阵字符图形预置的,因此F6有7x12=84个维度。这个举措是很有创意的,便于前面的网络收敛到标准字符集。当然,权重在训练过程中也是可以逐步调整的,这也是这个方案的巧妙之处。
这个方案在 softmax 模型发明之前,应该是不错的了。存在的主要问题,是没有理清楚分类模型的全连接层的具体工作机制,因此,把分类模型和回归模型混淆在一起,这个应该会影响效果。
(待续…)