卷积神经网络(CNN)学习笔记 ——李宏毅

卷积神经网:与影像有关

Image Classification(目标是分类)

输入:   图片   (如果图片的大小不一致,先将所有图片rescale成大小一致的)

输出:各种类别

 \widehat{y}是我们设置的分类目标  改向量的长度就是可以辨识多少种类别

 图片通过model后通过softmax输出y'   我们希望y' 与\widehat{y}之间的 cross entropy(交叉熵) 越小越好

 

如何把一张图片当作一个模型的输入呢?

对于电脑来说 一张图片是一个三维的tensor  (即维度大于二的矩阵)

这三维分别是图片的长、宽和channel的个数

一张彩色的图片是由RGB三种颜色组成

三个channel就分别代表R、G、B三种颜色

长、宽表示图片的解析度  图片总共有多少个像素点

将三维的图片拉直成一个巨大的向量(就可以作为一个输入)

向量中每一个数值代表的是某种颜色在该像素点的颜色强度

把代表图片的向量作为输入

如果是全连接的网络

输入总共有100*100*3个

假设有1000个neuron 每一个输入对每个neuron都会产生一个weight

那么就会有3*10^{7}个weight

随着参数的增加  模型的弹性和能力可以增加  但是同时会增加过拟合的风险

 为了减少参数 我们可以不使用全连接网络  根据观察图像的特性 设计其他的网络结构

一张小鸟的图片  通过模型如何得出它是一只鸟? 如果辨识到某些重要的特征 就可以得出它是一只鸟

 

 

比如 某一个neuron 看到的是鸟嘴  有一个neuron看到了眼睛  另一个neuron看到了鸟爪  当这些重要的特征组合在一起 我们就可以判断是一只鸟

判断的时候要抓某些重要的特征 因此我们并不需要每一个neuron 都去观察一整张图片

即不需要把整张图片当作一个neuron的输入  只需要将图片的一部分当作neuron的输入即可   这样我们就可以做简化

CNN中是这样做的

为每一个neuron 设定receptive field (感受野) 每个neuron 只用负责receptive field 的部分

 

比如对于这个蓝色的neuron 只需要将这27个数值作为输入 产生27个weight 加上一个bias 得到的输出作为下一层的neuron的输入

Receptive field的范围是自己定义的 ,每个neuronReceptive field 是可以重叠的

并且不同的neuron可以负责相同的Receptive field

Receptive field 的大小也可以根据自己的需求定义,并且每个neuronReceptive field

也可以是有大有小的

 

经典的Receptive field的安排方式

(1)默认所有的channel

(2)因此在表示大小时,只需要表示长和宽的范围,这个范围叫做kernel size,一般kernel size 不会很大,常用3*3

(3)同一个Receptive field一般有很多neuron负责

(4)设置stride 相当于步长 (一般设置为1或2),使得receptive field 相互重叠。

(5)当范围超出了图像的边界,要设置padding,可以补0,把超出的范围的值设为零。

也可以补上均值。

 

对于不同的图片来说,某些重要的特征出现的位置是不一样的 

 

例如 两个图片的鸟嘴的位置 一个在图片的正上方,一个在图片的中间,对于这两个不同的区域都有一组neuron 负责,每一组neuron中都有一个neuron是辨识鸟嘴的功能。那么对于不同的receptive field 辨识鸟嘴的neuron的功能是一样的,因此我们需要每个区域都弄一个辨识鸟嘴的neuron吗?

他们所做的事情都是重复的,这两个neuron的参数(weight)是一模一样的,因此我们只需要让不同的receptive field 共享参数即可。虽然共享了参数,但是不同的图片他们的输出是不一样的,因为输入不同 。

 

如何共享参数?这个是自己定义的

常见的共享参数的方法

 如图有两个 receptive field ,他们分别由64 个neuron 负责,其中相同颜色的neuron共享一组参数,这组参数被常称为filter。

总结 

 

 

全连接网络的弹性最强 功能最丰富 但是无法在特定的任务上有很好的表现

加入 receptive field 限制之后   观察的范围固定 并且减小  弹性减弱 但是参数自由

加入 参数共享之后 参数固定  弹性就更低

这样的 叫做convolutional layer  

使用到 convolutional layer的network 就叫做CNN

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值