当前位置:首页 > 电源 > 电源
除了卷积层、池化层、全连接层三大核心层级,CNN还包含激活函数、批归一化(BN)、Dropout等辅助层级,这些层级虽然不直接参与特征提取的核心过程,但能够有效优化模型性能,解决训练过程中的梯度消失、过拟合、训练缓慢等问题,是CNN“核心骨架”不可或缺的组成部分。
1. 激活函数(Activation Function):引入非线性,提升特征表征能力
卷积层、全连接层的输出通常需要经过激活函数处理,其核心作用是为网络引入非线性映射关系,让CNN能够学习复杂的特征映射(如目标的复杂轮廓、语义关联),避免线性模型无法表征复杂特征的局限——如果没有激活函数,无论CNN的深度如何,都只能实现线性映射,无法处理复杂的计算机视觉任务。
目前CNN中最常用的激活函数是ReLU(Rectified Linear Unit,修正线性单元),此外还有Sigmoid、Tanh、Leaky ReLU、Swish等,其中ReLU的应用最广泛,其核心优势是计算简单、能够有效解决梯度消失问题。ReLU的函数表达式为:f(x)=max(0,x),即当输入x≥0时,输出x;当输入x<0时,输出0。
ReLU的核心优势的是:正向传播时计算简单(仅需判断输入是否大于0),反向传播时梯度稳定(x≥0时,梯度为1,不会出现梯度消失),能够加速模型训练;同时,ReLU能够抑制部分神经元的输出(x<0时输出0),实现“稀疏激活”,减少冗余特征,提升模型的泛化能力。相比之下,传统的Sigmoid、Tanh激活函数,在网络较深时容易出现梯度消失(梯度趋近于0),导致模型训练失败,目前已很少单独使用。
2. 批归一化(Batch Normalization, BN):加速训练,提升泛化能力
批归一化是CNN中用于加速模型训练、提升泛化能力的核心辅助层级,通常位于卷积层之后、激活函数之前,其核心作用是对卷积层输出的特征图进行归一化处理,将特征图的像素值调整到合适的范围(如均值为0、方差为1),解决“内部协变量偏移”问题。
“内部协变量偏移”是CNN训练过程中的常见问题:随着网络层数的增加,前面层级的参数更新会导致后面层级的输入特征分布不断变化,使得后面层级的训练难度增加(需要不断适应新的特征分布),导致模型训练缓慢、容易过拟合。批归一化通过对每一批训练数据的特征图进行归一化,固定特征分布,减少内部协变量偏移,从而加速模型训练,提升模型的泛化能力。
批归一化的核心优势是:能够加速模型收敛(训练速度提升2-10倍),减少对学习率的依赖(无需精细调整学习率);能够抑制过拟合,减少Dropout的使用;能够缓解梯度消失问题,让深层网络的训练成为可能。目前,几乎所有的深度CNN模型(如ResNet、MobileNet)都包含批归一化层级。
3. Dropout:防止过拟合,提升模型稳定性
Dropout是CNN中用于防止过拟合的核心辅助层级,通常位于全连接层之间,也可用于卷积层之后,其核心作用是“随机丢弃部分神经元”,减少模型对局部特征的过度依赖,提升模型的泛化能力和稳定性。
Dropout的工作原理是:在模型训练过程中,按照预设的概率(如0.5,即50%的概率),随机丢弃全连接层(或卷积层)中的部分神经元,被丢弃的神经元不参与正向传播和反向传播,相当于每次训练都在不同的“简化模型”上进行;在模型推理过程中,不丢弃任何神经元,而是将所有神经元的输出乘以丢弃概率(或对权重进行缩放),确保推理结果的一致性。
Dropout的核心优势是:能够有效防止模型过拟合——通过随机丢弃神经元,避免模型过度依赖某几个神经元的特征(如过度依赖某一局部纹理特征),迫使模型学习更全面、更稳定的特征;同时,Dropout能够减少参数数量(训练时),降低计算复杂度,加速模型训练。需要注意的是,Dropout仅在训练过程中使用,推理过程中不使用,避免影响推理精度。
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读
关闭