卷积神经网络 (CNN)

卷积神经网络是一类人工神经网络,可使用卷积过滤输入以提取有用信息。卷积运算需要综合使用输入数据(特征图)与卷积核(滤波器)以生成转换后的特征图。卷积层滤波器可根据学习参数进行修改,以便为特定任务提取最有用的信息。卷积网络可根据任务自动调整,寻找最重要的特征。在执行一般的物体识别任务时,CNN 会过滤物体的形状信息;但在进行识别鸟的任务时,CNN 则会提取鸟的颜色信息。这是由于 CNN 认为,不同类的物体会具有不同的形状,而对于不同类型的鸟而言,其颜色可能要比形状的差异性更大。

卷积神经网络的应用包括各种图像(图像识别、图像分类、视频标记、文本分析)和语音(语音识别、自然语言处理、文本分类)处理系统,以及机器人、虚拟助手和自动驾驶汽车等先进的 AI 系统。

卷积神经网络的构成要素

卷积网络由输入层、输出层以及一个或多个隐藏层构成。与常规神经网络不同,卷积网络各层的神经元均按三维(宽度、高度和深度维度)方式排列。因此,CNN 可使用三维方式将输入体转变为输出体。隐藏层是由卷积层、池化层、归一化层和全连接层组成的组合层。CNN 使用多个卷积层过滤输入体,以便构建更高层级的抽象概念。

CNN 使用池化层获取有限的平移和旋转不变性,以此提升对特殊摆放的物体的检测能力。此外,池化还降低了内存消耗,因而能够腾出空间使用更多的卷积层。归一化层用于对局部输入区域归一化,具体方法是将分层的所有输入归一化为均值 0 和方差 1。此外,还可使用其他正则化方法,比如批量归一化或 dropout,前者是对激活神经元的整批数据归一化,而后者是在训练过程中随机忽略选择的神经元。全连接层的神经元在功能上与卷积层相似(计算点积),但不同的是它们与上一层的所有激活神经元相连。

最新 CNN 使用的是 inception 模块,该模块使用 1×1 卷积核进一步降低内存消耗,同时提高计算效率(由此提高训练效率)。这也使 CNN 适于用在大量的机器学习应用程序中。

convolutionalneuralnetwork

修正线性激活函数

神经网络的激活函数可对加权输入数据进行非线性转换。CNN 的常用激活函数是 ReLu 或修正线性函数,此函数会将输入的负数归零并表示为output = max(0,weighteddata) 。修正线性函数可提高训练速度,同时还不会显著降低准确性。

INCEPTION

CNN 的 Inception 模块可容纳更深、体积更大的卷积层,同时还可提高计算速度。为此,我们可以使用 1×1 卷积处理小尺寸特征图,例如 64 个 1×1 卷积可将 192 个 28×28 特征图减少为 64 个 28×28 特征图。由于数量得到了缩减,因而可在使用完这些 1×1 卷积后,换用 3×3 和 5×5 尺寸的更大卷积。除 1×1 卷积以外,还可使用最大池化减少维度。在 inception 模块的输出中,所有大卷积会连接成一个大型特征图,之后此特征图又会被传递至下一层(或 inception 模块)。

池化/二次采样

池化是将特定区域的输入减少为单个值的过程(二次采样)。在卷积神经网络中,这一信息浓缩过程可在为输入连接提供相似信息的同时降低内存消耗。池化可提供基本的旋转和平移不变性,并可提升卷积网络的物体检测能力。例如,即使图块中的人脸不在图像中央而是略有偏移,但卷积滤波器仍可检测到它,这是因为此信息已通过池化运算集中到正确位置。池化区域越大,压缩的信息就越多,以此便可缩减网络大小,使其更易满足 GPU 的显存要求。但是,如果池化区域过大,则会丢失过多信息并会降低预测性能。

CNN 训练和推理

与多层感知器和递归神经网络一样,卷积神经网络也可采用基于梯度的优化方法进行训练。随机、批量或小批量梯度下降算法均可用于优化神经网络的参数。在对 CNN 训练完毕之后,我们便可将它用于推理,以此来准确预测指定输入的输出结果。

借助 GPU 加速卷积神经网络

深度学习框架可让研究人员轻松创建及探索卷积神经网络 (CNN) 和其他深度神经网络 (DNN),同时满足实验和工业部署的高速度需求。NVIDIA 深度学习 SDK 可加速广泛使用的深度学习框架(例如 Caffe、CNTK、TensorFlow、Theano 和 Torch)以及众多其他机器学习应用程序。深度学习框架在 GPU 上的运行速度更快,并且可在单节点内跨越多个 GPU 进行扩展。为在卷积神经网络训练和推理过程中使用这些框架和 GPU,NVIDIA 分别提供了 cuDNN 和 TensorRT。cuDNNTensorRT 均可大幅优化卷积层、池化层、归一化层和激活层等标准例程的实施。

单击此处获取《Caffe 在GPU上分步安装和使用指南》。单击此处即可获取卷积神经网络的 C++/CUDA 快速实现信息。

其他资源

1. “Deep Learning in a Nutshell: Core Concepts”作者:Tim Dettmers,Parallel For All,NVIDIA,2015 年 11 月 3 日。
2.  “Understanding Convolution in Deep Learning”作者:Tim Dettmers,TD Blog,2015 年 3 月 26 日。
3. “Object Recognition with Neural Nets”作者:Geoffrey Hinton 等,Coursera,2013 年 11 月 5 日。
4. Deep Learning”作者:Michael Nielsen,《神经网路和深度学习》在线图书,2017 年 12 月。
5. “Convolutional Neural Networks for Visual Recognition”作者:Li Fei-Fei 等,斯坦福大学课程,2017 年春季。