一、神经网络与卷积神经网络
0.DNN(MLP多层感知器)能用到计算机视觉上吗?为什么需要CNN
DNN可以用在计算机视觉上,
1.卷积神经网络和人工神经网络的差异在哪里?
为什么需要卷积神经网络。下面是一个32x32x3的图片,隐层一般为1024或者4096的维度。输入维度是4k左右,隐层在1024维度。这会导致过拟合和太大的计算量
2.层级结构
(1)保持了层级网络结构
(2)不同层次有不同的形式(运算)与功能
(3)主要有以下层次
数据输入层/Input layer
有3中常见的数据处理方式:
去均值:把输入数据各个维度第中心化到0,必做,AlexNet,VGG,在RGB上取均值。
归一化:幅度归一化到同样的范围,必做
PCA/白化:用PCA降维;白化是对数据每个特征轴上的幅度归一化
下图一是原始数据,数据不要随着每次的变化偏移越来越大或者说有越来越大的偏移度,所以需要去均值,将数据各个维度中心化到0
如下图,使用PCA降维,找到一些正交的轴,然后将数据投影到轴上,是一个去相关的操作。白化是做完PCA之后,把数据归一化到一个范围之内。
图像处理:resize()===>sub mean(去均值)
卷积计算层/CONV layer 第一层
卷积核(kernel,filter):第二层用于数据处理,用于数据计算的神经元.
每个神经元和前一层的所有输入都去进行连接,而且 每一个连接都要给一个权重w,这个时候参数量就会很大,
局部关联。每个神经元看做一个filter
窗口(receptive field)滑动,filter对局部数据计算
涉及概念:
深度/depth,第二层神经元的个数,有多少个kernel(filter)这个depth值就是多少
步长/stride,滑窗每次滑动的格数
填充值/zero-padding,在周边补0的圈数
滑窗滑到每个位置的计算。用滑窗和对应位置做乘积,然后将所有的乘积加在一起。每到一个位置都是做这样的处理,
参数共享机制
假设每个神经元连接数据窗的权重是固定的;假定每个神经院连接权重,可以看做模板,每个神经元只关注一个特性。需要估算的权重格数减少:一层1亿=》3.5w
一组固定的权重和不同窗口内数据做内积:卷积。
激励层/Activation layer:把卷积层输出的结果做非线性映射
Sigmoid:
Tanh(双曲正切)
ReLU
Leaky ReLU
ELU
Maxout
池化层(下采样层)/Pooling layer
夹在连续的卷积层中间
压缩数据和参数的量,减小过拟合
全连接层/FC layer
两层之间所有神经元都有权重连接
通常全连接层在卷积神经网络尾部
典型CNN结构为:
Batch Normalization层(可能有) 2015年google提出
CNN慎用sigmoid!
首先试RELU,因为快,但是要小心
如果2失败,请用Leaky RELU或者Maxout
某些情况下tanh倒是有很不错的效果,但是很少
(4)卷积神经网络卷积层可视化理解
CONV Layer 2
(5)通一般机器学习算法,先定义Loss function,衡量和实际效果之间的差距
找到最小化损失函数的W和b,CNN中用的算法是SGD
SGD需要计算W和b的偏导
BP算法就是计算偏导用的
BP算法的核心就是求导的链式法则
BP算法利用链式求导法则,逐级相乘直到求解出dW和db
利用SGD/随机梯度下降,迭代和更新W和b
(6)卷积神经网络优缺点:
优点:
共享卷积核,优化计算量
无序手动选择特征,训练好权重,即得特征
深层次的网络抽取图像信息丰富,表达效果好
缺点:
需要调参,需要大量样本,GPU等硬件依赖
物理含义不明确
3.数据处理
4.训练算法
5.优缺点
二、正则化与Droupout
0.神经网络学习能力强可能会过拟合
Dropout(随机失活)正则化:别一次开启所有学习单元
1.正则化与Droupout处理
2.Droupout理解
三、典型结构与训练
1.典型CNN
2.训练与优化