文章目录
- 一、卷积神经网络CNN
- 二、使用验证集,模型还过拟合的原因
- 三、深度学习的优点
- [四、Spatial Transformer Layer](#四、Spatial Transformer Layer)
一、卷积神经网络CNN
CNN在影像识别中,表现比较好。
每个感受野 receptive field 都有一个神经元去探测鸟嘴,是没有没要的,所以可以共享它们的参数。
如果两个神经元在同一个感受野中,不能共享参数。因为它们的输入相同,参数也相同,将会导致输出也想通。
可以理解为在一个感受野中,每一个神经元提取一个特征。
共享的参数称之为filter。如图中,两个红色神经元共享的参数称之为filter 1。
输入数据与卷积核做内积,得到的加过叫 Feature Map
每一个filter提取一种特征。
上图中,的第二层卷积形状为 3 × 3 × 64 3 \times 3 \times 64 3×3×64,是因为输入值有64个通道。
第二层卷积层的filter大小为 3 × 3 3 \times 3 3×3,它侦测第一层卷积层的范围就是 3 × 3 3 \times 3 3×3,而它实际侦测原图像的范围就是 5 × 5 5 \times 5 5×5,只要叠的层数够深,侦测的范围就会够大。
Pooling不改变通道数,只是减小长宽。它主要是用来减少数据量的。并不是所有卷积层之后,都要接池化层,比如下围棋,所以需要根据情况,进行使用。
CNN没有对放大和旋转图片的不变性,所以我们需要data augmentation
二、使用验证集,模型还过拟合的原因
所以通常希望待选模型数量要少,训练集要大,就不容易过拟合。
三、深度学习的优点
深度学习可以两者兼顾
为什么我们想要网络更深,而不是更胖?
虽然一个隐层的网络可以表现任何函数,而参数量相同的情况下,瘦高的网络比胖短的网络表现更好。
类比剪纸,先折叠再剪,比直接剪,会少剪很多刀。
达到相同的效果,深度学习需要更少的参数,进而需要更少的数据就可以避免过拟合。
如果目标函数,即可以是loss特别低的函数,是复杂有规律的,深的神经网络比胖的表现更好,例如在语音、影像上面的应用。
四、Spatial Transformer Layer
Spatial Transformer Layer作用就是将输入的image旋转变换为cnn认识的数据。当然它也可以transform cnn的feature map。
例如,如下图,连接箭头的起点的weight设置为1,其他都为0,这样就能完成旋转和平移的变换。
以下是该NN找出控制该连接的方法:
这里存在的问题是,在参数为非整数时,得到的 layer l-1 的索引值也是小数。如果简单地取离它最近的索引值,会造成参数的梯度总是为零。因为参数发生略微变化时,输出值: layer l-1 的索引值并不会变化,进而loss不会发生变化,所以梯度总是零,就没法训练优化。
解决方法:可以采用双线性插值法。
Localisation net: 就是输出变换矩阵的六个权重参数的神经网络。
Grid generator: 根据Localisation net计算的变换矩阵,实现像素点坐标的对应关系,即由目标图片的索引,计算得到原图片的索引。
Sampler: 对上一步算出的位置(即layer l-1 的索引值),进行双线性插值,得到最终输出。
应用举例如下: