VecNormalize 类详解教程:强化学习中的观测与奖励归一化 VecNormalize 类详解教程:强化学习中的观测与奖励归一化1. 引言在深度强化学习中,输入数据的尺度对神经网络训练的稳定性和效率至关重要。观测值的不同维度可能具有截然不同的数值范围(如涨跌幅在[-0.1, 0.1],成交量在[-1_000_000, 1_000_000]),而奖励值的绝对值也可能差异巨大。这种尺度不一致会导致:梯度更新不稳定学习速度缓慢需要精细调整学习率策略网络难以收敛VecNormalize是 Stable-Baselines3 提供的核心环境包装器,通过运行均值与标准差对观测值和奖励值进行在线归一化,有效解决了上述问题。2. VecNormalize 的核心原理2.1 运行统计量(Running Statistics)VecNormalize使用 Welford 在线算法计算均值和方差,无需存储历史数据:观测归一化公式:normalized_obs=(obs-mean)/sqrt(var+epsilon)奖励归一化公式(可选):normalized_reward=reward/sqrt(var+epsilon)注意:奖励通常只除以标准差,不减去均值,以保留奖励的正负符号信息。2.2 运行均值更新算法采用指数移动平均(EMA)或累积平均两种模式:累积模式(norm_obs=False时对奖励):count=count+1delta=x-mean mean=mean+delta/count var=var+delta*(x-mean)指数移动平均模式(norm_obs=True时对观测):mean=(1-epsilon)*mean+epsilon*x var=(1-epsilon)*var+epsilon*(x-mean)^22.3 完整处理流程原始环境step() 获取 obs, rewards, dones, infos