更改

跳到导航 跳到搜索
删除1字节 、 2026年8月23日 (星期日)
第84行: 第84行:  
<math>
 
<math>
 
\mathbf{x} \mapsto \frac{\mathbf{x} - \tilde{\boldsymbol{\mu}}}{\sqrt{\tilde{\boldsymbol{\sigma}}^2 + \epsilon}}
 
\mathbf{x} \mapsto \frac{\mathbf{x} - \tilde{\boldsymbol{\mu}}}{\sqrt{\tilde{\boldsymbol{\sigma}}^2 + \epsilon}}
−
</math>
+
</math>,
−
​
   
其中 <math>\tilde{\boldsymbol{\mu}}</math>、<math>\tilde{\boldsymbol{\sigma}}</math> 为均值与标准差——训练时按当前批次估计,推理时改用滑动平均(原因见下文)。由于 BN 对每个维度独立地缩放和平移,它本身也是一个可逆变换:其雅可比矩阵为对角阵,[[雅可比行列式]]即各维度缩放因子的乘积,可直接加入[[对数似然]]——这使 BN 可以像耦合层一样作为流中的一层。引入 BN 主要是为了稳定深层训练:它抑制了由缩放参数 <math>\exp(\mathbf{s})</math> 引起的数值爆炸,使梯度稳定传播。使用 BN 有一个容易忽略的细节:训练时均值与方差是从当前这一批样本中估计的,因此单个样本的输出会依赖同批次的其他样本——此时的 BN 并不是严格意义上逐样本的可逆变换,其行列式也与整个批量耦合。只有在推理阶段改用训练过程中滑动平均得到的固定统计量,BN 才成为逐样本的、严格可逆的仿射变换,其行列式才能精确计入对数似然。换言之,用训练好的模型评估密度时若忘了做这一切换,同一个输入会因同批样本不同而得到不同的密度值,结果既不可复现也不正确。
 
其中 <math>\tilde{\boldsymbol{\mu}}</math>、<math>\tilde{\boldsymbol{\sigma}}</math> 为均值与标准差——训练时按当前批次估计,推理时改用滑动平均(原因见下文)。由于 BN 对每个维度独立地缩放和平移,它本身也是一个可逆变换:其雅可比矩阵为对角阵,[[雅可比行列式]]即各维度缩放因子的乘积,可直接加入[[对数似然]]——这使 BN 可以像耦合层一样作为流中的一层。引入 BN 主要是为了稳定深层训练:它抑制了由缩放参数 <math>\exp(\mathbf{s})</math> 引起的数值爆炸,使梯度稳定传播。使用 BN 有一个容易忽略的细节:训练时均值与方差是从当前这一批样本中估计的,因此单个样本的输出会依赖同批次的其他样本——此时的 BN 并不是严格意义上逐样本的可逆变换,其行列式也与整个批量耦合。只有在推理阶段改用训练过程中滑动平均得到的固定统计量,BN 才成为逐样本的、严格可逆的仿射变换,其行列式才能精确计入对数似然。换言之,用训练好的模型评估密度时若忘了做这一切换,同一个输入会因同批样本不同而得到不同的密度值,结果既不可复现也不正确。
 
​
 
​
842

个编辑

导航菜单