Andrej Karpathy,前特斯拉 AI 高级总监、曾设计并担任斯坦福深度学习课程 CS231n 讲师、OpenAI 创始成员和研究科学家。在 7 月离职特斯拉后,Andrej 在家录制了一个详解反向传播的课程,自信表示“这是 8 年来领域内对神经网络和反向传播的最佳讲解”,并在推特打赌“看不懂就吃鞋”。
虽然很想看 Andrej 直播吃鞋,但实话实说,作为小白的我,好像真的看懂了。
课程视频
(视频字幕由矩池云翻译制作)
课程介绍
课程时长 2 小时 25 分钟,基于micrograd详细介绍并演示了神经网络的搭建和反向传播的过程。Micrograd是 Andrej 于 2020 年编写并开源的微型 autograd(自动梯度)引擎。其中用100 行代码实现了针对动态构建的 DAG 的反向传播算法,并用50行代码实现了类 PyTorch API 的库。目前,micrograd 项目的 GitHub Star 量已达 2.6k。
基于 micrograd,Andrej 介绍了只有一个输入的简单函数的求导( y = 3x² - 4x + 5 这个函数中,求 y 对 x 的导数)和具有多个输入的简单函数的求导(已知3个输入 a、b、c,并且d = a * b + c,求 d 分别对 a、b、c 的导数)、启动 micrograd 的核心 Value 对象及其可视化的方法,并举了两个手动反向传播的例子。接下来 Andrej 系统地介绍了:
为单个运算实现反向传播;
为整个表达式图实现反向函数;
修复反向传播中一个节点多次使用出现的 bug;
使用更多运算替换 tanh 激活函数;
在 PyTorch 中实现上述运算并与 micrograd 进行比较;
用 micrograd 构建一个神经网络库(MLP);
创建一个微型数据集,编写损失函数;
收集神经网络的所有参数;
手动进行梯度下降优化,训练网络。
最后 Andrej 总结了反向传播与现代神经网络的关系。此外,Andrej 还探究了 PyTorch 中 tanh 激活函数的反向传播机制
课程主讲
Andrej Karpathy出生于斯洛伐克,15岁随家人移民加拿大。
来到加拿大的 Andrej 还不会说英语,但数学成绩非常优秀,完成高中学业后进入多伦多大学计算机科学与物理系并辅修数学,在那里他遇到了 Geoffrey Hinton 教授,也是在 Geoff 的课上,他接触到了深度学习算法。
2009 - 2011 年,Andrej 硕士就读于加拿大不列颠哥伦比亚大学,其导师为计算机科学系教授 Michiel van de Panne,主要研究物理模拟中用于敏捷机器人的机器学习。