国科大高级人工智能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张图
    • 可以多卷积核,生成多张图(可看做图的不同通道)
    • 特别的卷积核——能检测到的输出高
      • 垂直边缘检测的卷积核
        [101101101]\left[ \begin{matrix} 1 &0 &-1\\1 &0 &-1\\1 &0 &-1\end{matrix} \right]
      • 也有可识别特定曲线的卷积核(对特定图像输出高,其他低
  • padding
    • 卷积会让图变小
    • 边缘只计算了一次(会丢失边缘信息)
    • 目的:使得卷积不让图变小
    • 做法:边缘补0
      • padding=p
      • 上、下、左、右各补p行/列
      • 结果(n+2p,n+2p)
    • 尺寸计算
      • 图:(n,n)
      • filter(卷积核):f*f
      • padding:p
      • stride步长:s
      • 结果:(n+2pfs+1,n+2pfs+1)(\frac{n+2p-f}{s}+1,\frac{n+2p-f}{s}+1)
  • 单层卷积网络的参数
    • g(conv(x)+b)
    • l-层数
      • fl,pl,slf^l,p^l,s^l
      • 输入:ncl1nHl1,nWl1n_c^{l-1}个(n_H^{l-1},n_W^{l-1})图
      • 输出:nclnHl,nWln_c^{l}个(n_H^{l},n_W^{l})图
        • $ n_H{l}=n_W{l}=\frac{n{l-1}+2p{l}-f{l}}{s{l}}+1$
      • 卷积核的数目ncl1(flfl)n_c^{l-1}个(f^l,f^l)
      • 权值:$n_c{l-1}*(fl*fl)*n_c{l} $
      • b:ncln_c^{l}
  • pooling:池化
    • 子采样
      • max(多用这个,反向传播残差无约简
      • ave( 反向传播残差会约简1
      • L2
    • pooling(f,f),则s=f——无重叠
    • 池化层无padding,padding=0
    • 池化后尺寸(nfs+1,nfs+1)(\frac{n-f}{s}+1,\frac{n-f}{s}+1),同卷积
计算 移动 padding …尺寸改变… 反向传播
卷积 对应相乘后相加 按步长s移动,可能重叠,也可能不重叠 padding=p,上下左右各补p (n+2pfs+1,n+2pfs+1)(\frac{n+2p-f}{s}+1,\frac{n+2p-f}{s}+1) 卷积核上下左右翻转后再卷积(反卷积
池化 max,ave,L2 不重叠的移动,s=f p=0,无padding (nfs+1,nfs+1)(\frac{n-f}{s}+1,\frac{n-f}{s}+1) ave:各项填充ave/f;max:一个max,其他0
  • CNN结构

    • padding-conv(g(conv+b))-pooling
    • 多层神经网络
      • 每层多个二维面
      • 每个面有多个独立神经元
  • 训练

    • 监督
    • 代价函数
      • 最小化平方误差(MSE
      • 最小化相对熵(Relative entropy
    • BP
      • 前向
      • 后向
        • 输出层:链式法则
        • 池化层:反池化(残差上采样
        • 卷积层:反卷积
          国科大高级人工智能4-CNN
          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池化(不会残差约简)
  • 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?
    • 因为残差网络容易学习恒等式函数,随着网络加深,至少不会让网络变差
    • 对网络权重的波动变化更敏感
      国科大高级人工智能4-CNN
      国科大高级人工智能4-CNN

图像数据应用

  • 图像分类
  • 图像检测(多个目标也检测出来)
  • 目标定位
    • 图像-cnn
      • softmax 是否有
      • 如果有:在哪里(返回坐标,长宽)
    • loss=平方损失函数MSE
  • 特征点检测
  • 卷积的滑动窗口实现
  • RCNN
    • 先找到2000候选框(传统图像分割方法)
    • 再分
    • 更准确
    • fast RCNN
      • 整体卷积,将候选框映射到卷积结果上,在分类
    • faster rcnn
      • 用卷积找候选框
  • 人脸识别
    • 人脸验证:是否是某个人
    • 人脸识别:是否是系统中的某个人
    • 实际:系统中一个人只有一张照片,新来一张照片与所有系统中照片对比,看是否有相近的
    • Siamese网络
      • 不用softmax
      • 将每个人映射成一个向量
      • 判断是否是一个人,只需要求向量差的范数即可
    • 二分类:
      • 向量(网络得到)–一层逻辑回归:连个向量是否一致
    • triplet损失
      国科大高级人工智能4-CNN