卷积神经网络

  • Observation1:感受野
  • Observation2:权值共享
  • Observation3:Max Pooling
  • The whole CNN

  我们开始探讨Network的架构设计,第一个Network架构的变形是Convolutional的Neural Network,它的缩写是CNN,它是被专门用在影像上的。透过这篇文章,大家可以知道Network的架构的设计有什么样的想法,为什么设计Network的架构可以让我们的Network结果做的更好。接下来讲的例子和影像有关。我们假设说要做影像的分类,也就是给机器一张图片,它要去决定说这样图片里面有什么样的东西,那应该怎么做呢?
  在以下的讨论里面,我们假设模型输入的图片大小都是固定的,不会突然出现大小不一的照片。模型分目标是是分类,所以我们会把每一个类别表示成一个one-hot的Vector,模型的目标叫做y^\widehat{y}y​。在这个Vector里面,假设现在图片里物体的类别是一个猫,猫所对应的Dimension的数值就是1,其他物体对应的Dimension的数值就是0。Dimension的长度决定了模型辨识物体种类的个数,如果向量的长度是2000,就代表这个模型可以辨识出2000种不同的东西。

模型的输出通过softmax以后,输出是y‘,我们希望模型的实际输出y’和模型目标y^\widehat{y}y​的Cross Entropy越小越好。
  接下来的问题是怎么把一张图片当作一个模型的输入呢?对电脑来说,一张彩色图片其实就是一个三维的Tensor(维度大于2的矩阵就是Tensor),一维代表图片的高,一维代表图片的高,还有一维代表图片Channel的数目。把这个三维的Tensor拉直,拉直之后就可以将它输入到Network里面去了。

  Network的输入是一个向量。在这个例子里,一个三维的Tensor又100×100×3个数字,把这些数字拿出来排成一排就可以形成一个向量,这个向量里面的某一个数字,就是彩色图片某一个Pixel中某一个颜色的强度。
  假设采用全连接网络处理图象识别的问题,第一层的Neuron有1000个,那么第一层将有3×107个weight。增加参数,可以增加模型的弹性,但是也增加了overfitting的风险。考虑到图像识别这个问题本身的特性,我们其实并不一定需要全连接网络,也就是说我们并不需要每一个Neuron和Input的每一个Dimension都有一个Weight。接下来就是对图像识别这个问题的特性的一些观察。

Observation1:感受野

  这张图片有一只动物,这个动物是一只鸟,要怎么做呢?对一个图像识别的系统而言,要侦测这张图片里有没有出现一些特别重要的Pattern,这些Pattern是代表了某种物件的。举例来说,如果某个Neuron看到了鸟嘴这个Pattern,某个看到了眼睛这个Pattern,这些Pattern综合起来就代表说我们看到了一只鸟。Neuron现在要做的事情就是判断图片中有没有某种Pattern出现,那我们并不需要每一个Neuron都去看一张完整的图片,看一个小范围就知道了。这些neuron并不需要把整张图片当作输入,只需要把图片的一小部分当作输入,就足以让它们侦测某些特别关键的Pattern有没有出现。这是第一个观察,根据这一个观察,我们就能做第一个简化。设定

Receptive Field(RF)

  每一个Neuron都只关心自己的Receptive Field里面发生的事情就好了,举例来说就是右上角蓝色的neuron负责的范围就是红色方框围住的Receptive Field,这个RF里面有3×3×3的数值,把它变成一个27维的向量,并成为蓝色neuron的输入,这个neuron会给27维向量的每个Dimension一个weight,再加上bias就得到一个neuron的输出。RF大小可以自己定义,彼此之间可以重叠。

RF的经典设置方式

  ①看所有的Channel:在描述一个RF的时候,只讲高跟宽就好了,就不用讲它的深度,反正深度一定会考虑全部的Channel。
  ②Kernel Size:而这个高跟宽合起来叫做Kernel Size,在这个例子里面Kernel Size就是3×3。一般的Kernel Size不会设的太大,在影像辨识里面做个3×3的Kernel Size足够了。
  ③Sriede:把一个RF往右移动,就可以制造一个新的RF,移动的量叫做Stride,Stride是一个自己决定的参数,RF之间是有重叠的。若两个RF之间没有重叠,那有一个Pattern就会出现在两个RF的交界上面,那就没有任何Neuron去侦测这个Pattern,那有可能会错过这个Pattern。
  ④Padding:在移动的过程中可能会超出影像的范围,超出的范围就做Padding(补值)。
  通过这个方式可以扫过整张图片,整张图片的每一个区域都是有被RF覆盖的。

Observation2:权值共享

  出现在左上角的鸟嘴,它落在某个RF里面,因为RF是盖满整个图片的,所以图片里面没有任何地方不是在Neuron的守备范围内,所以这个地方一定是某个Neuron的RF。假设在RF里面有一个Neuron的工作就是侦测鸟嘴的话,那鸟嘴就能侦测出来,即使鸟嘴出现在中间也没有关系。现在的问题是:这些侦测鸟嘴的Neuron做的事情是一样的,只是守备的范围是不一样的。
  解决方法:让不同RF的Neuron共享参数,也就是Parameter Sharing。两个Neuron的Weight完全是一样的,但是上下两个Neuron守备的范围不一样,所以这两个Neuron的输出是不一样的。

Observation3:Max Pooling

  Convolutional Layer,在做影像辨识的时候呢,其实还有第三个常用的东西,这个东西呢 叫做 Pooling,那 Pooling 是怎麼来的呢?Pooling来自于另外一个观察,我们把一张比较大的图片做subsampling。举例来说就是你把偶数的Column都拿掉,奇数的law都拿点,图片就变为原来的1/4,但是不会影响里面是什么东西。

  那Pooling是怎么运作的呢?Pooling这个东西它本身没有参数,所以它不是一个Layer,它里面没有Weight,没有要learn的东西。所以有人会告诉你Pooling比较像一个Activation Function,比较像Sigmoid那些。Pooling有很多不同的版本,我们这里讲Max Pooling。

  Max Pooling是怎么运作的呢?我们刚才说每一个Filter都产生一堆数字,要做Pooling的时候,我们就把这些数字几个几个一组。例如我们现在是2×2一组,每一组里面选一个代表,在Max Pooling里是选最大的那个。尺寸和形式是由自己决定的。

The whole CNN

  那一般以后,CNN的架构就是 Convolution 加 Pooling,刚才讲过说 Pooling 是可有可无啦,今天很多人可能会选择不用 Pooling,好 那如果做完几次 Convolution 以后,接下来呢,最终怎麼得到最后的结果呢?

  我们需要拿 Pooling 的输出做一件事情,叫做 Flatten。Flatten 的意思就是,把这个图像裡面啊,本来排成矩阵的东西拉直,把所有的数值拉直变成一个向量,再把这个向量,丢进 Fully Connected 的 Layer 裡面。最终还要过个 Softmax,得到图像识别的结果,这就是一个经典的图像识别的Network。

李宏毅2021年机器学习笔记———卷积神经网络相关推荐

  1. 神经网络与机器学习 笔记—卷积神经网络(CNN)

    卷积神经网络 之前的一些都是考虑多层感知器算法设计相关的问题,这次是说一个多层感知器结构布局相关的问题.来总结卷积神经网络.对于模式分类非常合适.网络的提出所隐含的思想收到了神经生物学的启发. 第一个 ...

  2. 李宏毅2021春季机器学习课程视频笔记1:Introduction, Colab PyTorch Tutorials, HW1

    诸神缄默不语-个人CSDN博文目录 李宏毅2021春季机器学习课程视频笔记集合 VX号"PolarisRisingWar"可直接搜索添加作者好友讨论. 更新日志: 2021.11. ...

  3. 1-2 李宏毅2021春季机器学习教程-第一节(下)-深度学习基本概念简介

    上篇文章1-1 李宏毅2021春季机器学习教程-第一节(上)-机器学习基本概念简介介绍了回归的一些知识,重点介绍了机器学习寻找函式的三个步骤.接着我们继续学习第一节Introduction的内容. 目 ...

  4. 1-4 李宏毅2021春季机器学习教程-PyTorch教学-助教许湛然

    1-3 李宏毅2021春季机器学习教程-Google Colab教学-助教许湛然介绍了Colab的使用,这篇文章是助教许湛然关于PyTorch框架的简要讲解. 更多操作查看: https://pyto ...

  5. 2-1 李宏毅2021春季机器学习教程-第二节机器学习任务攻略

    之前的学习简要介绍了机器学习和深度学习的相关概念,上一篇文章李宏毅2021春季机器学习教程HW1-COVID-19 Cases Prediction (Regression)解答有关于HW1的解答,接 ...

  6. 吴恩达机器学习笔记week8——神经网络 Neutral network

    吴恩达机器学习笔记week8--神经网络 Neutral network 8-1.非线性假设 Non-linear hypotheses 8-2.神经元与大脑 Neurons and the brai ...

  7. (强推)李宏毅2021春机器学习课程-课件免费下载

    博主最近学习李宏毅2021春机器学习课程,课程给出的课件都是按章节的,阅读起来不是很方便,所以将课件按章节整理合并了一下,并给出学习视频和代码的链接,与各位分享~ b站视频链接:(强推)李宏毅2021 ...

  8. 李宏毅2021春季机器学习课程视频笔记11-卷积伸进网络(CNN)

    卷积神经网络架构 图像识别 将图片拉直放入神经网络中进行训练. 网络通过对图像中的存在的特征进行分析,判断当前属于何种类别. 神经网络其实不需要对整个图片进行分析,只需要对一些特殊的信息进行分析就可以 ...

  9. 机器学习笔记-人工神经网络(artificial neural networks)

    目录 人工神经网络(ANN) 引言 感知器 什么是感知器? 感知器的例子 权重和阈值 多层前馈神经网络 网络结构 正向传播 反向传播(Error Back Propagation,BP算法) ​ 后话 ...

最新文章

  1. Love Java , Love IBM , Love Sun ( SunJiHai )
  2. Forefront Client Security服务器配置
  3. docker安装redis并设置密码
  4. Alibaba 开源工具 Arthas 使用
  5. linux下VI模式中上下左右键和回退键出现字母
  6. netfilter和iptables的实现机制
  7. (day 52 - DFS) 剑指 Offer 68 - II. 二叉树的最近公共祖先
  8. 「纯正干货」教你一招解决PDF去密码
  9. 国家多部委发布13份“十四五”规划,115项重大工程​
  10. Excel取消合并单元格后自动填写内容
  11. theisle服务器信息设置,theisle服务器diy
  12. python上方菜单栏不见了如何恢复_CorelDRAW菜单栏不见了,如何恢复
  13. UVM基本介绍(UVM class hierarchy、验证平台、树状图)
  14. G003-186-18
  15. php实现简易的搜索功能
  16. 怎么设置系统消息免打扰,看这里就够了,WIN10系统如何设置系统消息免打扰
  17. 封装CopyFileEx函数,实现文件复制中的暂停,控速,获取进度
  18. 老郑学长 | 天津师范大学体育硕士怎么样
  19. winedt配制miktex路径设置
  20. Revit二次开发前期准备

热门文章

  1. html5表白网站_html5表白_html5表白模板_程序员专属情人节表白网站
  2. STG2Seq:多步乘车需求预测的时空图序列模型
  3. 【JokerのLabView】VI嵌套。
  4. Java集合Collection源码系列-ArrayList源码分析
  5. FreeRTOS记录(八、用软件定时器?还是硬件定时器?)
  6. java饲养员喂动物_你真的想当一名动物饲养员?
  7. 推荐4款非常实用的电脑软件
  8. “梅西”式核心员工,正在摧毁你的团队
  9. 视频分析与多模态融合之一,为什么需要多模态融合
  10. 中国古代经典(汉英双语对照)