爱囤黄金的朱朱:Andrej Karpathy是OpenAI的原创始团队之一,他的这94行代码,就是训练神经网络所需的全部内容(他说任何其他…https://m.toutiao.com/w/1804437970265099/?app=×tamp=1721807367&use_new_style=1&tt_from=system&utm_source=system&utm_medium=toutiao_android&utm_campaign=client_share&share_token=27d4dec1-c29d-44ec-b0c1-c9ef40775b03
转载请注明:徐自远的乱七八糟小站 » 爱囤黄金的朱朱:Andrej Karpathy是OpenAI的原创始团队之一,他的这94行代码,就是训练神经网络所需的全部内容(他说任何其他多余的代码都是为了提升效率) #程序员# 透过现象看本质,学完这94行代码,如何训练神经网络你也就理解了。以下有论文、代码和视频,收藏! —— 这 94 行代码就是训练神经网络所需的全部内容。其他一切都只是为了提高效率。 这是我早期的项目 Micrograd。它实现了一个标量值自动梯度引擎。你从叶子节点上的一些数字开始(通常是输入数据和神经网络参数),使用 + 和 * 等操作将它们混合起来,构建一个计算图,最后以单个值(损失)结束。然后你在每个节点应用链式法则反向遍历该图以计算梯度。梯度会告诉你如何调整参数以减少损失(从而改善你的网络)。 有时当事情变得太复杂时,我会回到这段代码并稍事休息。但是好吧,你也必须知道计算图应该是什么(例如 MLP -> Transformer),损失函数应该是什么(例如自回归/扩散),如何最好地使用梯度进行参数更新(例如 SGD -> AdamW)等等。但这是大多数事情的核心。 1986 年,Rumelhart、Hinton 和 Williams 发表的论文推广并使用了这种算法(反向传播)来训练神经网络:cs.toronto.edu/~hinton/absps/naturebp.pdf Github 上的 micrograd: github.com/karpathy/micrograd 以及我的(now有点旧的 YT视频,我在其中非常缓慢地构建和解释:youtu.be/VMj-3S1tku0?si=-zqaFh1W7iTDUrQG ChatGPT