卷积神经网络(李宏毅老师系列)

自学参考:
一文搞懂卷积神经网络(CNN)的原理
视频课
课件+资料
笔记

一、引入

  • cnn设计灵感来自于生物学中的视觉系统,旨在模拟人类视觉处理的方式。
  • 常用场景:image classification
    • 基本步骤:
      • 把所有图片都先rescale成大小一样
      • 把每一个类别,表示成一个one-hot的vector(dimension length决定了模型可以辨识出多少种类的东东)
      • 把图像输入到模型中
        直接摊开的话参数量过大。若输入的向量长度是100* 100*3,有1000个neuron,则第一层的weight就有1000 * 100 *100 * 3,即3 *107,是一个庞大的数量。
        虽说随着参数的增加,可以增加模型的弹性,增加其能力,但也增加了overfitting的风险
        ⇒考虑到影像辨识问题本身的特性,无名并非一定需要fully connected,无需每一个neuron和input的每一个dimension都有一个weight
        在这里插入图片描述

二、神经元角度

  • 思考①:模型通过识别一些“特定模式”来识别物体,而非“整张图”
    ⇒neuron也许并不需要把整张图片当作输入,只需把图片的一小部分当作输入,就足以让它们侦测某些特别关键的pattern是否出现
    在这里插入图片描述

  • 简化①:设定感受野receptive field
    每个神经元只需要考察特定范围内的图像信息,把图像内容展平后输入到神经元即可。其中:

    • 感受野之间可重叠
    • 一个感受野可有多个神经元选择(共享权重)
    • 感受野大小可以“有大有小”(一般不做过大的kernal Size,常常设定为3*3)
    • 感受野可以只考虑某些channel
    • 感受野可以是“长方形”的
    • 感受野理论上不一定要“相连”
      在这里插入图片描述
  • 感受野的一般设置typical setting

    • 看所有的channel
      一般在做影像辨识时会看全部的channel,则描述一个感受野时无需说明其channel数,只要说明其高宽即可
      ⇒kernel size
    • 每个感受野会有不止一个神经元进行守备
      ⇒输出通道数/卷积核数
    • 不同的感受野之间的关系
      ⇒感受野的平移位移:stride(超参数)
      一般会让感受野之间有重叠,避免交界处的pattern被遗漏
    • 感受野超出影响的范围
      ⇒padding(补值)
      补0;补平均值;补边缘值
    • 垂直方向移动
      在这里插入图片描述
  • 思考②:同样的pattern可能出现在图片的不同位置
    侦测同样pattern的神经元做的工作是类似的
    ⇒共享参数
    在这里插入图片描述

  • 简化②:Parameter Sharing权值共享(不同感受野的神经元共享参数)
    守备的 Receptive Field 不一样,但是它们的参数一样(守备相同感受野的神经元,不希望参数一样,否则无意义)
    在这里插入图片描述

  • 参数共享的一般设定
    对每个感受野,都使用一组相同的神经元进行守备;这一组神经元被称作filter,对不同感受野使用的filter参数相同
    在这里插入图片描述

  • 卷积层的优势
    卷积层是“受限”(弹性变小)的FC

    • FC可通过“学习”决定要看到的图片的范围。加上“感受野”概念后,就只能看某一个范围
    • FC可以自由决定守备不同“感受野”的各个神经元参数。加上“权值共享”概念后,守备不同感受野的同一个滤波器filter参数相同
      在这里插入图片描述
      一般而言,model bias小,model的flexibility很高时,容易overfitting。FC层样样通,样样松(可以做各种各样的事情,可以有各种各样的变化,但可能无法在任何特定任务上做好)
      CNN的bias较大,专门为影像设计,则它在影像上可以做得很好

三、滤波器角度

  • 卷积层基本定义:
    卷积层中有若干个filter,每个filter可用来抓取图片中的某一特征(特征pattern的大小 小于感受野大小)。
    filter的参数,即为神经元中的权值weight
    不同的filter扫过一张图片,将会产生“新的图片”,每个filter会产生图片中的一个channel(feature map)
    filter的计算是内积:filter和图片对应位置的数值直接相乘,所有乘完后再相加在这里插入图片描述
    在这里插入图片描述
  • 多层卷积:让小卷积核看见大pattern
    如下图,第一层的卷积结果,产生了一张 3 × 3 × 64 3\times3\times64 3×3×64的feature map。
    继续卷积时,需要对64个channel都进行处理
    ⇒filter的“高度”为64
    在这里插入图片描述
    这里,在第二层中考虑 3 × 3 3\times3 3×3的范围,在原图实际上考虑了 5 × 5 5\times5 5×5范围内的pattern。当卷积层越来越深时,即使只是 3 × 3 3\times3 3×3的filter,看到的范围也会越来越大。
    在这里插入图片描述
  • 卷积运算中也有bias,一般忽略
  • 小结:
    在这里插入图片描述
    • 不用看整张image
      • 神经元角度:只要守备感受野
      • 滤波器角度:使用滤波器侦测模式pattern
    • 图片不同位置的相同模式pattern:
      • 神经元角度:守备不同感受野的神经元共用参数
      • 滤波器角度:滤波器“扫过”整张图片
  • 思考③:图片降采样不影响图片的辨析
    ⇒Pooling(池化)把图片变小,减小运算量
    Pooling本身没有参数,所以它不是一个 Layer,没有要 Learn 的东西。行为类似于一个 Activation Function(Sigmoid , ReLU ),是一个 Operator,它的行为都是固定好的。
    在这里插入图片描述
    大小可调整
    在这里插入图片描述
    在这里插入图片描述
  • The whole CNN(典型分类网络结构):conv-pooling-…(循环)-flatten-FC-softmax
    在这里插入图片描述
    一般:卷积与池化(可选,减小运算量)交替使用
    在这里插入图片描述
    Pooling对 Performance,会带来一点伤害的。如果你运算资源足够支撑你不做 Pooling 的话,很多 Network 的架构的设计,往往今天就不做 Pooling,全 Convolution。

四、应用

在这里插入图片描述

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值