【二】卷积神经网络CNN

为什么设计神经网络的架构能让结果表现更好?

总结

        本课从影像识别切入,从全连接网络讲起,通过2种观察得出2种简化得到了CNN,一是有些pattern仅出现在图片的一小部分提出了感受野,二是相同的pattern出现在图片的不同区域提出了参数共享

        CNN无法解决旋转缩放后的影像,需要先做ST空间变换

        注意理解两个版本的对应

        本课中提到的一些重要概念:one-hot、dim、softmax、全连接网络、kernel size、stride、共享参数、filter、spatial transformer layer 空间变化、interpolation 插入、convolutional layer 卷积层、feature map特征映射、pooling池化

目录

总结

如果没有影像特性,就不要用CNN

一、由影像分类切入讲CNN(2个观察对应2种简化:由全连接网络->卷积神经网络)

二、全连接网络过拟合问题解决思路:

1、只看重要pattern就可以判断

a、考虑影像本身的特性

b、设定感受野来减少参数

c、如何决定感受野

2、让侦测同样pattern的神经元共享参数

a、多个同样的pattern出现在图片的不同位置,而每个感受野都会有守备

b、做同样事情的神经元共享参数,减少参数量 

 c、共享参数的方法 filter

 三、CNN存在的问题 

1、spatial transformer layer解决CNN不能解决的scaling和rotation问题

 a、举例:文字识别任务中,加一层ST就可以正确识别

b、举例:图像识别中,先做ST再图像识别正确率大大提高

c、如何做image transformation?

 四、CNN的第二种解释法

1、filter的作用:

2、filter如何抓取pattern?

 3、convolutional layer是可以叠加的

4、在不断叠加的过程中一直只考虑3×3会不会看不了大范围中的pattern?

五、两个版本的对应

六、Pooling池化-缩小图片减少运算量

七、经典CNN架构

八、CNN在语音和文字处理的应用



如果没有影像特性,就不要用CNN

一、由影像分类切入讲CNN(2个观察对应2种简化:由全连接网络->卷积神经网络)

输入:所有图像rescale成大小一样

目标:分类,所有类别表示为one-hot,dim决定了这个模型能辨识多少个类别

输出:通过softmax得到与one-hot同维度的概率分布,概率值最大的类别决定本图的类别

二、全连接网络过拟合问题解决思路:

1、只看重要pattern就可以判断

a、考虑影像本身的特性

        考虑影像本身的特性,其实不需要每一个神经元与input的每一个dimension都有一个weight。

        对影像辨识的类神经网络中的神经元而言,侦测图像中非常重要的pattern,综合这些pattern就可以让神经网络判断图像中的内容。

        如果让神经元neuron做的事情就是判断有无某种pattern出现,也许就不需要每个neuron都去看完整的图片,也就不需要整张图片作为输入。 

b、设定感受野来减少参数

        根据以上观察可做简化1:设定感受野receptive field,把感受野中的内容拉直作为神经元的输入会给向量的每个dim一个weight,再加上bias得到输出。此输出再送给下一层的神经元作为输入 

c、如何决定感受野

根据对问题的理解可以自由设定 

        感受野可以重叠:同一个感受野可以由多个神经元守备,可以全部重叠或部分重叠

        经典的设定方式:只设定kernel size核心大小,如:三维中只确定长宽,高(channel)是默认全部考虑的。kernel size一般都是3×3

        感受野的移动步长stride

1、一般设的比较小,为了考虑的全面,所以需要感受野重叠。

2、是一个超参数。

3、超出范围的部分就padding补零(有各种补的办法,根据理解自由决定)。

4、按照这个方式扫过整张图片,让每个守备范围都有神经元在侦测有无pattern出现

2、让侦测同样pattern的神经元共享参数

a、多个同样的pattern出现在图片的不同位置,而每个感受野都会有守备

        同样的pattern可能出现在图片的不同位置,根据每个感受野都会有神经元去守备,pattern一定会被检测出来,但是这些神经元就检测同样的pattern,也就是不同的神经元做了重复的事情。

b、做同样事情的神经元共享参数,减少参数量 

        根据观察可做简化2: 让做同样的事情的神经元(守备不同感受野)共享参数(weight是相同的),但因为输入不同即使共享参数输出也不会相同。 

 c、共享参数的方法 filter

常见的共享参数的方法:每个感受野有一组神经元守备,共用参数的一组神经元的参数被称作filter

 三、CNN存在的问题 

        问题1:因为弹性变小了,所以模型误差变大了,但因为是专为影像设计所以针对影像任务时问题不大

        问题2:CNN不能处理图片的放大缩小scaling和旋转rotation,它只有针对其训练过才会有好的效果(spatial transformer layer可以处理这个问题)

1、spatial transformer layer解决CNN不能解决的scaling和rotation问题

        解决旋转缩放的问题之后才能被CNN识别出来,spatial transformer layer也是一个神经网络

 a、举例:文字识别任务中,加一层ST就可以正确识别

b、举例:图像识别中,先做ST再图像识别正确率大大提高

c、如何做image transformation?

        不能直接用梯度下降求解:参数的小小改变会让结果发生变化,但是经过计算(直接选择距离最近的)对应出来的位置是相同的,所以微分是0

        需要先做interpolation插入,再梯度下降

 下标带入x和y求解出x' y'的位置,可以得到指向关系。把x y移动到x' y'处可以得到变换

例:把所有的像素坐标化,然后

放大缩小:  旋转:

 四、CNN的第二种解释法

1、filter的作用:

        有很多的filter,每个filter都是一个3×3×channel的tensor,filter的作用就是从图片中的指定范围内侦测某一个pattern。

2、filter如何抓取pattern?

 filter中的数值其实就是模型参数(未知的,需要通过梯度下降来找到)

  1. 用filter与每一个感受野(stride=1)的内容做内积inner product
  2. 对每个filter重复上述操作,每次得到一个矩阵
  3. 结束所有的filter就得到了filter组数字,组成了:特征映射feature map(可以看做一张新的图片,这张图片的channel不再是RGB三个,而是filter个,每一个channel对应一个filter)

 

 3、convolutional layer是可以叠加的

         下一层的convolutional layer也有一堆filter,filter的高度就是要处理的上一层的channel数目

4、在不断叠加的过程中一直只考虑3×3会不会看不了大范围中的pattern?

        在叠加过程中,filter与特征映射内积运算中,特征映射在原图中是>=3×3的范围,随着叠加的越深,内积运算让原图不断变得长宽更小 而高度更大,看到的范围也就越大

五、两个版本的对应

  1. 共用参数的神经元的参数 = filter = 需要通过梯度下降得到的模型参数
  2. convolution = 用filter扫过图片 = 不同的感受野,神经元可以共享参数
  3. 只看图片的一部分 = 一组filter中每个filter只看一个小范围只侦测一个小pattern
  4. 同样的pattern可能出现在图片不同的位置,所以神经元可以共用参数 = 一个filter要扫过整张图片

六、Pooling池化-缩小图片减少运算量

观察3:把一张图片缩小以减少运算量,随着算力的增强,考虑到pooling对性能的影响,也可以不做这个

        pooling是不需要从数据中学得什么的,所有的行为都是固定好的,可以看做一个函数

        其中本课讲的是max pooling:

  1. 每个filter都会产生一堆数字,pooling将这些数字分组(自己定)
  2. max pooling是选择留下其中最大的(也可以选平均、选最小)

 七、经典CNN架构

  1. 不做池化的话就是,做几次convolution
  2. 把输出的矩阵拉直成向量
  3. 把向量作为全连接层的输入
  4. softmax变为概率
  5. 得到结果

八、CNN在语音和文字处理的应用

感受野和参数共享的设计不同,要根据不同的特性来设计,不能用影像的设计直接套用


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值