1128 自 动 化 学 报 42 卷
geNet
[90]
比赛第一名. ReLU 及 Dropout 可以说
是近年来对 CNN 发展的 两个重要技术, 简要介
绍如下: 1) ReLU 非线性激活函数: 对于传统的
神经网络来说, 一个神经元的输出 f 是它的输入
x 的函 数 形 式 为: f(x) = tanh(x) =
e
x
−e
−x
e
x
+e
−x
或 者
f(x) = sigmoid(x) =
1
1+e
−x
. Krizhevsky 等
[48]
提
出了一种非线性的激活函数 f (x) = max(0, x), 命
名为 ReLU. 对于深层网络, 由于 sigmoid 或者 tanh
函数在接近饱和区时变化缓慢, 导数趋于 0, 所以
在反向传播时, 很容易会出现梯度弥散的现象, 从
而无法完成深度网络的训练. 而 ReLU 在大于 0
的部分导数为其本身, 能很好地适应深层网络的训
练, 并且有助于加速网络的收敛. 2) Dropout 技术:
Dropout 是 Krizhevsky 等
[48]
提出的深度网络训练
的一种重要的正则化方法, 能防止深度网络在训练
过程中的过拟合现象. Dropout 正则化方法是指以
一定的概率 (一个乘性因子) 抑制某一个隐藏层神经
元, 即让某一隐藏层的神经元输出为 0, 也就是说,
被抑制的神经元在前向传播上输出为 0, 而且不参
加反向传播的过程. 所以每一次训练样本进入网络,
网络结构其实都可以看作为不一样的, 但网络结构
又是彼此共享权值的. 而且, 通过 Dropout 这种方
法, 可以避免一种特征必须依赖另一种特征的存在
而存在的现象. 在测试的时候, 并不让隐藏层神经元
抑制, 而是对所有的隐藏层神经元的输出值乘上一
个乘性因子, 这也进一步体现了模型平均的思想.
受到 DBN 思想的启发, Ranzato 等于 2007 年
提出了层叠自动编码机的深度学习结构
[46]
. SAE 与
DBN 的主要区别在于组成深度结构的基本单元由
RBM 变为自动编码机 (Auto-encoder, AE), 它是
一种典型的无监督的两层神经网络结构, 通过输出
对输入进行重建使得隐藏层为输入层的压缩或稀疏
表示, 可以看成是对输入数据的特征学习.
RNN 是一种具有储存记忆功能的神经网络
[94]
,
与前面介绍的 DBN 、CNN 及 SAE 相比, 一个显
著的特点就是网络的输出结果不仅仅依赖于当前的
输入, 且与过去的输入相关联, 甚至与网络的未来
输出也相关 (例如双向递归神经网络模型). 同样,
RNN 可以使用反向传播算法进行训练, 这种跨时
间的反向传播算法也被称为沿时间反向传播 (Back
propagation through time, BPTT)
[106]
. 然而这种
典型的 RNN 不具有长时间记忆的能力, Hochreiter
及 Schmidhuber 在 1997 年对 RNN 进行改进, 提
出了长短时记忆模型 (Long short term memory,
LSTM)
[47]
. 其主要思想是对 RNN 增加输入门、输
出门、重置激活门, 能够实现对隐藏层输入、输出激
活以及递归控制, 使得神经元在长时间范围内存储
并传递信息.
近年来还涌现出不少别的深度 学习模型, 其
中一类值得关注的模型是深度强化学习 (Deep re-
inforcement network, DRN)
[107−108]
, 例如 Google
Deep Mind 团队 2015 年提出的深度 Q 网络 (Deep
Q network, DQN)
[108]
, 其在模拟人的智能及在线强
化学习方面表现出优异的性能. 但由于在手写汉字
识别领域, 还鲜有深度强化学习网络的成功应用报
道, 所以在本文中我们不对 DRN 进行详细介绍.
深度学习近年来的飞速发展及其在众多领域的
广泛应用, 离不开许多优秀的实验仿真平台. Con-
vNet 是由 Krizhevsky 提供的基于 GPU 的开源
CNN 开源库, 在 2012 年 ImageNet 大规模视觉识
别比赛 (Large Scale Visual Recognition Challenge
2012, ILSVRC2012)
[90]
中获得了第一名, 此后还推
出了支持多 GPU 的版本 Cuda-ConvNet2
[109]
; 近
三年来, 涌现出了大量优秀的开源深度学习仿真工
具, 例如 Caffe、Theano、Touch、TensorFlow 等.
表 1 总结了目前一些有代表性的深度学习开源工具
及下载地址.
2 基于深度学习的手写汉字识别
传统的手写汉字识别一般包括预处理 (例如归
一化等)、特征提取、特征降维、分类器设计等环节,
但卷积神经网络 (CNN) 的提出, 使得设计一个端到
端 (End-to-end) 的手写字符识别系统成为可能, 而
无需繁杂的预处理及特征提取、特征降维环节. 此
外, 有研究学者发现, 尽管端到端的 CNN 手写识别
方法能获得比传统方法更好的性能, 但结合传统领
域知识, 仍然能使得常规的 CNN 手写识别系统性
能得到进一步提升. 此外, 针对手写汉字识别的特
征, 近年来还提出了不少改进的 CNN 训练方法. 下
面我们将逐一进行详细介绍.
2.1 基于 CNN 的端到端的识别方法
CNN 在上世纪 90 年代提出来后, 虽然在手
写西 文 (特别是英 文) 识 别中得到了 极大应用推
广
[44−45, 84, 110−111]
, 如 在 英 文 手 写 识 别 领 域, Le-
Cun 等在 1998 年提出的 LeNet5 CNN 模型
[45]
在
MNIST 上的识别率已经高达 99.05 %, 加上变形样
本训练后识别率进一步可提升到 99.2 %; 2003 年,
微软研究院的 Simard 等
[111]
引入弹性变形 (Elastic
distortion) 及仿射变形 (Affine distortion) 两种数
据增加 (Data argumentation) 技术, 采用类似 CNN
的网络结构, 在 MNIST 上, 获得了 99.6 % 的优异性
能, 大幅度领先于包括 SVM、Boosting、多层感知
器等在内的机器学习方法. 但 CNN 成功应用到手
写中文识别的文献一直报道很少, 这主要源于手写
中文识别的类别数及训练样本庞大, 用常规的 CPU
实验仿真平台很难在几天甚至几周内完成网络结构
的训练. 直到 2011 年瑞士 IDSIA (Istituto Dalle