简介
卷积神经网络常常又称为ConvNets、CNNs,在过去几年中,计算机视觉的研究聚焦于卷积神经网络,并在图像分类、回归等任务中取得了同一时代的最好性能。研究卷积神经网络的发展历史,有助于我们理解以下两个问题。第一个问题,卷积神经网络的各层到底学习了什么,各个卷积核学到了什么样的特征?第二个问题,从卷积神经网络架构设计角度来说,卷积神经网络应该如何设计(应该有几层,每层有几个过滤器,池化策略、激活函数该如何选择等)才能取得最好的性能,为什么这样选择,理论的依据是什么?
理解了以上问题,不仅能让我们从科学的角度理解神经网络,还能让我们从理论的高度设计卷积神经网络。
与此同时,卷积神经网络极为依赖海量的样本数据和大量的训练,并且卷积神经网络的架构设计对性能影响十分巨大,因此从技术上深入理解卷积神经网络,能让我们在设计卷积神经网络时,减少对数据规模的依赖,从而达到减少模型参数规模和减少计算量的目的,提高模型的训练速度和性能。
多层架构
在多层架构在计算机视觉领域广泛应用之前,计算机视觉识别系统都是通过两个相互独立,又相互补充的步骤来完成的。第一步,对输入数据进行转换。一般是通过人工设计的转换操作,例如,卷积的参数、偏置项等。转换的目的是从原始的图像或视频中抽取局部的或抽象的特征,以便于能够应用于第二个步骤的分类。第二步,应用分类算法(例如,支持向量机, Support Vector Machines)对第一个步骤中得到的输入信号进行分类预测。实际上,无论是哪个分类算法,都会受到第一个步骤的严重影响,因为第一个步骤提取到的特征决定了分类预测的准确程度。
多层架构给计算机视觉带来了全新的视角,在多层架构中,“学习”应用在分类中,分类所需要的输入转换操作直接从数据中学习得到。这种方式的学习一般称为表征学习,当这种表征学习使用深度的多层网络结构实现时,也称为深度学习。
广义地说,深层(多层)神经网络架构可以理解成自动编码机,主要由两个部分组成。第一部分,编码转换部分,负责从输入数