神经网络从零到英雄:Micrograd + Makemore 完整学习指南(含动手步骤)
【免费下载链接】nn-zero-to-heroNeural Networks: Zero to Hero项目地址: https://gitcode.com/GitHub_Trending/nn/nn-zero-to-hero
如果你只想看视频"看懂"神经网络,却没真正亲手把它训练出来,那这个项目就是为你准备的。nn-zero-to-hero(Neural Networks: Zero to Hero)把神经网络最核心的两部分——反向传播和语言模型——拆解成一连串边讲边写的 Jupyter Notebook 教程,带你从最朴素的微积分推导一路走到类 Transformer 的语言模型,是"神经网络学习"这件事上少见的从零讲透的完整教程。
为什么这套神经网络教程值得你花时间
市面上的教程要么直接调框架 API,让你"会用但不懂",要么纯推导数学,让你"懂但不会动手"。这个项目的定位刚好卡在中间:每一步代码都从零手写,配视频逐行讲解,让你既看得见原理,也摸得着实现。
| 亮点 | 说明 |
|---|---|
| 全程从零手写 | 反向传播、MLP、BatchNorm 等核心组件全部手动实现,不靠现成轮子 |
| 课程脉络清晰 | 从标量级微梯度到字符级语言模型,再到卷积结构,难度平滑爬坡 |
| Notebook 即讲义 | 每个视频对应的 lectures 目录下的 Jupyter Notebook 可直接运行、可改可玩 |
| 覆盖现代技术点 | MLP、批归一化、卷积(WaveNet 风格结构)等 GPT 时代的核心积木都包含在内 |
一句话总结:它解决的是"我看过很多神经网络教程,但为什么还是不会调、不会改、不会修"这个问题。
上手前的准备工作:数学与工具要求
先说结论:门槛不高,但有两个前提。
数学方面,课程假设你"记得高中微积分"——会求导、知道链式法则长什么样就够,后面推导会一步步带着你走。线性代数里矩阵乘法的基本概念建议顺手复习一下。
工具方面,你只需要三样东西:
- Python:主要语言,变量、循环、类的基本语法要熟
- PyTorch:从 Makemore 系列开始使用,尤其是
torch.Tensor的使用方式 - Jupyter Notebook:课程所有代码都在这里交互式运行,建议装一个本地环境
建议先花半小时把 Python 和 Jupyter 跑通,再进入正式内容,这样第一节课就不会卡在环境问题上。
核心内容拆解:从 Micrograd 到 Makemore 你都在学什么
整个仓库就是 lectures 目录下的两条主线,按顺序读即可。
第一站:Micrograd——把反向传播彻底讲透
对应文件在 lectures/micrograd/,分上下两篇 Notebook:
- 前半篇:micrograd_lecture_first_half_roughly.ipynb
- 后半篇:micrograd_lecture_second_half_roughly.ipynb
这里的"micrograd"是一个只有几十个代码量的小库,用 Python 类实现带梯度的标量运算:每个数值背后都挂着一张"计算图",记录它是怎么一步步算出来的。前半篇带你搭起这张计算图,后半篇完成反向传播的自动求导。学完你能做什么?——你能自己从零实现一个会训练的网络,并且知道loss.backward()那一行下面到底发生了什么,这是后面所有内容的基础。
第二站:Makemore——从字符预测一路搭到类 GPT 结构
lectures/makemore/ 下共有 5 个递进式 Notebook,目标是训练一个字符级语言模型(即"给定前文,预测下一个字符"),最终能生成像人名这样的文本:
- 二元组(Bigram)模型:makemore_part1_bigrams.ipynb。用查表的方式统计"相邻两个字符"的规律,同时建立语言建模的完整框架:训练、采样、用损失函数(负对数似然)评估好坏。这是入门最友好的一课。
- MLP 语言模型:makemore_part2_mlp.ipynb。把查表换成神经网络,并系统引入机器学习的基本纪律:学习率调参、超参数、训练/验证集划分、过拟合与欠拟合的判断。
- 激活函数、梯度与 BatchNorm:makemore_part3_bn.ipynb。深入 MLP 内部,检查前向激活和反向梯度的统计分布,理解"为什么深度网络训练这么脆弱",并亲手实现 Batch Normalization(批归一化——一种把每层数值"掰回"合理区间的技巧)。
- 手写反向传播:makemore_part4_backprop.ipynb。不调框架的自动求导,手动沿"交叉熵损失 → 线性层 → tanh → BatchNorm → 线性层 → 词嵌入表"一路推梯度。做完这一课,你就拿到了作者口中"反向传播忍者"的段位。
- 卷积结构(WaveNet 风格):makemore_part5_cnn1.ipynb。把 MLP 加深、扩展成树状结构,得到一个类似 WaveNet 的卷积网络,同时熟悉
torch.nn的用法和真实深度学习开发的样子:读文档、追踪张量形状、在 Notebook 和工程代码之间切换。
这条路线学完,你具备的正是理解现代 Transformer / GPT 类语言模型所需的全部积木——再往后看大模型论文时,很多名词对你来说只是换个名字而已。
上手步骤:四步开始你的神经网络之旅
克隆仓库,拿到全部讲义和 Notebook:
git clone https://gitcode.com/GitHub_Trending/nn/nn-zero-to-hero
打开 Jupyter 进入 lectures 目录,先打开 micrograd 前半篇,把每个单元格都跑一遍;建议配合对应的视频讲座观看(README 中每节课都附了视频链接)。
动手验证:把 Notebook 里的网络结构改一改——比如给 Micrograd 加一个新运算,或把 Makemore 的隐藏层神经元数量改大/改小,观察训练损失曲线的变化,看你能不能解释这个变化。
按 1 → 2 → 3 → 4 → 5 的顺序走完 Makemore 系列,每个 Notebook 都建立在前一个之上,不要跳课。
回顾自检:学完 第 4 课 后,尝试合上视频,自己把"反向传播如何穿过一层 BatchNorm"推导一遍,能写出来才算真正过关。
避坑指南:几条来自课程本身的学习建议
- 循序渐进,别跳着看🐢。Makemore 第 5 课(GPT 相关)明确建议先看完前面的课,否则张量形状和语言建模框架会成为看不懂的拦路虎。
- 边看视频边敲代码。作者在第 4 课特别提示:这一课"不适合纯观看"——先自己做题,卡住了再暂停视频看解答,直接抄答案收获会大打折扣。
- 重视诊断习惯。第 3 课花了大量篇幅讲如何用可视化观察激活值和梯度的分布——这个"看网络健康度"的习惯,是你将来调试任何深度模型的看家本领,建议刻意练习。
- 卡住时先查文档。第 5 课刻意保留了"读文档、记张量形状"的真实开发体验,别嫌烦,这正是课程想训练的能力。
适合谁,学完能收获什么
这套教程最适合有 Python 基础、想真正搞懂神经网络内部机制的初学者和普通开发者——不是要你会调包,而是要你会拆包。
学完你将收获:
- 从零手写反向传播的能力,看懂并调试框架的自动求导
- 独立完成一个字符级语言模型的全流程:数据、训练、采样、评估
- 对深度网络训练"为什么难"有了第一手感性认识,并掌握 BatchNorm 等关键手段
结语
从 micrograd 的第一个标量类,到 makemore 里能生成名字的字符语言模型,这条路线不长,但每一步都踩在实处。现在就克隆仓库、打开第一个 Notebook,你的神经网络从零到英雄之旅从这里开始。
【免费下载链接】nn-zero-to-heroNeural Networks: Zero to Hero项目地址: https://gitcode.com/GitHub_Trending/nn/nn-zero-to-hero
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考