如何用反向传播中的梯度下降法近似求解多元函数最小值
梯度下降结合反向传播求解函数最小值实操
前置已知条件
- 目标函数:
y = 2*x1 + x2² + 4 - 参数初始值:x₁ = 0,x₂ = 0
- 步长(学习率):0.5
- 核心规则:梯度下降的参数更新逻辑为
新参数值 = 旧参数值 - 步长 * 目标函数对该参数的偏导数,反向传播的作用就是通过链式法则高效计算各参数的偏导数,不需要手动推导复杂嵌套函数的梯度。
第一步:计算各参数的偏导数(反向传播输出结果)
对目标函数分别求两个参数的偏导:
- 对x₁的偏导:
∂y/∂x₁ = 2 - 对x₂的偏导:
∂y/∂x₂ = 2*x2
第二步:迭代更新参数
第一轮迭代(初始值计算)
- 代入初始值得到当前梯度:∂y/∂x₁=2,∂y/∂x₂=2*0=0
- 按规则更新参数:
- x₁ = 0 - 0.5 * 2 = -1
- x₂ = 0 - 0.5 * 0 = 0
- 当前函数值:y = 2*(-1) + 0² + 4 = 2
后续迭代逻辑
下一轮迭代会用更新后的x₁=-1、x₂=0重新计算梯度,此时x₂的偏导还是0,x₁的偏导恒为2,因此x₂会一直保持为0,x₁会每轮减1,函数值每轮减2。
注意:该示例函数不存在全局最小值,只要x₁持续向负方向取值,y值会无限减小。如果是实际深度学习场景中的损失函数,通常会加入L1/L2正则项约束参数范围,避免参数无限制更新。
反向传播的落地逻辑
如果是深度神经网络的多层嵌套损失函数,不需要手动推导每个参数的偏导,反向传播会从输出层开始逐层计算梯度,将结果传递给梯度下降模块完成参数更新,本案例是简化后的单层级计算,逻辑和神经网络的训练流程完全一致。
内容的提问来源于stack exchange,提问作者Phoenix
相关产品推荐
相关产品推荐

