标签:数值计算
-
Adam 的 ε 与数值稳定性:一个小常数的大作用
ε=1e-8 看起来是防除零的保险丝,实际它决定了 Adam 在梯度趋零时的渐近行为、给有效学习率设了上限,还悄悄影响稀疏特征的更新节奏。这篇推导 ε 出现的三个场景,量化它该取多大,以及什么时候该主动调大。
-
混合精度训练:fp16 的动态损失缩放原理与实现
fp16 让矩阵乘快一倍、显存省一半,但梯度在 fp16 的表示范围里根本活不下去。动态损失缩放把 loss 乘上一个大数让梯度整体抬回 fp16 的安全区,翻倍增、减半减、溢出跳步。这篇推导缩放因子的数学依据,拆解 2000 步倍增规则背后的账本,并对比 bf16 为什么可以扔掉这套机制。
-
bf16 与 fp16 的工程取舍:动态范围与精度的交换
fp16 和 bf16 同为 16 bit,却把有限的位分配给了不同的字段:fp16 把 10 位给尾数换精度,bf16 把 8 位给指数换动态范围。这篇从位布局推两者的数值边界,讲清为什么 bf16 可以扔掉 loss scaling、为什么累加仍要回 fp32,以及硬件条件如何决定选型。
-
梯度裁剪的机制与阈值选择:全局范数裁剪的几何意义
全局范数裁剪把超限梯度整体缩放回球内,保留方向只改幅度。这篇从信赖域几何推导它何时是无害投影、何时在扭曲方向,给出阈值选 1.0 的依据,以及它和 Adam 自适应步长的隐式耦合。
-
Jolt 的确定性模拟与回放:帧同步游戏能用 Jolt 吗
帧同步要求同一输入序列产生完全一致的模拟结果,而浮点加法不满足结合律、多线程求解器的迭代顺序不固定,两头都在破坏确定性。这篇讲清 Jolt 在 Godot 里做到确定性回放需要什么条件,以及哪些条件是引擎给不了的。