卷积层和池化层
卷积层通常是用作对输入层输入数据进行特征提取。池化层负责对感受域内的特征进行筛选,提取区域内最具代表性的特征,能够有效地降低输出尺度,进而减少模型所需要的参数量
卷积层次 特征类型 浅层卷积 边缘特征 中层卷积 局部特征 深层卷积 全局特征
卷积的类型
池化类型
区别
卷积层 池化层 结构 零填充时输出维度不变,而通道数改变 通常特征维度会降低,通道数不变 稳定性 输入特征发生细微改变时,输出结果会改变 感受域内的细微变化不影响输出结果 作用 感受域内提取局部关联特征 感受域内提取泛化特征,降低维度 参数量 与卷积核尺寸、卷积核个数相关 不引入额外参数
卷积核是否越大越好?
否
卷积核越大,感受野增大,但计算量也会增加,使用多个小的卷积核替代大的卷积效果更优 卷积核越大,对特征提取丢失信息会越多,在ZFNet中,作者对Alexnet网络大卷积核可视化发现效果差 使用在自然语言处理领域有时可能是更好的选择
减少卷积层参数量方法总结归纳:
使用堆叠小卷积核代替大卷积核:VGG网络中2个3x3的卷积核可以代替1个5x5的卷积核 使用分离卷积操作:将原来kxkxc的卷积操作分离为kxkx1和1x1xc的两部分操作 添加1x1的卷积操作:与分离卷积类似,但是通道数可变,在kxkxc卷积前添加1x1xc的卷积核 在卷积层前使用池化操作:池化可以降低卷积层的输入特征维度
提高卷积神经网络的泛化能力
方法 说明 使用更多数据 在有条件的前提下,尽可能多地获取训练数据是最理想的方法,更多的数据可以让模型得到充分的学习,也更容易提高泛化能力 使用更大批次 在相同迭代次数和学习率的条件下,每批次采用更多的数据将有助于模型更好的学习到正确的模式,模型输出结果也会更加稳定 调整数据分布 大多数场景下的数据分布是不均匀的,模型过多地学习某类数据容易导致其输出结果偏向于该类型的数据,此时通过调整输入的数据分布可以一定程度提高泛化能力 调整目标函数 在某些情况下,目标函数的选择会影响模型的泛化能力,如目标函数
f
(
y
,
y
′
)
=
a
b
s
(
y
−
y
′
)
f(y,y')=abs(y-y')
f ( y , y ′ ) = a b s ( y − y ′ ) 在某类样本已经识别较为准确而其他样本误差较大的侵害概况下,不同类别在计算损失结果的时候距离权重是相同的,若将目标函数改成 f(y,y’)=(y-y’)^2 则可以使误差小的样本计算损失的梯度比误差大的样本更小,进而有效地平衡样本作用,提高模型泛化能力 调整网络结构 在浅层卷积神经网络中,参数量较少往往使模型的泛化能力不足而导致欠拟合,此时通过叠加卷积层可以有效地增加网络参数,提高模型表达能力;在深层卷积网络中,若没有充足的训练数据则容易导致模型过拟合,此时通过简化网络结构减少卷积层数可以起到提高模型泛化能力的作用 数据增强 数据增强又叫数据增广,在有限数据的前提下通过平移、旋转、加噪声等一些列变换来增加训练数据,同类数据的表现形式也变得更多样,有助于模型提高泛化能力,需要注意的是数据变化应尽可能不破坏元数数据的主体特征(如在图像分类任务中对图像进行裁剪时不能将分类主体目标裁出边界)。 权值正则化 权值正则化就是通常意义上的正则化,一般是在损失函数中添加一项权重矩阵的正则项作为惩罚项,用来惩罚损失值较小时网络权重过大的情况,此时往往是网络权值过拟合了数据样本(如Loss=f(WX+b,y’)+\frac{\lambda}{\eta}\sum{ 屏蔽网络节点 该方法可以认为是网络结构上的正则化,通过随机性地屏蔽某些神经元的输出让剩余激活的神经元作用,可以使模型的容错性更强。