李宏毅2021年机器学习笔记———卷积神经网络
卷积神经网络
- 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年机器学习笔记———卷积神经网络相关推荐
- 神经网络与机器学习 笔记—卷积神经网络(CNN)
卷积神经网络 之前的一些都是考虑多层感知器算法设计相关的问题,这次是说一个多层感知器结构布局相关的问题.来总结卷积神经网络.对于模式分类非常合适.网络的提出所隐含的思想收到了神经生物学的启发. 第一个 ...
- 李宏毅2021春季机器学习课程视频笔记1:Introduction, Colab PyTorch Tutorials, HW1
诸神缄默不语-个人CSDN博文目录 李宏毅2021春季机器学习课程视频笔记集合 VX号"PolarisRisingWar"可直接搜索添加作者好友讨论. 更新日志: 2021.11. ...
- 1-2 李宏毅2021春季机器学习教程-第一节(下)-深度学习基本概念简介
上篇文章1-1 李宏毅2021春季机器学习教程-第一节(上)-机器学习基本概念简介介绍了回归的一些知识,重点介绍了机器学习寻找函式的三个步骤.接着我们继续学习第一节Introduction的内容. 目 ...
- 1-4 李宏毅2021春季机器学习教程-PyTorch教学-助教许湛然
1-3 李宏毅2021春季机器学习教程-Google Colab教学-助教许湛然介绍了Colab的使用,这篇文章是助教许湛然关于PyTorch框架的简要讲解. 更多操作查看: https://pyto ...
- 2-1 李宏毅2021春季机器学习教程-第二节机器学习任务攻略
之前的学习简要介绍了机器学习和深度学习的相关概念,上一篇文章李宏毅2021春季机器学习教程HW1-COVID-19 Cases Prediction (Regression)解答有关于HW1的解答,接 ...
- 吴恩达机器学习笔记week8——神经网络 Neutral network
吴恩达机器学习笔记week8--神经网络 Neutral network 8-1.非线性假设 Non-linear hypotheses 8-2.神经元与大脑 Neurons and the brai ...
- (强推)李宏毅2021春机器学习课程-课件免费下载
博主最近学习李宏毅2021春机器学习课程,课程给出的课件都是按章节的,阅读起来不是很方便,所以将课件按章节整理合并了一下,并给出学习视频和代码的链接,与各位分享~ b站视频链接:(强推)李宏毅2021 ...
- 李宏毅2021春季机器学习课程视频笔记11-卷积伸进网络(CNN)
卷积神经网络架构 图像识别 将图片拉直放入神经网络中进行训练. 网络通过对图像中的存在的特征进行分析,判断当前属于何种类别. 神经网络其实不需要对整个图片进行分析,只需要对一些特殊的信息进行分析就可以 ...
- 机器学习笔记-人工神经网络(artificial neural networks)
目录 人工神经网络(ANN) 引言 感知器 什么是感知器? 感知器的例子 权重和阈值 多层前馈神经网络 网络结构 正向传播 反向传播(Error Back Propagation,BP算法) 后话 ...
最新文章
- Love Java , Love IBM , Love Sun ( SunJiHai )
- Forefront Client Security服务器配置
- docker安装redis并设置密码
- Alibaba 开源工具 Arthas 使用
- linux下VI模式中上下左右键和回退键出现字母
- netfilter和iptables的实现机制
- (day 52 - DFS) 剑指 Offer 68 - II. 二叉树的最近公共祖先
- 「纯正干货」教你一招解决PDF去密码
- 国家多部委发布13份“十四五”规划,115项重大工程​
- Excel取消合并单元格后自动填写内容
- theisle服务器信息设置,theisle服务器diy
- python上方菜单栏不见了如何恢复_CorelDRAW菜单栏不见了,如何恢复
- UVM基本介绍(UVM class hierarchy、验证平台、树状图)
- G003-186-18
- php实现简易的搜索功能
- 怎么设置系统消息免打扰,看这里就够了,WIN10系统如何设置系统消息免打扰
- 封装CopyFileEx函数,实现文件复制中的暂停,控速,获取进度
- 老郑学长 | 天津师范大学体育硕士怎么样
- winedt配制miktex路径设置
- Revit二次开发前期准备