机器学习李宏毅学习笔记9


前言

CNN卷积神经网络


一、Convolutional Neural Network(CNN)

CNN应用于影像上。
假设图片大小相同
在这里插入图片描述
图像分类上模型通过softmax输出y’,希望y’和y~的cross entropy越小越好。
如何将一张影像当做一个模型的输入。对于电脑来说,一张图片是一个三维的张量(tensor),图片的长、宽、和3通道(RGB)。模型的输入都是向量。只要能把图片拉直变成向量,就可以当做模型的输入。
在这里插入图片描述
这张图片是1001003的数字所组成的,这些数字就可以组成一个巨大的向量,每一个维度代表某一个位置颜色的强度。
在这里插入图片描述
如果第一层neural数目1000个,每一个neural和每一个向量的数值都有一个weight,那么第一层的weight就有3*10000000个。随着参数增加,可以增加模型的弹性,但是也会增加overfitting的风险。
考虑到影像辨识的特性,不一定需要fully connected network,不需要每一个neural都和输入的每一个维度都有一个weight。可能只需要一些特征,就好比人判断一个物体时,也是通过这个物体的一部分特征。
在这里插入图片描述
如果只是需要neural判断一个特征是否出现(图片的一小部分),就不需要看一张完整的图片。
基于这个,可以做第一个优化。原来需要每一个neural看图片完整的信息,现在只需要每个neural看每个图片的一小部分。设定一个区域receptive field,每个neural只关注自己的receptive field里面的。
在这里插入图片描述
把自己receptive field的数据,变成一个27维的向量,把这个27维度向量当做neural的输入,给每个维度的向量一个weight,再加上bias,输出给下一个neural。

二、划分receptive field

如何划分receptive field,可以多个neural一个receptive field,也可以两个receptive field之间重叠,也可以不同neural不同大小的receptive field,也可以receptive field只包含3个钟的1或2个channels,或者不同形状的receptive field。
最经典的receptive field安排方式
方式1:neural会看所有的channels。所以描述一个receptive field的时候,只用描述宽和高(kernel size),本例的kernel size就是3*3。一个receptive field 一般会有一组neural与之对应。一般会把一个receptive field往右移一点,就会生成一个新的receptive field,移动的量叫做stride(一般是1或者2)。如果一个receptive field在移动后有超出影像范围时,做padding,一般补0或者整张图片的平均值也或者用边边的数字补。
在这里插入图片描述
方法二:同一个特征,可能出现在图片不同的位置,不同receptive field 的neural识别的工作可能是相同的,那不同neural之间如果能共享参数(parameter sharing),就可以减少参数量。
在这里插入图片描述
共享参数,两个neural的对应的weight相同。虽然weight一样,但是只要输入不一样,输出就不一样。常见的共享方法,每一个receptive field有一组neural,每个receptive field都只有一组参数,不同receptive field之间,每组的第i个neural公用一样的参数(每一个receptive field都有一组参数,这组参数叫做filter)。
在这里插入图片描述

三、卷积层

Receptive field+parameter sharing=convolutional layer(卷积层)
Convolutional layer里面有很多filter,filter大小是33channel(黑白的channel=1,rgb的channel=3)。每个filter去图片抓取一部分。
假设channel=1,先把filter放到图片左上角,filter里的9个值和左上角范围内的9各值做相乘,然后往右移一格(stride=1),重复,到filter到右下角。一个filter做完一次这样的运算,会得到一个channels。将这些filter i都扫完图片会得到i群数字,这群数字叫做feature map。
在这里插入图片描述
这个feature map可以看做一张新的图片,不过这个图片的channels不在是原始的值了,而是filters的数量。
Convolutional layers可以叠很多层,第二层的filter是33上一层fileters的数量。
在这里插入图片描述
不会出现network看不到大pattern的情况,第二层的convolutional layers上的filter如果设为33,那么对应的是原图的55的范围。neural够深,看到的范围越大。
在这里插入图片描述
Pooling(没有要跟数据学任何东西,都是固定好的)
Pooling-max pooling
在这里插入图片描述
每个filter产生一堆数字,将这些数字分为多组,如2*2为一组。每个pooling里面选一个代表,max pooling选最大的,mean pooling选平均的。
在这里插入图片描述
一般是convolution和pooling交替进行,但pooling可能会对图片造成一定损坏,pooling是可有可无的。
在这里插入图片描述
Flatten:把影像里面的东西拉直变为向量。
将向量送入fully connected layers,最后做一个softmax,得出结果。
在这里插入图片描述
Pooling不一定适合所有图像处理。
CNN不能处理放大、缩小、旋转后的图像,所以做训练的时候要做data augmentation(数据增强),让cnn看过大小不同、旋转过的pattern。


总结

学习视频地址:https://www.bilibili.com/video/BV13Z4y1P7D7?p=9&vd_source=3a369b537e1d34ff9ba8f8ab23afedec

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值