CNN卷积神经网络
之前的学习记录,现在整理一下,难免会有错误,留言区一起讨论呀~
一、主要学习参考
参考
二、大致学习主线
2.1 与生物学联系
- 人工神经网络
- 神经元
- 神经网络
2.2 主要实现步骤
2.3 输入层
-
图片: 像素值
-
例如: 根据图片的分辨率和尺寸,它将看到一个 32 x 32 x 3 的数组(3 指代的是
RGB
值) -
其中每个数字的值从 0 到 255 不等,其描述了对应那一点的像素灰度
-
输入层和隐藏层都存在一个偏置(
bias unit
)
2.4 卷积层
-
作用: 进行特征提取
-
输入内容是像素值数组
-
filter
:称为过滤器、滤波器、神经元(neuron
)、核(kernel
)、卷积核等细分的话,
filter
是卷积核的集合,多通道时注意:
fiter
深度与输入内容的深度相同 -
感受野
receptive field
:filter
对应的原图的范围 -
特征
Feature
: 对于CNN
来说,它是一块一块地来进行比对。它拿来比对的这个“小块”我们称之为Features
(特征)
2.5 激活函数
- 非线性层、修正线性层
- 给一个在卷积层中刚经过线性计算操作(只是数组元素依次(
element wise
)相乘与求和)的系统引入非线性特征 relu=(0, x)
, 收敛快,求梯度简单- 这一层把所有的负激活(negative activation)都变为零。这一层会增加模型乃至整个神经网络的非线性特征,而且不会影响卷积层的感受野。 【论文:
Geoffrey Hinton
(即深度学习之父)的Rectified Linear Units Improve Restricted Boltzmann Machines
】 - 常用的非线性激活函数有
sigmoid、tanh、relu
等等,前两者sigmoid/tanh
比较常见于全连接层,后者relu
常见于卷积层 - sigmoid函数的功能是相当于把一个实数压缩至0到1之间。当z是非常大的正数时,g(z)会趋近于1,而z是非常小的负数时,则g(z)会趋近于0。 g(z)→1,判定为正样本;g(z)→0,判定为负样本,如此达到分类的目的 。 sigmoid容易饱和、造成终止梯度传递,且没有0中心化。
2.6 池化层
pooling layer
- 下采样(
downsampling
) - 最常见的就是最大池化(
max-pooling
) : 输出过滤器卷积计算的每个子区域中的最大数字 , 还有 平均池化(average pooling
)和L2-norm
池化
2.7 全连接层
- 完全连接层观察上一层的输出(其表示了更高级特征的激活映射)并确定这些特征与哪一分类最为吻合。
- 输出方式 例如
softmax
: 之前 输出一个 N 维向量,N 是该程序必须选择的分类数量。
三、相关概念
1、 步幅 stride
- 过滤器移动的距离就是步幅
2、 填充 padding
- padding为n,是围了2周,增加4
- 作用: 从初始位置以步长为单位可以刚好滑倒末尾位置
- 两个公式:
3、反向传播
-
计算机通过一个名为反向传播的训练过程来调整过滤器值(或权重)
-
反向传播可分为四部分,分别是前向传导、损失函数、后向传导,以及权重更新
4、损失函数
- 常见的一种定义方法: MSE (均方误差)
- 将损失数量最小化 , 将其视为微积分优化问题的话,也就是说我们想要找出是哪部分输入(例子中的权重)直接导致了网络的损失(或错误)
5、dropout层
-
训练后的过拟合问题:训练之后,神经网络的权重与训练样本太过匹配以至于在处理新样本的时候表现平平
-
Dropout 层将「丢弃(drop out)」该层中一个随机的激活参数集,即在前向通过(forward pass)中将这些激活参数集设置为 0
-
该网络将能够为特定的样本提供合适的分类或输出,即使一些激活参数被丢弃。此机制将保证神经网络不会对训练样本「过于匹配」,这将帮助缓解过拟合问题。另外,Dropout 层只能在训练中使用,而不能用于测试过程
6、 深度depth
神经元个数,决定输出的depth厚度。同时代表滤波器个数