教程:驯服不可微操作——梯度的“代理”艺术
第一部分:核心思想——计算图的“双重人格”
在标准的深度学习中,前向传播和反向传播是“镜像”关系:反向传播严格地沿着前向传播的路径反向计算导数。但为了处理离散操作,我们打破这种对称性,赋予计算图一种“双重人格”:
- 前向人格(执行者):它忠实地执行我们定义的任何操作,无论是否离散。如果是
argmax
,它就输出索引;如果是量化,它就输出离散的整数。它的目标是计算出模型的真实输出。 - 反向人格(引路人):它的唯一任务是为梯度找到一条从损失函数回到参数的、平滑的、有意义的路径。它不关心前向传播的“硬”操作,而是寻找一个功能相似、但完全可微的“代理操作”(Proxy/Surrogate),并假装梯度是从这个代理操作回传的。
这个核心思想让我们鱼与熊掌兼得:既能在模型中执行必要的离散决策,又能利用基于梯度的优化器来有效训练模型。