What loss.backward() actually does
6 days ago
- #automatic-differentiation
- #backpropagation
- #neural-networks
- 神经网络训练涉及通过梯度下降最小化损失,这需要每个参数的导数。
- 反向模式自动微分(反向传播)可高效计算相对于单个输出的多个输入的梯度。
- 每个操作的局部导数和链式法则允许通过沿计算图路径的乘法进行梯度计算。
- 反向传播利用计算图的拓扑排序确保梯度以逆序正确传播。
- Micrograd 中的 Value 结构存储数据、梯度以及指向操作数的指针,支持在前向传播期间自动构建计算图。
- 反向传播将输出梯度初始化为 1,并按节点应用导数规则将梯度累积到操作数中。
- C 语言中的引用计数管理计算图的内存,在不影响反向传播逻辑的情况下防止内存泄漏。
- 训练过程包括梯度归零、反向传播、通过梯度下降更新参数,并使用新数据重复此过程。