专栏首页mathorCS231n笔记:通俗理解CNN

CS231n笔记:通俗理解CNN

卷积神经网络的层级结构

cs231n课程里给出了卷积神经网络各个层级结构,如下图:

上图中CNN要做的事情是:给定一张图片,是车是马还是飞机未知,现在需要模型判断这张图片里具体是一个什么东西

最左边是

  • 数据输入层,对数据做一些处理,比如去均值(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)、归一化(把所有的数据都归一到同样的范围)、PCA/白化等等。CNN只对训练集做“去均值”这一步

中间是

  • CONV:卷积层(Convolutional Layer),线性乘积求和
  • RELU:激励层,ReLU是激活函数的一种
  • POOL:池化层(Pooling Layer),简言之,即取区域平均值或最大(最小)值

最右边是

  • FC:全连接层(Fully-Connected Layer)

卷积计算过程

对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源

举个具体的例子。比如下图中,图中左边部分是原始输入数据,图中中间部分是滤波器filter,图中右边是输出的新的二维数据,右上角是具体的计算过程

在下图对应的计算过程中,左边是图像输入,中间部分就是滤波器filter(带着一组固定权重的神经元),不同的滤波器filter会得到不同的输出数据,比如颜色深浅、轮廓等。如果想提取图像的不同特征,则可以用不同的滤波器

在CNN中,滤波器filter(带着一组固定权重的神经元)对局部输入数据进行卷积计算。每计算完一个数据窗口内的局部数据后,数据窗口不断平移滑动,直到计算完所有数据。这个过程中,有这么几个参数:

  • 深度depth:即神经元个数,决定输出的depth厚度。同时代表滤波器个数
  • 步长stride:决定滑动多少步可以到边缘
  • 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除

CS231n课程中有一张卷积动图

从图中可以看到:

  • 有两个神经元,即两个滤波器,depth=2
  • 数据窗口每次移动2个步长,取3*3的局部数据,即stride=2
  • zero-padding=1

然后分别以两个滤波器filter为轴滑动数组进行卷积计算,得到两组不同的结果

  • 左边是输入(7*7*3中,7*7代表图像的长宽,3代表RGB三个颜色通道)
  • 中间部分是两个不同的滤波器Filter w0、Filter w1
  • 最右边则是两个不同的输出

随着左边数据窗口的平移滑动,滤波器Filter w0 / Filter w1对不同的局部数据进行卷积计算

值得一提的是:左边数据在变化,每次滤波器都是针对某一局部的数据窗口进行卷积,这就是所谓的CNN中的局部感知机制。打个比方,滤波器就像一双眼睛,人类视角有限,一眼望去,只能看到这世界的局部。如果一眼就看到全世界,你会累死,而且一下子接受全世界所有信息,你大脑接收不过来

与此同时,数据窗口滑动,导致输入在变化,但中间滤波器Filter w0的权重(即每个神经元连接数据窗口的权重)是固定不变的,这个权重不变即所谓的CNN中的参数(权重)共享机制

最后提一点,从图上我们可以看到,每个filter下面都有一个bias,因此要在原来的内积计算结束后,再加上这个bias,得到最终的对应位置值

激励层与池化层

激励层

现在绝大部分神经网络采用的激励函数都是Relu,它的优点是收敛快,求梯度简单,其图形表示如下

池化层(Pooling Layer)

池化,简言之,就是取某个区域的平均值或最大(最小)值,如下图所示

上图所展示的是取区域最大值,即左上角2x2的矩阵中6最大,右上角2x2的矩阵中8最大,左下角2x2的矩阵中3最大,右下角2x2的矩阵中4最大,所以得到上图右边部分的结果:6 8 3 4

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • viterbi算法

    viterbi算法是一个特殊但应用最广的动态规划算法,利用动态规划,可以解决任何一个图中的最短路径问题。而viterbi算法针对的是一个特殊的图——篱笆网络的有...

    mathor
  • 漏洞:弱口令、爆破

     弱口令没有严格和准确的定义,通常认为容易被别人(它们有可能对你很了解)猜测或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令,例如”12...

    mathor
  • AlexNet论文阅读

    摘要主要介绍了其神经网络的结构——5个卷积层(每个卷积层($convolutional\ layers$)后面都跟有池化层($max-pooling\ lay...

    mathor
  • CNN之卷积层

    关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 前言 卷积神经网络在深度学习领域是一...

    昱良
  • nghttp2 - HTTP/2 C Library 简明教程(一)

    程序手艺人
  • 前端图像处理之滤镜

    滤镜主要是用来实现图像的各种特殊效果,比如灰色、颜色反转、黑白、马赛克、锐化等,我们在 Photoshop 中处理图片时经常能看到,这些看似很复杂的功能前端同学...

    WecTeam
  • structure 2.3.4 软件使用指南

    Windows版建议安装桌面版(graphical front end), Linux建议安装终端版(without front end)

    邓飞
  • MySQL 聚集索引和二级索引

    Every InnoDB table has a special index called the clustered index where the data...

    JMCui
  • 空间金字塔池化Spatial pyramid pooling net,用于语义分割

    这篇文章属于小笔记类型,了解空间金字塔的作用就好。 金字塔池化层有如下的三个优点,第一:他可以解决输入图片大小不一造成的缺陷。第二:由于把一个feature m...

    水球喵子
  • 自动驾驶中基于车道线的高清制图方法回顾

    HD Map,高清地图,在自动驾驶领域被看得很重,因为它能提供prior知识,让感知难度降低,同时让规划有的放矢。高清地图目前有两条路,即激光雷达扫描为主的高成...

    小白学视觉

扫码关注云+社区

领取腾讯云代金券