前言
"以下内容为个人学习总结,可能存在不足之处,恳请指正!"
1.为什么进行归一化
采用归一化在深度学习和机器学习中非常重要,其原因和背后的理论涉及模型的性能、收敛速度、数值稳定性等方面。以下是对归一化重要性的详细分析,以及如果不使用归一化可能出现的问题:
1. 特征尺度不一致会影响模型训练梯度下降的效率:
在训练神经网络或其他机器学习模型时,我们通常会使用梯度下降法来最小化损失函数。梯度下降的效率和稳定性受特征值的尺度影响。如果不同特征的取值范围差异很大(例如某些特征的值在 0-1 范围内,而其他特征的值在 1-1000 之间),那么梯度下降可能在一些方向上移动很快,而在另一些方向上移动很慢。导致的问题:这样会导致目标函数的等高线呈现扁平的椭圆形,使得梯度下降的路径呈锯齿状,收敛非常缓慢,甚至可能无法收敛到全局最优解。
归一化的好处:将所有特征缩放到相似的范围,梯度在不同方向上的变化更加一致,从而加速收敛,提高训练效率。
2. 权重更新的稳定性 激活函数的饱和问题:
常见的激活函数如 sigmoid 和 tanh 存在饱和区域。在这些区域,函数的梯度接近于零,这会导致“梯度消失”问题。如果输入特征没有经过归一化,特征值可能较大,经过某些权重的累积后进入激活函数的饱和区。导致的问题:网络的梯度会变得非常小,导致模型难以学习(梯度消失问题),尤其是在深层网络中影响更明显。
归一化的好处:归一化可以将输入值限制在合理的范围内,减少进入激活函数饱和区的概率,从而使得梯度在反向传播过程中保持较大的值,帮助模型更好地学习。
3. 防止特征支配(Feature Dominance)
在数据集中,不同特征的数值范围可能差异很大。如果某些特征的数值远大于其他特征,它们会在训练过程中对损失函数的影响更大,从而“支配”模型的学习,导致模型对这些特征的偏向。 导致的问题:模型可能会忽略那些数值较小但实际重要的特征,从而导致欠拟合或者误导模型的学习方向。
归一化的好处:归一化可以将所有特征放在相同的数值尺度上,使得模型在训练过程中对每个特征的重视程度更加均衡,有助于模型更好地捕捉数据中的有用信息。
4. 提升模型的数值稳定性机器学习模型
尤其是深度神经网络,其训练涉及大量的矩阵运算。在这些运算中,如果输入特征值范围较大,可能导致数值溢出或者非常小的梯度值。 导致的问题:数值不稳定可能会导致模型参数的突然发散,训练过程中的损失函数变为 NaN,甚至程序崩溃。 归一化的好处:通过将输入数据压缩到合理范围内,能够减少数值溢出或不稳定的风险,确保训练过程的稳定性。
5. 提升模型的泛化能力
当特征尺度不一致时,模型在某些特征上会过度拟合,即学习到这些特征的噪声,从而影响模型的泛化能力。 导致的问题:模型在训练集上表现良好,但在测试集上表现较差,无法很好的推广到新数据。 归一化的好处:归一化减少了特征之间的差异,使得模型在学习过程中不会偏向某些特征,有助于提高模型对未知数据的泛化能力。
6. 有助于避免学习率的调优陷阱
特征范围差异过大会对学习率的选择造成影响。如果特征的尺度不一致,较大的特征需要较小的学习率来确保收敛,而较小的特征则需要更大的学习率来加速收敛。这种矛盾会使得选择合适的学习率变得非常困难。 归一化的好处:经过归一化之后,所有特征处于相近的尺度上,可以使用一个统一的学习率,使得模型更容易找到合适的学习率,从而提高训练的效率。
如果不使用归一化,可能会遇到的问题
收敛速度慢:梯度下降收敛速度明显降低,训练时间更长,甚至可能需要更多的迭代次数来达到预期效果。
梯度消失:尤其是使用 sigmoid 或 tanh 激活函数时,由于输入过大,可能会导致梯度消失,使得网络难以有效地学习。 模型对某些特征的偏倚:模型可能会过度关注数值范围较大的特征,而忽略数值较小但重要的特征。
训练不稳定:模型的损失函数在训练过程中可能波动较大,甚至发生数值溢出或者发散的现象。
泛化能力差:训练后的模型在测试集上的表现可能会远差于训练集,模型的泛化能力受损。
归一化是数据预处理的关键步骤,可以有效提高模型的性能、数值稳定性和训练效率。是否进行归一化以及选择何种归一化方法会对整个模型的训练结果产生显著影响。
2.有哪些归一化
· 最小-最大归一化(Min-Max Normalization)
· 均值-标准差归一化(Z-Score Normalization/标准化)
· 最大绝对值归一化(Max Abs Scaling)
· 单位向量归一化(Normalization to Unit Vector)
· 对数缩放(Log Transformation)
· Robust Scaler
2.1 最小-最大归一化(Min-Max Normalization)
2.1.1原理
最小-最大归一化的主要目的是将特征的值线性缩放到某个特定的范围(通常是 [0, 1] 或 [-1, 1])。它使用每个特征的最小值和最大值来进行缩放,使得新的特征值都处于这个预定的范围之内。其计算公式为:
是原始数据值。
和
分别是特征 X 的最小值和最大值。
是归一化后的值,其范围通常在 [0, 1] 之间。
2.1.2 效果
缩放到相同范围:将所有特征值缩放到同一尺度,通常是 [0, 1] 或 [-1, 1],这有助于平衡不同特征之间的影响力。
保持原始数据的相对比例:最小-最大归一化是一种线性变换,因此归一化后的数据仍然保持了原始数据的相对大小和顺序。
2.1.3 使用场景
- 特征值范围已知且无极端值:最小-最大归一化适用于特征范围已知且特征之间的数值分布差异不大的情况。例如,当特征的值在一个有限且不变化的区间时,这种归一化是非常有效的。
- 深度学习模型:在神经网络、尤其是使用梯度下降法优化的模型中,使用最小-最大归一化有助于加快收敛速度并提高模型稳定性。
典型场景包括:
- 神经网络:特别是使用 Sigmoid 或 Tanh 作为激活函数的神经网络,因为这些函数对输入范围非常敏感,将数据缩放到特定范围可以有效提高模型性能。
- 计算机视觉领域:图像数据通常是像素值(范围在 0 到 255 之间),最小-最大归一化通常用于将这些像素值缩放到 [0, 1],这样能够让模型更好地处理这些数据。
2.1.5 最大-最小归一化的优点和局限性
优点:
- 简单易懂,容易实现:计算公式简单,适合大部分应用场景。
- 适合范围固定的数据:对于数值范围固定或分布均匀的数据集,最小-最大归一化可以有效缩放数据并加速模型训练。
缺点:
对异常值敏感:最小-最大归一化依赖于特征的最大值和最小值,如果数据中存在异常值(即极大或极小的离群点),这些异常值会显著影响归一化的结果,从而导致数据的缩放失真。
适用范围受限:最小-最大归一化后的数据在新数据上可能会遇到问题。如果新数据的值超出了训练数据的范围,归一化后的值将不再在 [0, 1] 之间。这在生产环境中可能导致不稳定的预测结果,因此这种归一化方法在数据分布具有可控性时效果更好。
2.2 均值-标准差归一化(Z-Score Normalization)
2.2.1原理
均值-标准差归一化是通过将原始数据减去它们的均值并除以标准差,来调整数据的分布,使得标准化后的数据中心在0,标准差为1。这种标准化方法可以将原始数据转化为标准正态分布。
换句话说,Z-Score 归一化帮助我们重新调整特征,使得特征的值分布围绕零对称,且每个特征具有单位标准差。这在处理有不同量纲或数量级的特征时特别有效。(消除特征尺度不一致特征支配)
这个公式将数据转换为均值为0,标准差为1的分布。
2.2.2 使用场景
- 数据分布不确定:如果数据的分布不是很均匀或存在较多异常值,Z-Score 归一化可以更加有效地处理这些情况,因为它将数据缩放为标准正态分布。
- 数据范围未知:当数据范围不确定时,Z-Score 是一个较好的归一化选择,因为它不依赖于数据的最大值和最小值。
- 特征的量纲不一致:如果数据特征的量纲差异很大,均值-标准差归一化可以平衡这些差异。
典型场景包括:
- 深度学习:尤其是使用 ReLU 或其变种激活函数的神经网络,因为 Z-Score 可以让输入特征更均衡。
- 线性回归和逻辑回归:在这些模型中,特征的尺度差异会影响模型的权重,均值-标准差归一化可以缓解这种问题。
2.2.3 Z-score的优缺点
优点:
- 减少异常值的影响:相比于最小-最大归一化,Z-Score 归一化对异常值的影响较小,因为数据被缩放到以均值为中心。
- 适用于分布未知的数据:当数据的最大值和最小值不确定,或存在较多离群点时,Z-Score 归一化比最小-最大归一化更为稳定。
- 处理特征的尺度差异:Z-Score 归一化将所有特征缩放到标准化范围,这有助于模型对不同特征具有类似的敏感度,从而更快收敛。
缺点:
- 不适用于非正态分布:Z-Score 假设数据符合正态分布,但在数据严重偏态或不对称时,归一化效果可能不佳。
- 对均值和标准差敏感:如果数据分布具有极端值或异常值,这些值会对均值和标准差产生很大影响,进而影响归一化的效果。(不要有太多异常值就还行,太多的话对均值方差影响很大)
- 可能引入负值:Z-Score 归一化后的数据可能会有负值,因此对于某些不希望出现负值的场景(例如输入需要为正的情况下),这可能带来问题。
2.2.4 Z-score对模型的影响
Z-Score 归一化将数据转换为标准正态分布,这使得特征之间的差异更容易被模型捕捉到。这对于许多机器学习模型来说是有利的,例如在使用梯度下降进行优化时,由于每个特征都缩放和中心化,所有特征都被缩放到一个标准的范围内,从而消除了原始特征之间在数值上的差异。这样可以让模型的梯度更新过程更加平稳,从而更快收敛。
2.3 最大绝对值归一化(Max Abs Scaling)
2.3.1公式和理解
意思是在数据集的每一列特征,除以所有样本该特征最大的特征数。
- 数据缩放:将数据的特征值映射到一个特定的范围,通常是[-1,1]之间。这样能使不同尺度的特征在同一尺度上进行比较和处理,避免了因特征尺度差异过大对模型训练产生的不良影响。
- 保持数据分布特性:在一定程度上保留了原始数据的分布形状,相比于其他归一化方法(如最小 - 最大归一化),最大绝对值归一化不会过度扭曲数据原本的相对位置关系。
2.3.2使用场景
- 稀疏数据:适用于处理稀疏数据,例如文本分类中的词向量。在自然语言处理中,词向量往往是高维且稀疏的,最大绝对值归一化可以有效地处理这种数据,将其特征值进行合理缩放。
- 存在异常值的数据:当数据集中可能存在异常值,且这些异常值对数据的整体分布影响较大时,最大绝对值归一化是一个较好的选择。因为它只关注每个特征维度中的最大绝对值,不会像其他方法那样受到异常值的严重干扰。
2.3.3优缺点
-
优点
- 对异常值相对鲁棒:由于只考虑每个特征维度的最大绝对值,所以即使数据集中存在一些较大的异常值,也不会使归一化后的结果出现极端情况。例如,在一个包含少量极大值的数据集中,最大绝对值归一化后的大部分数据仍能保持在一个合理的范围内。
- 简单易理解和实现:公式简单,计算成本较低。不需要复杂的参数估计或者复杂的计算过程,容易在数据预处理阶段快速应用。
-
缺点
- 对数据分布改变有限:如果原始数据的分布差异很大,例如数据集中一部分数据集中在较小的范围,另一部分数据集中在较大的范围,最大绝对值归一化可能无法很好地将数据调整到理想的分布状态。
例子:
假设我们有一个关于动物体重和体长的数据集合,其中包括小型昆虫和大型哺乳动物的数据。体重这个特征的数据分布很不均匀,昆虫体重集中在 0.001 - 0.1 千克这个小范围,而哺乳动物体重在 10 - 1000 千克这个大得多的范围。体长特征也有类似情况,昆虫体长在 0.01 - 0.1 米,哺乳动物体长在 1 - 10 米。
使用最大绝对值归一化后,体重特征对于昆虫数据可能会被归一化到一个比较正常的范围(比如昆虫体重数据归一化后在 [-0.001,0.01] 这个区间),但对于哺乳动物数据,因为整体数值大,可能只是稍微缩小了一点范围(比如哺乳动物体重数据归一化后在 [-0.01,1] 这个区间)。体长特征也会出现类似情况。
这样一来,数据整体的分布还是呈现出明显的两段式,没有将昆虫和哺乳动物的数据在分布上很好地融合或者拉到一个更均匀的状态,对于模型来说,这种不均匀的数据分布在训练时仍然可能会造成问题,比如梯度下降过程中可能还是会受到不同数据段的尺度差异影响。 - 依赖绝对值最大的样本:整个归一化过程依赖于每个特征维度中绝对值最大的那个样本值。如果这个最大值是一个异常值,可能会导致归一化后的其他样本值被过度压缩或者拉伸,影响数据的代表性。
- 对数据分布改变有限:如果原始数据的分布差异很大,例如数据集中一部分数据集中在较小的范围,另一部分数据集中在较大的范围,最大绝对值归一化可能无法很好地将数据调整到理想的分布状态。
2.4单位向量归一化
2.4.1公式和理解
单位向量归一化通常是对数据集中的特征向量进行操作。例如,在一个图像识别任务中,对于图像的像素特征,每一个像素点周围的颜色梯度信息可以用一个向量来表示。这个向量就是一个特征向量,单位向量归一化可以应用于这个向量,使得梯度方向信息(向量方向)被突出,而不受梯度大小(向量长度)的过多影响。
2.4.2作用
- 保持向量方向:主要作用是将向量的长度归一化为 1,同时保持向量的方向不变。这在很多机器学习算法中非常有用,比如在文本分类的词向量表示中,经过单位向量归一化后,可以更关注词向量的方向(语义方向),而不是其长度(可能会受到词频等因素的干扰)。
- 特征缩放和标准化:它也是一种特征缩放的方式。通过将向量归一化为单位长度,将所有特征都放在一个相对统一的尺度上,避免了因特征向量长度差异过大而导致的模型训练问题,类似于前面提到的其他归一化方法的缩放功能
2.4.3使用场景
- 文本处理和词向量表示:在自然语言处理中,当使用词向量来表示文本时,单位向量归一化可以使词向量更具语义代表性。例如,在计算文本相似度时,经过单位向量归一化后的词向量可以更准确地反映词与词之间的语义关系,而不是被词向量的长度所影响。
- 神经网络中的特征表示:在神经网络的隐藏层或者输入层,对特征向量进行单位向量归一化可以帮助模型更好地学习特征之间的关系。特别是在一些基于距离度量的模型或者对特征方向敏感的模型中,单位向量归一化能够提供更合适的特征表示。
2.4.4 优缺点
优点
- 几何意义明确:从几何角度看,单位向量归一化将向量映射到单位圆(二维)或者单位球(三维及以上)上,使得向量之间的比较更侧重于方向而不是长度。这种几何性质在很多基于几何解释的机器学习算法中非常有用,例如基于向量夹角的分类算法。
- 对特征表示优化效果好:能够有效地去除特征向量长度对模型的影响,使得模型可以更专注于特征之间的内在关系和方向信息。在一些对特征方向敏感的任务中,如某些图像识别任务中基于边缘方向的特征提取,单位向量归一化可以提高特征的质量。
缺点
- 丢失长度信息:由于将向量长度归一化为 1,会丢失原始向量的长度信息。在某些情况下,向量的长度可能也包含重要的信息。例如,在统计文档中单词出现的频率时,单词向量的长度可能代表了单词的重要性程度,单位向量归一化后就无法体现这一点。
- 计算成本相对较高:与一些简单的归一化方法(如最大 - 最小归一化)相比,单位向量归一化需要计算向量的 L2 范数,涉及到开平方运算等,在大规模数据处理时,计算成本相对较高,可能会影响数据预处理的效率。
2.5 对数归一化
2.5.1公式
2.5.2 作用
- 压缩数据范围:对数函数的特性是可以将大范围的数据压缩到一个相对较小的范围。这对于处理数值跨度很大的数据特别有用,比如在处理一些具有指数增长或幂律分布的数据时,能够将数据变得更紧凑,减少数据的离散程度。
- 减弱异常值影响:对于一些存在较大异常值的数据,对数归一化可以降低异常值对数据整体分布的影响。因为对数函数增长的速度会随着数值的增大而变慢,所以异常大的值经过对数运算后,不会像原始数据那样对整体分布产生巨大的干扰。
2.5.3使用场景
- 金融数据:在金融领域,如股票价格、经济指标等数据通常具有较大的数值范围和可能的异常值。对数归一化可以将这些数据进行合理的压缩,使得不同股票价格或者经济指标之间的比较和分析更方便。例如,分析不同公司的市值数据,这些数据可能从数百万到数千亿不等,对数归一化后可以将它们放在一个更可比的范围内。
- 生物学数据:像基因表达数据、微生物种群数量等生物数据,其数量级变化范围可能很广。对数归一化可以帮助生物学家更好地分析这些数据,突出数据的相对变化而不是绝对数值,便于比较不同基因的表达水平或者微生物种群的相对大小。
2.5.4优缺点
优点
- 有效处理指数分布数据:能够很好地适应指数分布或类似的长尾分布数据。将这种数据进行对数归一化后,可以使其更接近正态分布,这对于很多基于正态分布假设的统计方法和机器学习模型是很有帮助的。
- 保持数据的相对顺序:对数归一化在一定程度上保持了原始数据的相对顺序。如果
,那么
(对于正数x),经过归一化后,这种相对顺序关系仍然存在,这对于一些依赖数据排序的分析方法是很重要的。
缺点
- 无法处理负数和零(直接):对数函数的定义域是正数,所以对于包含负数或零的数据,需要先进行额外的数据转换处理,这增加了数据预处理的复杂性。
- 改变数据的比例关系:对数归一化改变了数据之间的比例关系。例如,原始数据中
,经过对数归一化后,
和
的比例不再是 2 倍关系,这在一些对数据比例敏感的分析场
3 总结
最小-最大归一化
-
适用场景:
- 图像处理中的像素归一化
- 神经网络中的输入层预处理
- 传感器数据归一化
-
应用实例:
- 图像识别任务中的预处理
- 实时数据流处理中的传感器数据归一化
均值-标准差归一化
-
适用场景:
- 线性回归模型
- 支持向量机(SVM)
- K近邻(KNN)算法
- 主成分分析(PCA)
-
应用实例:
- 信贷评分模型中的特征标准化
- 生物医学信号处理(如EEG数据)的预处理
最大绝对值归一化
-
适用场景:
- 文本分析中的稀疏矩阵(如TF-IDF矩阵)
- 具有稀疏特征的数据集
-
应用实例:
- 自然语言处理中的文本向量归一化
- 大规模机器学习任务中的特征矩阵预处理
单位向量归一化
-
适用场景:
- 基于距离度量的模型(如K-means、KNN)
- 向量相似性计算
-
应用实例:
- 文本分类中的词频向量归一化
- 图像处理中的颜色向量处理
对数缩放
-
适用场景:
- 金融数据分析(如股票价格、交易金额)
- 生物信息学(如基因表达数据)
- 环境科学(如污染物浓度数据)
-
应用实例:
- 风险管理中的财务数据处理
- 生物统计学中的数据预处理