雷达 · 通信 · 电子战 / 基础精学 160
Welford递推同时更新均值和中心平方和,可避免以两个大数相减计算小方差,并支持逐样本流式处理。
实际记录只包含有限个采样值。由记录计算得到的数值与总体参数并不相同:前者受记录长度、噪声、边界约定及运算精度影响,后者属于给定模型的属性。建立可复核结论需要先固定输入含义、统计假设和归一化方式,再比较可计算量与理论量。
实值有限数据序列;初始计数与中心平方和为零;算法恒等式不要求数据独立或高斯。
mn:前n个样本均值(幅度)
M2,n:中心平方和(幅度平方)
δn:新样本对旧均值之差(幅度)
把新均值写成旧均值加增量。
旧残差和为零,因此均值平移只增加平方项。
代入更新式消去新均值。
旧样本平移与新残差合并后得到单一乘积。
只有计数至少为二才输出无偏样本方差。
第一个样本使中心平方和严格为零。
设两批数据量为 nA,nB,均值为 mA,mB,中心平方和为 MA,MB。记 δ=mB−mA、n=nA+nB,合并均值为
将每批样本相对总均值的偏移展开,批内一阶离差和为零,交叉项消失,得到
把第二批取为一个样本就恢复在线中心矩更新。
该关系允许并行统计后合并,同时保留中心化的数值优势;有限精度下不同合并树会产生不同舍入顺序,结果应以容差比较,而不是要求浮点逐位相同。空批需要单独处理,不能对总数零执行除法。
递推保存相对当前均值的变化,而非分别累加很大的平方和与均值平方。它改进数值稳定性但不是无限精度算法;当输入尺度超过浮点或定点分辨能力时,小变化仍会丢失。
构造均值一百万、标准差0.1的10000点序列,将在线中心矩与离线中心化结果比较,并检查第一样本、常数输入及最终均值。数值脚本使用固定随机种子;随机实验的判据采用有限容差,代数关系的判据采用浮点残差。图中同时展示参数变化趋势与对应误差,关键数值写入独立结果文件。
| 量 | 数值 |
|---|---|
| 样本数 | 10000 |
| input offset | 1000000 |
| welford variance | 0.0100479903502 |
| centered batch variance | 0.0100479903511 |
| raw subtraction variance | 0.00660066006601 |
| relative variance error | 8.68123930165e-11 |
| mean difference | 3.49245965481e-10 |
图 1 Welford在线中心矩更新的固定参数数值验证
表中数值和图中曲线由 MATLAB 实际运行得到,随机种子为 20261079;运行版本与完整结果另存为独立文件。
SystemVerilog实现输入新样本、旧均值和新均值后的差值与中心矩增量乘积;计数倒数和均值寄存器在外部。端口为16位有符号码,内部64位,同步复位,valid空拍保持状态;
逐有效输入输出。自检覆盖多组数据、空拍、边界和复位,仅验证所述整数子核,不代表完整算法的硬件验证。
独立自检程序已在 Icarus Verilog 13.0 中实际运行并通过。该结果不包含器件综合、静态时序分析或板级测试。
用于流式噪声功率监测、在线统计和大偏置小波动数据。定点实现应为中心矩保留额外累加位,并使均值除法的舍入规则保持一致。
在线更新顺序会造成有限精度下的微小差异。
异常值平方可能快速消耗累加器动态范围。
有限精度实现必须区分输入量化、内部舍入和最终结果格式,不能仅依据浮点曲线估计硬件误差。
Welford递推由中心平方和恒等式推出,以差值乘积实现稳定在线更新。
内容依据:每日精学第 160 课《Welford在线中心矩更新》。图表沿用原课固定参数数值结果,属于数值验证,不代表设备实测。