Applied Scientist · ML Breadth

Amazon ML:Gradient Descent 与 Backpropagation 是同一件事吗?

用一层模型解释链式求导和参数更新,核共享参数、batch归一化与计算图。

题目重点:用一层模型解释链式求导和参数更新,核共享参数、batch归一化与计算图。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 可微计算图与标量loss,示例平方回归loss1/2(yhat−y)²;SGD更新一步,非神经网络唯一训练法。
  • 数学推导为手算,不冒充题目训练代码/未知项目;linear regression可运行SGD已有q67。

解题路线

  1. backprop负责沿计算图反向用链式法则求梯度;GD/SGD/Adam用梯度更新参数。反传不等于更新,计算梯度后可累积/检查,optimizer也可读取其他方式得到的梯度。
  2. 设z=wx+b、yhat=z,loss半平方,dL/dz=z−y,dL/dw=(z−y)x,dL/db=z−y;SGD按w'=w−ηg_w、b'=b−ηg_b同时用旧参数计算的梯度。
  3. 复杂图节点有多个后续路径时adjoint要相加;共享参数在不同位置出现也累加贡献。不能每条路径覆盖grad,或先更新部分参数再用新值计算其他旧图梯度。
  4. batch mean loss梯度也取mean,sum loss改变有效scale;累积microbatch若每批大小不同需权重合同。学习率相同不代表不同归一化下更新相同。
  5. 激活/attention等复合算子按局部Jacobian-vector链式传播,通常不显式建完整Jacobian;前向中间状态或重计算服务反传。非可微argmax、detach或离图操作会截梯度。
  6. 验证用有限差分中心差( L(θ+ε)−L(θ−ε) )/(2ε),固定随机mask/数据,以float64核小模型;不在ReLU拐点或随机不同forward下期待一致。

手动走一遍

x2,y5,w1,b0,预测2、残差−3,梯度w−6/b−3,η0.1后w1.6,b0.3,新预测3.5。若先改w再算b,得到不同b,已不是同一步GD。

规模与取舍

通常反向计算与前向同量级常数倍,存中间激活或重计算取舍;数值差分P参数约2P次前向,只适合小模型验证,不能当大模型日常梯度法。

易错点与追问

容易失分的边界

  • backprop直接叫optimizer。
  • 共享参数覆盖而非累加。
  • 先改w再用新w算同一步b梯度。
  • sum/mean scale混淆。
  • detach断图。

继续深挖

  • 反向模式与前向模式AD适合什么维度?
  • 梯度累积如何按真实样本数归一化?
  • checkpointing为何增加算力省激活?
  • dropout梯度检查怎样固定随机性?
✓已复制微信号!