归一化函数
Normalization
把输入数据调整到特定范围或分布,以便后续处理更稳定、更高效。
一、输入归一化
Min-Max Scaling
- 图像像素值预处理(把0-255缩放到0-1)
- KNN等对数值尺度敏感的模型
Z-score Standardization
标准化为均值 0 方差1
- 线性回归
- PCA降维
- 需要高斯分布假设的模型
二、激活归一化
深度学习中,隐藏层输出归一化,加速训练。
Batch Normalization (BN)
在每个 mini-batch 上, 计算均值
再引入两个可学习参数(仿射变换):
应用:
- CNN、MLP、RNN(一定注意: RNN 里 BN 用得少)
- 深度残差网络 (ResNet)
Layer Normalization (LN)
在单一样本的所有神经元上计算均值方差:
应用:
- Transformer
- RNN(自然语言处理)
因为和 batch 大小无关,非常适合变长序列。
Instance Normalization (IN)
针对图像的一张一张样本,每个通道单独归一化。
应用:
- 风格迁移(Style Transfer)
- 图像生成领域(GAN)
Group Normalization (GN)
把通道分组,每组内部归一化。 介于BN(全局)和IN(局部)之间。
应用:小Batch Size场景(如目标检测)
三、输出归一化
Softmax
把任意实数向量映射成概率分布,核心用于多分类输出和注意力机制权重归一化,在神经网络训练中极其重要。
将一组输入值转换为概率分布。
最后一层通常使用 Softmax 函数,将输出转换为各个类别的概率。
非常重要!(尤其在神经网络训练时)
记 Softmax 输出为:
则对于输入
这可以写成一个 Jacobian 矩阵(雅可比矩阵):
解释:
- 对角线元素:自己对自己的导数
。 - 非对角元素:互相之间的影响
。
这也是为什么交叉熵和 Softmax 通常合并计算梯度,能极大简化反向传播。