Andrej Karpathy | 详解神经网络和反向传播
只要你懂 Python,大概记得高中学过的求导知识,看完这个视频你还不理解反向传播和神经网络核心要点的话,那我就吃鞋:D
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,主要研究物理模拟中用于敏捷机器人的机器学习。
CS231n 初露锋芒
2011 年,Andrej 进入斯坦福大学攻读博士学位,师从李飞飞主攻深度学习和图像识别。在斯坦福,他和导师李飞飞一起研究图像识别与深度学习算法,主导设计了斯坦福第一门深度学习课程《CS231n:用于视觉识别的卷积神经网络》,并和李飞飞共同担任主讲人。很快,这门课成为斯坦福的网红课程,注册学生从开课时的150人增加到两年后的750人。
在读博期间,Andrej 发表的多篇论文都是 CV 领域的高引文章,还在 Google、DeepMind 两家公司实习。
他会是全世界最顶级的AI领袖
2016年 Andrej 成为 OpenAI 创始成员,也是在这里,他的天赋被马斯克看中,马斯克不惜得罪 OpenAI 其他成员把 Andrej 从 OpenAI 带到了特斯拉。五年里,Andrej 一手促成了 Autopilot 的开发。随着特斯拉从最开始的自动驾驶慢慢扩展到更广泛的人工智能领域,他也被提为特斯拉的AI高级总监,直接向马斯克汇报工作。
据说马斯克曾说过,很多人把 Andrej 当做优秀的 AI 视觉科学家,但我知道,他会是全世界最顶级的 AI 领袖。
而这位 AI 领袖现在才36岁...