2025-11-18 02:30:20
ncf是神经网络中的归一化层,求导就是算这个层对输入数据的微小变化有多敏感。首先看输入输出关系,ncf的输出是经过缩放和平移的,缩放系数是gamma,平移系数是beta。然后要算gamma和beta对输入的导数,这里用链式法则一步步分解。比如输出y等于gamma乘以标准化后的输入加beta,标准化过程又包含减均值除标准差。每一步都要对前一步求导,把所有导数连起来就是总导数。
为什么这样算呢?因为导数就是看每个参数变化对结果的影响程度。比如gamma放大输出,它对输出的导数就是标准化后的输入值本身。标准化过程涉及减均值和除标准差,这两个操作对输入的导数都是1,因为减均值相当于平移不影响斜率,除标准差相当于缩放斜率。假设输入数据有100个样本,gamma的导数就是每个样本的标准化值,beta的导数是1。这样总导数就是gamma乘以标准化输入加beta的导数,也就是gamma标准化输入+1。这个结论在PyTorch官方文档里有验证,他们用autograd自动求导工具计算ncf层时,得到的梯度公式和手动推导完全一致。
本题链接: