卷积神经网络的优化

两种卷积神经网络的优化方法 —— dropout 和 级联卷积核

dropout 函数

在机器学习中,如果模型比较复杂,参数很多,而训练样本又相对较少,那么训练出的模型很容易出现过拟合的问题,具体表现在模型在训练数据集上损失逐渐减少,但是在测试数据上损失却逐渐增大。

另外,训练深层神经网络需要更新大量的权值,这个过程也非常的耗时。

在这里插入图片描述
为了防止过拟合,在训练复杂的前馈型神经网络时,可以加入 dropout 操作。
在这里插入图片描述
即在训练时,随机让神经网络的某些隐含层节点停止工作,也就是让它们的权值为零,就好像从网络中删除了这些节点一样,接着将输入通过修改后的网络进行前向传播,然后将误差通过修改后的网络进行反向传播。

在这里插入图片描述
采用 dropout 可以使模型的泛化性更强,明显地减少过拟合现象。此外,因为它不会太依赖某些局部特征,而且减少了部分更新权值的时间,从而大大地节省了模型训练的时间。

在 TensorFlow 中集成了 dropout 函数,每一次迭代时,会按照指定比例随机将神经元设置为 0 。
在这里插入图片描述
参数

inputs 为输入的张量,

rate 是 0 — 1之间的小数,指定神经元每一次随机被丢弃的比例,如果 rate = 0.1,则 inputs 中 10% 的神经元将被丢弃,也就是 10% 的张量被设置为 0 。未被设置为 0 的张量将按照 1 - 1/rate 进行放大,从而所有输入的总和不变。

seed 是产生随机数的种子值,默认为 None ,一旦设置了这个种子值,每次总会丢弃固定位置的神经元。

training 用来指示当前是处于训练阶段还是测试阶段,只有当 training 为 True,处于训练阶段时,才会进行 dropout 操作,否则不进行 dropout 操作,使用 inputs 中所有的结点参与运算。

name 表示 dropout 层的名称,默认为 None。

级联卷积核

根据对动物视觉系统的研究,每个生物神经元只响应某些特定区域的刺激,一个神经元能够接收并响应的刺激区域称为神经元的感受野。例如,我们所说的视野就是眼睛能够接收到信号的区域。

在卷积神经网络中,通过卷积核提取图像中的特征,输出特征图。
在这里插入图片描述
感受野就是指特征图中每一个点对应输入图像上的区域, 使用一层卷积核,感受野就是卷积核的大小。例如,使用一层 3 x 3 的卷积核,
在这里插入图片描述
对于红色箭头所指的这个点,我们只能看到原始图像 3 x 3 的范围,感受野是 3 x 3 ,一共需要 9 个参数,如果要增大感受野,就需要加大卷积核的尺寸。例如,使用 5 x 5 的卷积核,就可以得到 5 x 5 的感受野。但这时,参数的数量也增加了。
在这里插入图片描述
需要 25 个参数。

感受野越大,特征提取的效果也就会越好,网络的精度也会更佳,但是,大的感受野也会使得模型的参数成倍增加。这会极大地影响神经网络训练的速度,

那么,如何在加大感受野的同时,又尽量减少模型的参数呢?

可以使用级联卷积核来解决上述问题。

例如,输入图像中的这块 5 x 5 的区域,使用 3 x 3 的卷积核,经过卷积运算后,在特征图 1 中得到的结果是一个 3 x 3 的区域,再使用一个 3 x 3 的卷积核对特征图 1 做卷积,在特征图 2 中,得到一个像素点。
在这里插入图片描述
也就是说,特征图 2 中的这个像素能感受到原图像中 5 x 5 的范围,感受野为 5 x 5 ,使用两个 3 x 3 的卷积核和使用一个 5 x 5 的卷积核可以得到同样大小的感受野。但是,使用一个 5 x 5 的卷积核,需要 25 个参数,而使用两次 3 x 3 的卷积核,只需要 18 个参数。

也就是说,堆叠多个小的卷积核代替一个大的卷积核不仅所需要的参数更少,而且卷积层数越多,特征提取就越细致,加入的非线性变换也越多,可以使得模型的非线性表达能力更好。因此,当我们构建卷积神经网络时,常用多个小的卷积核完成特征提取操作。

多通道的级联卷积核

灰度图像只有一个通道,而彩色图像则有多个通道,例如 RGB 图像有 3 个通道,我们在 R、G、B 三个通道上分别使用一个 3 x 3 的卷积核进行运算,将三个卷积结果堆叠在一起,得到特征图1。
在这里插入图片描述
要注意,这里得到的特征图是 1 层的,不再是 3 层的了,然后,再对特征图 1 进行第二次卷积,得到特征图 2 。
在这里插入图片描述
例如,对 RGB 图中这个 5 x 5 x 3 的区域,分别经过 3 x 3 的卷积核进行 3 次运算,在特征图 1 中,得到一个 3 x 3 的区域,经过第二次卷积,在特征图 2 中得到一个 1 x 1 的区域,也就是 1 个像素。
在这里插入图片描述
第一层,3 个 3 x 3 的卷积核,需要 27 个模型参数,第二层一个 3 x 3 的卷积核需要 9 个模型参数,一共需要 36 个模型参数。

总结一下,卷积神经网络中,模型参数的个数与卷积核的大小和输入图像的通道数有关,与图像本身的大小无关。

猜你喜欢

转载自blog.csdn.net/xuechanba/article/details/125124434