大模型数学基础2

重点梳理了均值、方差、均匀分布、正态分布的概念、数学本质及其在大模型训练中的关键应用

一、 核心概念:描述数据的基础

1. 均值 (Mean / Average)

  • 数学定义:数据集中所有数值之和除以数据个数。
    • 总体均值:μ = (1/N) Σ x_i
    • 样本均值:x̄ = (1/n) Σ x_i
  • 本质:描述数据分布的中心位置期望值
  • PyTorch实现
    import torch
    x = torch.tensor([1., 2., 3., 4.])
    mean = torch.mean(x)  # 输出: 2.5
    # 指定维度计算(常用于高维张量)
    x_2d = torch.randn(4, 10)  # 4个样本,每个10维特征
    mean_dim0 = torch.mean(x_2d, dim=0)  # 沿第0维(样本维)计算,输出形状(10,)
    

2. 方差 (Variance) 与 标准差 (Standard Deviation)

  • 数学定义:衡量数据点偏离均值的程度。
    • 方差:σ² = (1/N) Σ (x_i - μ)² (总体方差)
    • 样本方差:s² = (1/(n-1)) Σ (x_i - x̄)² (使用 n-1 进行无偏估计)
    • 标准差:方差的平方根 (σs),与原始数据单位一致。
  • 本质:描述数据分布的离散程度。方差/标准差越大,数据越分散。
  • PyTorch实现
    x = torch.tensor([1., 2., 3., 4.])
    var_sample = torch.var(x, correction=1)   # 样本方差,默认correction=1
    var_population = torch.var(x, correction=0) # 总体方差
    std = torch.std(x)  # 标准差
    
    # 实际应用:计算一个批次特征的方差
    batch_features = torch.randn(32, 128)  # (batch_size, feature_dim)
    batch_var = torch.var(batch_features, dim=0)  # 计算每个特征维度的方差
    

二、 关键概率分布:模型初始化的蓝图

权重初始化是模型训练的第一步,合适的分布选择至关重要。

1. 均匀分布 (Uniform Distribution)

  • 定义:在区间 [a, b) 内,每个点出现的概率相等。
  • 概率密度函数 (PDF)f(x) = 1/(b-a), 当 a ≤ x < b
  • PyTorch实现与应用
    # 生成均匀分布随机数
    a, b = -0.05, 0.05
    uniform_tensor = (b - a) * torch.rand(1000) + a  # 生成1000个在[a,b)的数
    
    # 大模型应用:均匀分布初始化 (例如原始Transformer论文)
    weight = torch.empty(512, 256)
    torch.nn.init.uniform_(weight, a=-0.1, b=0.1)  # 将weight初始化为[-0.1, 0.1)的均匀分布
    

2. 正态(高斯)分布 (Normal / Gaussian Distribution)

  • 定义:由均值 μ 和标准差 σ 决定的经典“钟形曲线”分布。
  • 概率密度函数 (PDF)f(x) = (1/(σ√(2π))) * exp(-(x-μ)²/(2σ²))
  • PyTorch实现与应用
    # 生成正态分布随机数
    mean, std = 0.0, 0.01
    normal_tensor = torch.normal(mean=mean, std=std, size=(1000,))
    
    # 大模型应用:更先进的初始化方法(如He初始化,适用于ReLU激活函数)
    weight = torch.empty(512, 256)
    # He初始化:std = sqrt(2 / fan_in),其中fan_in是输入神经元数
    fan_in = weight.size(1)
    std_he = (2.0 / fan_in) ** 0.5
    torch.nn.init.normal_(weight, mean=0.0, std=std_he)
    

两种分布对比与选择

特征 均匀分布 正态分布
形状 矩形 钟形曲线
参数 下限 a, 上限 b 均值 μ, 标准差 σ
初始化特点 简单,所有值在区间内概率相同 更符合自然规律,值集中在均值附近
典型应用 基础或原始Transformer初始化 现代主流的初始化方式(如He/Xavier)
一个关键问题 若区间设置不当,可能导致梯度消失或爆炸 若标准差设置不当,同样可能引发训练不稳定

三、 核心枢纽:批归一化 (Batch Normalization)

批归一化是现代深度模型的标配,它直接依赖于对批次数据均值方差的计算。

1. 批归一化步骤

对于一个小批量数据 B = {x_1, ..., x_m}

  1. 计算批次统计量
    • μ_B = (1/m) Σ x_i (批次均值)
    • σ²_B = (1/m) Σ (x_i - μ_B)² (批次方差)
  2. 标准化x̂_i = (x_i - μ_B) / √(σ²_B + ε)ε 为极小值防除零)
  3. 缩放与偏移y_i = γ * x̂_i + βγβ 是可学习的参数,恢复模型的表达能力)

2. PyTorch实现与理解

import torch.nn as nn

# 使用PyTorch内置的BatchNorm层
batch_norm = nn.BatchNorm1d(num_features=128)  # 对128维的特征进行批归一化

# 前向传播时
features = torch.randn(32, 128)  # (batch_size, feature_dim)
normalized_features = batch_norm(features)

# 理解其内部计算(简化版):
def simple_batch_norm(x, gamma=1.0, beta=0.0, eps=1e-5):
    batch_mean = x.mean(dim=0)          # 计算批次均值
    batch_var = x.var(dim=0, correction=0) # 计算批次方差
    x_hat = (x - batch_mean) / torch.sqrt(batch_var + eps) # 标准化
    return gamma * x_hat + beta          # 缩放与偏移

3. 批归一化的作用

  • 稳定训练:减轻内部协变量偏移,允许使用更大的学习率。
  • 轻微正则化:批次统计量引入的噪声有正则化效果。
  • 加速收敛:使损失函数更平滑,优化更顺畅。

归一化技术扩展

技术 计算均值和方差的维度 主要应用场景
批归一化 (Batch Norm) 沿 batch 维度 标准卷积网络和全连接网络(batch较大时)
层归一化 (Layer Norm) 沿 feature 维度 Transformer、RNN(对序列长度不敏感)
实例归一化 (Instance Norm) 对每个样本的每个通道单独计算 风格迁移、生成对抗网络
组归一化 (Group Norm) 将通道分组后沿组内计算 小批量训练(如目标检测、视频处理)
posted @ 2026-02-08 10:44  ffff5  阅读(0)  评论(0)    收藏  举报