神经网络并不是一种具体的算法思路,而是一种模型构筑的思路或者方式。在这个思路或者方式的指引下,我们已经成功地构筑了BP网络。 这种线性分类器后面直接跟随激励函数形式神经元,然后前后首尾相接形式网络的方式应该说并不难理解。
如果神经元之间的连接有一种特点,那就是每一个神经元节点的输入都来自于上一层的每一个神经元的输出。这种方式就叫做全连接网络,整个网络的每一层都是以这种“全连接”方式进行的。当然,BP网络不全是全连接的。这种全连接好处是每个输入的维度都会传播到后面任何一个节点中去,会最大程度地让整个网络中的节点都不会漏掉这个维度所贡献的因素。不过缺点也很明显,那就是整个网络由于都是“全连接”方式,所以w和b格外多,这就使得训练过程中所要更新的权重非常多,整个网络训练的收敛也会非常慢。对于像图片动辄就是百万维度(以像素为单位)的分类处理,就会变得不可行。根部找不到这样速度的处理器。那么,卷积神经网络就诞生了。
卷积神经网络也是一种前馈神经网络,神经元可以响应一部分覆盖范围内的周围单元,对于大规模的模式识别都是前馈神经网络,都有非常好的性能表现的,尤其是对大规模图形图像处理效率极高。CNN可以有效降低反馈神经网络的复杂性。
卷积网络的特点:
(1)卷积网络有至少一个卷积层,用来提取特征。
(2)卷积网络的卷积层通过权值共享的方式进行,大大减少权值w的数量,使得在训练中在达到同样识别率的情况下收敛速度明显快于全连接BP网络。卷积主要用于识别位移、缩放及其他形式扭曲不变性的二维图形。由于它的特征检测层通过训练数据进行学习,所以在使用卷积网络时,避免了显式的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同。所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。
卷积是什么?卷积就是通过两个函数f和g生成第三个函数的一种数学算子,表征函数f与g经过翻转和平移的重叠部分的面积。
卷积核是什么?卷积核中的w和b需要通过训练来得到,是模型中非常重要的参数。从物理意义上去理解,大概是这种感觉,前面输入过来的向量,用这“一眼”看过去对于视野中不同位置的关注程度或者采纳程度不同的。
卷积还要涉及到Padding(填充)和Striding(步幅)。Padding是指用多少个像素单位来填充输入图像的边界。其目的是保持边界信息,否则降低边界信息的参考程度。如果输入的图片尺寸有差异,可以通过Padding来进行补充,使得输入的尺寸一致,以免频繁调整卷积核和其他层的工作模式。
Stride就是步幅。实际上,可以理解每次滑动的单位。实际场景中,Stride=1的使用场景很多,细密程度最好。到底多少合适呢,需要逐步尝试调整,以实测结果为准。
池化层是在一些旧有的CNN网络中喜欢一层处理层。池化层的作用实际上对Feature Map所做的数据处理又进行了一次所谓的池化处理。常见的池化层处理方式有两种:一种是Max Pooling;一种 Mean Pooling,顾名思义,一个做了最大化,一个做了平均化,除此以外还有ChunkMax Pooling、Stochastic Pooling等其他一些池化手段。
池化层的功能有:
(1)又进行了一次特征提取,所以肯定是能够减小下一层数据的处理量的。
(2)由于这个特征的提取,能够有更大的可能性进一步获取更为抽象的信息,从而防止过拟合,或者说提高一定的泛化性。
(3)由于这种抽象性,所以能够对输入的微小变化产生更大的容忍,也就是保持其不变性。这里的容忍包括图形的少量平移、旋转以及缩放等变化。
应用:VGG-16、VGG-19、图片识别。卷积核就是提供了一种前一层输入向量到后一层输出向量的刺激能力。那就是个别向量值的变化对于刺激的结果影响极为有限。这是一种用科学方法、通过量化的手段去表示敏感程序的过程,而且这个量化的程度都通过训练得到的。这简直太美妙了。
Feature Map的内容进行可视化可以得到:
(1)少量的噪声、讹误对深度卷积神经网络的分类影响非常有限的,它具有更强的容错能力。
(2)由于卷积神经网络这样一种特性,使得其泛化性更好。神经网络更像在记忆,而不像思考和推理。