基本概念
人类视觉系统的层次结构
视网膜 v1区 提取边缘 边缘检测器。
V2区 组合边缘成形状 相当于形状检测器。
V4区 更高级的抽象, 能抽象出语义信息。
局部感受野
1962年Hubel和Wiesel通过对猫视觉皮层细胞的研究,提出了感受野(receptive field)的概念。
所谓的局部感受野是神经元和神经元之前的相对概念。主要指的是后一层的神经元接受前面部分神经元的输入,这部分输入称为这个神经元的感受野。
- 局部:
所谓的局部,体现在后一层神经元接受的是前一层的一部分输入而不是所有前一层神经元的输入。 - 视觉系统的局部感受野:
人对外界的认知是从局部到全局的,先边缘,再组合成形状,最后是语义概念的提取。视觉皮层的神经元就是局部接受信息。(即响应某些特定区域的刺激)
传统的神经网络
插入图片4:47
问题:隐含层一多,就会导致参数数目巨大.这会引起很多问题,首先就是模型难以训练, 因为参数多,意味着需要更多的数据.其次参数一朵,容易引起梯度消失和梯度爆炸问题.这个问题也是导致陷入低谷的最主要的原因.
全连接和局部连接结构的区别
插入图5:00
全连接的参数巨大问题
对于一幅10001000的图,采用全连接的话,意味着 hidden 层的每个神经元都要和每个像素有连接.假设hidden 层有1M个神经元, 并且只有一层 hidden,那么就需要10001000*1M = 10 ^6 M = 10 ^ 9 K = 10 ^12 个参数.
局部连接的解决思路
考虑到识别一幅图的时候, 其实我们并不需要这幅图所有的信息, 因为有些信息是无效的.比如上面这幅图识别人物的话, 其实其五官可以作为一个特征,但是图片人物边缘的信息对于我们识别这个人是没有帮助的,这部分信息我们可以剔除.基于这个思路, 我们可以采用局部的连接, 即一个神经元只连接一部分像素信息, 而不是整副图的信息.这样的话参数个数会有指数级别的下降.而我们可以把这些节省的计算资源和存储资源用到其它地方.
还是以10001000像素图片为例子, 假设 hidden 层不变, 我们采用滤波器大小为1010 (Filter size = 10 * 10, 这是说这个神经元的可视范围是10*10), 那么 每个神经元只有100可参数.对于1M 神经元, 其参数个数只有10 * 10 * 1M = 100 M.= 10 ^2 M.
区别:
- 可以发现全连接的参数数目和图像相关.但是局部连接无关, 只和感受野大小和神经元个数有关.
- 所以对于局部连接, 图像的大小对于网络的复杂程度是没有影响的.
卷积的数学描述
图8:02
- 一维的卷积
W(x) * f(x) = f w(u)f(x -u)du
- 二维的卷积
- 三维的卷积
局部连接 --- 通过卷积操作实现
插入图8:57, 10:57
只要理解这个过程就可以.至于公式其实没这么重要, tf 和 caffe 已经都封装好,除非要自己写框架.
卷积的计算本质:
计算信号(图像), 对某着特定模式的响应.
卷积的作用:
- 类似于数字图像处理中的各类算子(Sobel, Robert, Laplacian).
- 用于提取特征, 因此将得到的结果称为特征图(feature map).
插入14:06 卷积在各层的可视化.
池化操作(pooling)
- 图像区域内关于某个特征的统计聚合.
- 两种方式: 区域内取最大值或平均值.
- 是一种下采样操作.
卷积神经网络与多层感知器的对比
插入图16:50
AlexNet
插入图18:51
计算参数数目
48 表示上一层的 feature map 数目.
128 表示后一层的 feature map数目.
所以这两层的参数数目是 48 * 5 *5 * 128 = 153600
卷积神经网络示意图
插入图19:56
在 CNN 里通常都是卷积和下采样交替进行.只是有时候可能连续几次卷积, 再下采样, 因为下采样太多,图像的尺寸下降得太多.
前面的卷积层和下采样层用来提取特征, 是特征提取器的作用.后面的多层感知器用来分类, 是分类器的作用.
提问
池化的意义
- 主要目的是增加模型的平移不变性, 进行总结, 保留对分类最有用的响应.(一副图像感兴趣的目标, 不管出现在图像哪个位置都能识别出来)
- 次要目的才是降低feature map 尺寸, 降参.
特征图
并不是特指,而是指特征提取器这一整块.
特征图不是感受野看到的一张图片.
- 特征图是前一层对应 fiter 的响应集的集合.
每个卷积核看到的只是图像的一部分区域.
rgb 图像做卷积并不需要先转成灰度图.
filter 的数目并不是计算得到,而是需要动手实践去调,这部分经验性设定称为超参数.(层的个数)
卷积核是要遍历整个图像的.正常说是逐个像素滑动.
48代表的是卷积核的个数.
网友评论