非原创,转录自知乎 https://zhuanlan.zhihu.com/p/156926543 ,仅作学习笔记之用。
一、卷积神经网络
1. 定义
卷积神经网络(Convolutional Neural Networks)是一种包含卷积计算且具有深度结构的前馈神经网络,CNN具有表征学习的能力,能够按阶层对输入数据进行平移不变分类。
表征学习:也叫特征学习即将原始数据转换成为能够被机器学习来有效开发的一种形式。
2. CNN的架构
二、 CNN的层级结构
1. 输入层
- 去中心化,将样本中心值作为原点,具体实现为将样本值除以样本均值.
- 归一化,将样本坐标幅度缩减到0-1之间,降低样本差异带来的干扰。
- PCA降维,将高维数据投影到低维上,保留主要特征,降低数据复杂度。
2.卷积层
卷积层计算有两个关键步骤:
- 局部关联:将每个神经元看做一个滤波器(filter)
- 窗口滑动:filter对局部数据计算
卷积的实现涉及三个参数,步幅(stride),滤波器的尺寸,填充(padding)。卷积的计算过程就是步幅控制着滤波器进行卷积操作,如下有一 7x7 的输入图像,滤波器尺寸为3x3,步幅为一。
感受野
步幅的变化引起感受野的变化,感受野最初出现在1968Hubel和Wiesel的论文,这篇论文讲述猫和猴的视觉皮层含有对视野的小区域单独反应的神经元,在生物学中,感受野通常指的是视觉系统中的某个感知神经元(如视网膜神经元或大脑皮层中的视觉神经元)对视野中某一部分的光刺激做出反应的区域。在计算机领域,感受野是用来描述网络中某一层的神经元对输入图像的哪个区域敏感,感受野的大小决定了神经元能够捕捉到多少上下文信息。
填充(padding)
卷积计算会减小数据的空间维度,在网络的早期层,我们希望更多地保留原始输入内容的信息,方便提取底层的特征,此时我们可以用到填充的方式,如图所示,我们有一个32x32x3的输入图像,使用5x5x5的滤波器进行卷积,输出为28x28x3,为了使得输出图像维度为32x32x3,我们可以在输入图像外侧进行零填充,应用大小为2的零填充后,输入图像更新为36x36x3,这样使用5x5x3的滤波器仍能得到32x32x3的输出。
如果步幅为1,计算零填充的大小有如下公式,K为滤波器尺寸:
计算任意给定卷积层的输出大小公式为(其中O为输出尺寸,W为输入尺寸,K为滤波器大小,P为填充大小,S为步幅):
卷积层计算
该动态图形象地展示了卷积层计算的过程,这里步幅设置为2,卷积计算的结果为输入图像矩阵乘以对应神经元的权重值w,再加上偏置值b。:
参数共享机制
在卷积层中每个神经元连接数据窗的权重是一定的,每个神经元只关注一个特性,神经元就是图像处理中的滤波器,每个滤波器都会有自己关注的特性,逼比如垂直边缘,水平边缘,颜色纹理等等,所有神经元加起来就是整个图像的特征提取集合。
需要减少的权重参数:AlexNet 1亿 => 3.5w
3. 激活层
激活层的作用是把卷积结果做非线性映射,CNN常用的激活函数为ReLU,它的特点是收敛快,求梯度简单,但较脆弱。
4. 池化层
池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。
池化层的具体作用:
- 特征不变性:
图像压缩时只去掉一些无关紧要的信息,保留重要特征,比如一张小狗的图片缩小后我们仍然能认出图像中是一条狗。 - 特征降维:
去掉冗余特征,提取重要特征。 - 在一定程度上防止过拟合,更方便优化。
池化层常用的方法有两个Max pooling和Average pooling,Max pooling的思想非常简单,将选定的2x2窗口中的最大值作为池化结果。
5. 全连接层
两层之间所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。也就是跟传统的神经网络神经元的连接方式是一样的
标签:滤波器,卷积,步幅,神经网络,图像,CNN,输入,神经元 From: https://www.cnblogs.com/fqlb/p/18396470