Adam优化器是否与SGD一样在MLP各层更新权重?
Adam优化器权重更新的常见疑问解答
1. Adam和SGD的权重更新范围是否一致?
完全一致——不管是Adam还是SGD,都会在反向传播过程中对神经网络的每一层权重进行更新。两者的核心区别是权重更新的计算方式:SGD用当前梯度直接调整权重,而Adam额外引入了一阶动量(梯度的指数移动平均)和二阶动量(梯度平方的指数移动平均)来自适应调整学习率,但更新的覆盖范围是全网络所有层的参数,没有区别。
2. 关于MLP权重更新次数的误解
你提到的“输出层到隐藏层2有2次更新”这种说法是错误的,正确的理解是:每一轮迭代(或每处理一个batch的数据)中,每一层的所有权重参数都会被更新一次。
以你的MLP为例:
- 输出层到隐藏层2的权重是一个(输出神经元数×隐藏层2神经元数)的矩阵,矩阵里的每一个元素(权重参数)都会在一次更新中得到调整;
- 隐藏层2到隐藏层1、隐藏层1到输入层的权重矩阵,同理,所有参数都会被更新一次。
不存在“几次更新”的说法,是每一层的全部参数都参与一次更新。
3. 为什么有些示例只展示输出层的权重更新?
那些示例一般是简化演示用的:可能是为了聚焦讲解反向传播的核心逻辑,只截取了输出层的更新代码;或者是教学案例里刻意简化了流程,只展示最后一层的计算。但实际训练中,Adam(包括所有标准优化器)必须更新所有层的权重——如果只更新输出层参数,前面的隐藏层参数固定不动,模型无法学习到输入到输出之间的复杂特征映射,根本达不到训练目的。
内容的提问来源于stack exchange,提问作者andryan86
相关产品推荐
相关产品推荐

