卷积神经网络与典型结构
一、神经网络与卷积神经网络
0.DNN能用到计算机视觉上吗?为什么需要CNN?
卷积神经网络和人工神经网络的差异在哪?
1.层级结构
(1)保持了层级的网络结构
(2)不同的层次有不同形式的(运算)与功能
(3)主要是以下的层次:
数据输入层/input layer
卷积计算层 /CONV layer
激励层 /Activation layer
池化层 /Pooling layer
全连接层/FC layer
Batch Normalization 层(可能有)
(4)数据输入层/input layer:
三种常见的数据处理方式:
去均值:把输入数据各个维度都中心化到0
归一化:幅度归一化到同样的范围
PCA(主成分分析)/白化:用PCA降维
白化是对数据每个特征轴上的幅度归一化
(5)卷积计算层/CONV layer
局部关联。每个神经元都看做一个filter,或者叫做kernal
窗口(receptive field)滑动,filter对局部数据进行计算
涉及概念:
深度/depth:第二层神经元的个数,有多少个filter/kernal就有多少个depth
步长/stride 比如一个3x3的滑窗,每次向右滑动2格,这个格数就叫做stride
填充值/zero-padding
参数共享机制:假设每个神经元连接窗口的权重是固定的
固定每个神经元连接权重,可以看做模板
每个神经元只关注一个特性
需要估算的权重个数减少:一层1亿=>3.5w
一组固定的权重和不同窗口的数据做内积:卷积
(6)激励层:把卷积层输出结果做非线性映射
CNN慎用sigmoid
首先试RELU,因为快,但是要小心
如果RELU失效,请用Leaky RELU或者Maxout
某些情况下tanh倒是有不错的结果,但是很少
(7)池化层/Pooling layer
夹在连续的卷积层中间
压缩数据和参数的量,减小过拟合
Max pooling最大池化
average pooling平均池化
(8)全连接层/FC layer
两层之间所有的神经元都有权重连接
通常全连接层在卷积神经网络尾部
(9)典型的CNN结构为
INPUT
[[CONV -> RELU]*N ->POOL?]*M
[FC ->RELU]*K
FC
(10)卷积神经网络卷积层可视化理解
(11)卷积神经网络训练算法
通一般机器学习算法,先定义Loss function,衡量和实际结果之间的差距
找到最小化损失函数的W和b,CNN中的算法是SGD
SGD需要计算W和b的偏导
BP算法就是计算偏导用的
BP算法的核心是求导链式法则
BP算法利用链式求导法则,逐级相乘直到求解出dW和db
利用SGD/随机梯度下降,迭代和更新W和b
(12)卷积神经网络的优缺点
优点:
共享卷积核,优化计算量
无需手动选取特征,训练好权重,即得特征
深层次的网络抽取图像信息丰富,表达效果好
缺点:
需要调参,需要大量样本,GPU等硬件资源
物理含义不明确
2.数据处理
3.训练算法
二、正则化与Dropout
1.正则化与Dropout处理
(1)神经网络学习能力强可能会过拟合
(2)Dropout(随机失活)正则化:别一次开启所有的学习单元
2.Droupout理解
(1)防止过拟合的第一种理解方式:
(2)防止过拟合的第二种理解方式:
三、典型结构与训练
1.典型CNN
(1)Lenet
(2)AlexNet
(3)ZFNet
(4)VGG
(5)GoogLeNet
(6)ResNet
2.训练与调优
3.卷积神经网络优缺点:
(1)优点:共享卷积核,优化计算量
无需手动选择特征,驯良好权重,即得特征
深层次的网络抽取图像信息丰富,表达效果好
缺点:需要调参,需要大量样本,GPU等硬件依赖
物理含义不明确