第 127 题:特征归一化的在线更新,流式数据的均值方差估计?
题目
特征归一化的在线更新,流式数据的均值方差估计?
完整讲解
一、特征归一化的作用
连续特征归一化(如 z-score $(x-\mu)/\sigma$ 或 min-max)使各维尺度一致、加速收敛、避免大尺度特征主导梯度。离线训练时 $\mu,\sigma$ 可从全量或 batch 统计得到;流式/在线场景下数据持续到达,全量重算不现实,需要在线更新的均值与方差估计。
二、流式均值与方差的增量更新
- 均值:递推公式
\(\bar{x}_{n+1} = \bar{x}_n + \frac{x_{n+1} - \bar{x}_n}{n+1}.\)
单遍、$O(1)$ 更新,无需存历史。
- 方差:用 Welford 算法 增量维护二阶中心矩,避免两次遍历:
\(\delta = x_{n+1} - \bar{x}_n,\quad \bar{x}_{n+1} = \bar{x}_n + \delta/(n+1),\quad M_{n+1} = M_n + \delta \cdot (x_{n+1} - \bar{x}_{n+1}),\quad \sigma^2_{n+1} = M_{n+1}/n.\)
其中 $M_n$ 为平方和偏差的累积,$\sigma^2_n = M_n/n$(或 $M_n/(n-1)$ 为无偏方差)。
- 在线使用:每来一条样本或一个 batch,用上述公式更新全局 $\bar{x},\sigma^2$(或滑动窗口内的统计);推理时用当前估计的 $\mu,\sigma$ 做 z-score 归一化。需定期持久化 $\mu,\sigma$ 供 serving 使用。
三、衰减与窗口
- 全历史:上述为全历史均值和方差,对分布漂移反应慢。指数移动平均(EMA):$\bar{x}{n+1} = (1-\alpha)\bar{x}_n + \alpha x{n+1}$,$\alpha \in (0,1)$,近期权重大,对漂移更敏感。
- 滑动窗口:只保留最近 $W$ 条更新 $\mu,\sigma$;需存窗口或用近似(如 TDigest 算分位数、或 EMA 近似窗口均值和方差)。
- 多任务/多场景:若不同场景分布不同,可维护多套 $(\mu,\sigma)$ 或按 key(如 user 分桶)维护,在线按 key 查表归一化。
四、工程注意
- 冷启动:$n$ 很小时 $\sigma$ 不稳定,可设下限或先用全局默认 $\mu,\sigma$ 直到样本足够。
- 与训练一致:线上推理用的 $\mu,\sigma$ 应与训练阶段估计方式一致(全量/EMA/窗口),避免 train-serving skew。
面试要点
- 能写出流式均值的递推公式与 Welford 方差增量更新,并说明单遍、无需存全量数据。
- 能说清全历史 vs EMA vs 滑动窗口的取舍;EMA 对漂移敏感、窗口需存或近似。
- 能提及冷启动、多 key 统计、与训练阶段估计一致以避免 skew。
记忆要点
- 流式均值:$\bar{x}{n+1}=\bar{x}_n+(x{n+1}-\bar{x}n)/(n+1)$;方差:Welford 增量 $M{n+1}=M_n+\delta(x_{n+1}-\bar{x}_{n+1})$。
- 全历史稳但慢于漂移;EMA 敏感;滑动窗口需存或近似。
- 冷启动设 $\sigma$ 下限;线上 $\mu,\sigma$ 与训练估计方式一致。