返回 动态 学习 CMS 文章

Karpathy:94行代码训练神经网络,其余皆为效率

理解神经网络训练的本质:94行代码实现自动求导引擎,反向传播是核心。

神经网络反向传播自动求导Micrograd
成长分 / 100 75 综合收获、行动、留存与影响

Karpathy:94行代码训练神经网络,其余皆为效率
为什么值得读揭示神经网络训练的最小核心,帮助初学者摆脱复杂框架的干扰。

提供历史论文和资源链接,便于深入理解反向传播的起源。

关键洞察
  1. 94行代码即可实现标量值自动求导引擎,构建计算图并反向传播计算梯度。
  2. 神经网络训练的核心是计算图、损失函数和梯度更新,其余皆为效率优化。
  3. 反向传播算法由 Rumelhart、Hinton、Williams 在1986年推广。
转成行动

深入阅读

正文与原文对照

原文保真覆盖:全文原文字符:1437

这94行代码就是训练一个神经网络所需的全部。其他一切都只是为了效率。

这是我早先的项目Micrograd。它实现了一个标量值的自动求导引擎。你从叶子节点的一些数字开始(通常是输入数据和神经网络参数),通过像+和*这样的操作构建计算图,将它们混合,图在最后以一个单一值结束(损失)。然后你反向遍历图,在每个节点应用链式法则来计算梯度。梯度告诉你如何调整参数以减少损失(从而改进你的网络)。

有时候当事情变得太复杂时,我会回到这段代码,稍微喘口气。但是好吧好吧,你确实也需要知道计算图应该是什么(例如MLP -> Transformer),损失函数应该是什么(例如自回归/扩散),如何最好地利用梯度进行参数更新(例如SGD -> AdamW)等等。但这是大部分事情的核心。

1986年Rumelhart、Hinton、Williams的论文推广并使用了这种算法(反向传播)来训练神经网络:

https://t.co/f52IcDNitR

micrograd在Github上:https://t.co/GaTd16jRnB

以及我(现在有点旧的)YouTube视频,我在其中非常缓慢地构建和解释:

https://t.co/EPGG6kd5Yz