问题描述:
总所周知在数据载入机器学习模型训练之前都需要进行归一化以保证数据在统一尺度有利于训练得到统一的特征,同样的对应特征而言在神经网络训练的时候不同深度卷积产生的特征尺度也会发生偏移和变化,为了统一特征学习,归一化概念被引入神经网络。
归一化手段在深度学习任务中有至关重要的作用,然而在工程实践中,由于医学图像采集困难,可能会出现样本估计与总体估计相差甚远的问题,因此需要对深度学习这些任务的归一化手段在医学图像中的应用进行探索
学习目标:
理解和分析深度学习常见归一化手段在医学图像上的实际使用
例如:
- batchnorm
- instancenorm
- layernorm
- groupnorm
学习内容:
一、 batchnorm
公式定义如下:
对于m个特征的输入,统计其所有特征构成的均值和方差,优化每一个特征使其满足标准正太分布(归一化到均值为0方差为1)并对每一个batch内维度进行求和计算,最后再通过可学习参数γ和β保留一部分原数据分布模式。
在神经网络训练阶段:
batchnorm包含γ和β两个参数有用学习,保留和计算当前特征的均值和方差
在神经网络测试阶段:
网络使用训练阶段保存下来的均值和方差,当测试样本进入网络前向传播过程,特征使用上述进行归一化以得到最终和训练分布相似的特征用于下游任务。
batchnorm是为了解决深度神经网络训练出现内部协变量偏移使得难以训练的问题,更注重整个批次数据的标准化
二、instancenorm
与batchnorm的差别只在于,只对单样本单通道内进行求和,不对batch维度多样本统计量进行求和,同样包含两个可学习参数。
instancenorm更关注单个样本在每个特征上的标准化,这样的目的在于减小不同样本在同一特征上的尺度差异
我的项目实战中就曾经遇到batchnorm难以收敛而instancenorm确能很好的解决问题的情况,我的数据集仅包含600例左右的正负样本,经过5折划分后,训练样本更少仅为450例左右,此时使用batchnorm网络出现了训练困难的问题,正如上述所说,batchnorm的关注于对样本总体的概率估计,而医学数据集3d数据集特有的单样本数据计算量大导致batch必须设置的小(4,8或者16),进一步恶化了batchnorm的概率估计,这样训练的模型在推理验证的时候使用的均值和方差是混乱偏移的,因此效果很差。后续我修改为instancenorm:我们直接不去考虑对batch维度的处理,我们更关于于样本的特征本身,最终取得了满意的结果
三、layernorm
layernorm一开始是针对自然语言处理领域batchnorm对于长短不一的句子进行统计均值和方差无意义的问题的优化和解释,对于自然语言数据,不同句子的相同位置代表的含义并不相同,因此计算得到的均值和方差也是剧烈震荡难以收敛的。从公式描述上layernorm与batchnorm相同,只不过不同的是layernorm是针对一个样本的所有特征进行归一化,而batchnorm是针对一个batch多个样本的同一个特征进行归一化,一个横向归一化,一个纵向归一化。因此Layernorm适合于序列样本的优化。
四。Groupnorm
groupnorm介于layernorm和instancenorm之间,是对一个样本的特征进行分组,对组内特征进行归一化。
各归一化方法的优缺点:
-
Instance Normalization (InstanceNorm)
优势:
适用于小批次的训练数据,对每个样本的每个通道进行标准化。有助于减小不同样本在同一特征上的尺度差异,提高模型的泛化能力
缺点:
对于序列数据(如文本)或非图像数据,可能效果较差,计算代价较高 -
Layer Normalization (LayerNorm):
优势:
在序列数据(如自然语言处理任务)中效果较好,能够处理变长序列
缺点:
在图像数据上的表现相对较差,因为它独立于样本和通道 -
Group Normalization (GroupNorm):
优势:
适用于较小的批次,不受批次大小影响,且相对于 InstanceNorm 更节省计算资源。
缺点:
对于非常深的网络,可能出现切分成组的效果变弱。 -
Batch Normalization (BatchNorm):
优势:
解决深度神经网络训练出现内部协变量偏移使得难以训练的问题,更注重整个批次数据的标准化。
缺点:
当batchsize小的时候对样本量估计偏差大。