国科大高级人工智能4-CNN
CNN
- 弥补之前的DNN的缺陷
- 图大,DNN的参数太多
- 基本思想—>得到了某种程度的位移、尺度、形变不变性
- 局部感知野:局部连接(稀疏连接)-
- 非全连接
- 图:近的关联性强,远的弱
- 减少了权值数目
- 参数共享
- 一个卷积核用在图的任何地方
- 一个卷积核可以检测同一种特征
- 利用了平移不变性
- 不是逐层训练的
- 局部感知野:局部连接(稀疏连接)-
- 优点
- 到了某种程度的位移、尺度、形变不变性
- 层间联系和空域信息的紧密的关系,使其适于图像处理和理解
- 避免了显示特征抽取,隐式抽取
- 特征抽取和模式分类同时进行,并同时在训练中产生
- 减小参数,使得网络更简单,适应性更强
- 卷积计算
- 一维
- 核m=[1,1,1]
- 数据:x=[1,2,3,4,5,6]
- 步长1
- 结果c=[1·1+1·2+1·3,2·1+3·1+4·1,。。。,4·1+5·1+6·1]
- 二维
- 计算:m(是m1*m2的)与x对应相乘后相加
- 三维
- 步长1,数据(a1,a2,a3),卷积核(f,f,f)
- 结果大小(a1-f+1,a2-f+1,a3-f+1)
- 一个卷积核对一张图能够生成1张图
- 可以多卷积核,生成多张图(可看做图的不同通道)
- 特别的卷积核——能检测到的输出高
- 垂直边缘检测的卷积核
- 也有可识别特定曲线的卷积核(对特定图像输出高,其他低
- 垂直边缘检测的卷积核
- 一维
- padding
- 卷积会让图变小
- 边缘只计算了一次(会丢失边缘信息)
- 目的:使得卷积不让图变小
- 做法:边缘补0
- padding=p
- 上、下、左、右各补p行/列
- 结果(n+2p,n+2p)
- 尺寸计算
- 图:(n,n)
- filter(卷积核):f*f
- padding:p
- stride步长:s
- 结果:
- 单层卷积网络的参数
- g(conv(x)+b)
- l-层数
- 输入:
- 输出:
- $ n_H{l}=n_W{l}=\frac{n{l-1}+2p{l}-f{l}}{s{l}}+1$
- 卷积核的数目
- 权值:$n_c{l-1}*(fl*fl)*n_c{l} $
- b:
- pooling:池化
- 子采样
- max(多用这个,反向传播残差无约简
- ave( 反向传播残差会约简1
- L2
- pooling(f,f),则s=f——无重叠
- 池化层无padding,padding=0
- 池化后尺寸,同卷积
- 子采样
计算 | 移动 | padding | …尺寸改变… | 反向传播 | |
---|---|---|---|---|---|
卷积 | 对应相乘后相加 | 按步长s移动,可能重叠,也可能不重叠 | padding=p,上下左右各补p | 卷积核上下左右翻转后再卷积(反卷积 | |
池化 | max,ave,L2 | 不重叠的移动,s=f | p=0,无padding | ave:各项填充ave/f;max:一个max,其他0 |
-
CNN结构
- padding-conv(g(conv+b))-pooling
- 多层神经网络
- 每层多个二维面
- 每个面有多个独立神经元
-
训练
- 监督
- 代价函数
- 最小化平方误差(MSE
- 最小化相对熵(Relative entropy
- BP
- 前向
- 后向
- 输出层:链式法则
- 池化层:反池化(残差上采样
- 卷积层:反卷积
1个图A–>2个核–>2个图(C1,C2)
-
反卷积(相加):
- C1–>核1–>A1
- C2–>核2–>A2
- A<–A1+A2
-
LeNet-5文字识别系统
- 输出层全连接
- 无边缘
- sigmoid—>梯度消失
- 平均池化—>信息约简
- 准确度高
-
改进CNN
- 用relu/tanh
- 加速收敛,>0,为1,梯度不会消失(sigmoid会
- 稀疏化(<0.为0)
- dropout
- 隐藏层以一定概率清0
- 可以将dropout看做是模型平均的一种
- 局部归一化
- max池化(不会残差约简)
- 用relu/tanh
-
ImageNet CNN
- max pooling
- relu
- dropout
- norm
- conv-relu-maxpool-norm
-
VGG CNN(16层
- conv 3*3,s=1
- max-pool 2*2,s=2
- same-padding:边缘填充
-
googleNet—very deep
- 自动学习超参数
- inception
- 把所有卷积核加入到网络中,让网络自适应地决定使用哪个卷积核
- 加一层1·1的conv,减少通道
- 1000层也可以训练
ResNets残差网络——
- 可以保证收敛性
- 因为一般神经网络,网络层数增加,会反而上升(错误率)
- 残差网络不会,他至少不会变差
- why work?
- 因为残差网络容易学习恒等式函数,随着网络加深,至少不会让网络变差
- 对网络权重的波动变化更敏感
图像数据应用
- 图像分类
- 图像检测(多个目标也检测出来)
- 目标定位
- 图像-cnn
- softmax 是否有
- 如果有:在哪里(返回坐标,长宽)
- loss=平方损失函数MSE
- 图像-cnn
- 特征点检测
- 卷积的滑动窗口实现
- RCNN
- 先找到2000候选框(传统图像分割方法)
- 再分
- 更准确
- fast RCNN
- 整体卷积,将候选框映射到卷积结果上,在分类
- faster rcnn
- 用卷积找候选框
- 人脸识别
- 人脸验证:是否是某个人
- 人脸识别:是否是系统中的某个人
- 实际:系统中一个人只有一张照片,新来一张照片与所有系统中照片对比,看是否有相近的
- Siamese网络
- 不用softmax
- 将每个人映射成一个向量
- 判断是否是一个人,只需要求向量差的范数即可
- 二分类:
- 向量(网络得到)–一层逻辑回归:连个向量是否一致
- triplet损失