Andrej Karpathy | 详解神经网络和反向传播(基于 micrograd)
只要你懂 Python,大概记得高中学过的求导知识,看完这个视频你还不理解反向传播和神经网络核心要点的话,那我就吃鞋:D
Andrej Karpathy,前特斯拉 AI 高级总监、曾设计并担任斯坦福深度学习课程 CS231n 讲师、OpenAI 创始成员和研究科学家。在 7 月离职特斯拉后,Andrej 在家录制了一个详解反向传播的课程,自信表示“这是 8 年来领域内对神经网络和反向传播的最佳讲解”,并在推特打赌“看不懂就吃鞋”。

虽然很想看 Andrej 直播吃鞋,但实话实说,作为小白的我,好像真的看懂了。
课程视频
【中英字幕】Andrej Karpathy | 详解神经网络和反向传播(基于micrograd)
字幕由矩池云翻译制作
课程介绍
课程时长 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 表示,“在斯洛伐克的时候并不开心,一直想要离开,当父母表示要移民加拿大的时候,我立马同意了,但家里其他人很犹豫,我就去说服每个人”[3]。
来到加拿大的 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 是由马斯克等人创立的非盈利人工智能研究组织,也是在这里,他的天赋被马斯克看中,马斯克不惜得罪 OpenAI 其他成员把 Andrej 从 OpenAI 带到了特斯拉。五年里,Andrej 一手促成了 Autopilot 的开发。随着特斯拉从最开始的自动驾驶慢慢扩展到更广泛的人工智能领域,他也被提为特斯拉的AI高级总监,直接向马斯克汇报工作。
据说马斯克曾说过,很多人把 Andrej 当做优秀的 AI 视觉科学家,但我知道,他会是全世界最顶级的 AI 领袖。
而这位 AI 领袖现在才36岁...
Andrej Karpathy | 详解神经网络和反向传播(基于 micrograd)的更多相关文章
- NLP教程(3) | 神经网络与反向传播
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...
- 神经网络之反向传播算法(BP)公式推导(超详细)
反向传播算法详细推导 反向传播(英语:Backpropagation,缩写为BP)是"误差反向传播"的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见 ...
- 关于 RNN 循环神经网络的反向传播求导
关于 RNN 循环神经网络的反向传播求导 本文是对 RNN 循环神经网络中的每一个神经元进行反向传播求导的数学推导过程,下面还使用 PyTorch 对导数公式进行编程求证. RNN 神经网络架构 一个 ...
- 使用PyTorch构建神经网络以及反向传播计算
使用PyTorch构建神经网络以及反向传播计算 前一段时间南京出现了疫情,大概原因是因为境外飞机清洁处理不恰当,导致清理人员感染.话说国外一天不消停,国内就得一直严防死守.沈阳出现了一例感染人员,我在 ...
- 深度学习与CV教程(4) | 神经网络与反向传播
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- [AI]神经网络章2 神经网络中反向传播与梯度下降的基本概念
反向传播和梯度下降这两个词,第一眼看上去似懂非懂,不明觉厉.这两个概念是整个神经网络中的重要组成部分,是和误差函数/损失函数的概念分不开的. 神经网络训练的最基本的思想就是:先“蒙”一个结果,我们叫预 ...
- 神经网络中误差反向传播(back propagation)算法的工作原理
注意:版权所有,转载需注明出处. 神经网络,从大学时候就知道,后面上课的时候老师也讲过,但是感觉从来没有真正掌握,总是似是而非,比较模糊,好像懂,其实并不懂. 在开始推导之前,需要先做一些准备工作,推 ...
- 卷积神经网络(CNN)反向传播算法
在卷积神经网络(CNN)前向传播算法中,我们对CNN的前向传播算法做了总结,基于CNN前向传播算法的基础,我们下面就对CNN的反向传播算法做一个总结.在阅读本文前,建议先研究DNN的反向传播算法:深度 ...
- (3)Deep Learning之神经网络和反向传播算法
往期回顾 在上一篇文章中,我们已经掌握了机器学习的基本套路,对模型.目标函数.优化算法这些概念有了一定程度的理解,而且已经会训练单个的感知器或者线性单元了.在这篇文章中,我们将把这些单独的单元按照一定 ...
随机推荐
- 不存在的!python说不给数据的浏览器是不存在的!
有时候我们些代码是总发此疑惑? 为什么别人采集 xx 网站的时候能成功,而我却总是不返回给数据出现这种原因时往往是我们没有给够伪装, 被识别了出来~ 就像人,你出门肯定是要穿衣服的对不,如果你不穿! ...
- java运算符(超详细!!!)
java运算符 一.算数运算符 符号 含义 + 加法 - 减法 * 乘法 / 除法 % 余数 ++ 自增 -- 自减 这些是常用的算数运算符,在java基础阶段,掌握这些就可 加减乘除运算符 代码实例 ...
- Android 功耗测试
<head> <title>Evernote Export</title> <basefont face="微软雅黑" size=&quo ...
- 记一次 .NET 某电厂Web系统 内存泄漏分析
一:背景 1. 讲故事 前段时间有位朋友找到我,说他的程序内存占用比较大,寻求如何解决,截图就不发了,分析下来我感觉除了程序本身的问题之外,.NET5 在内存管理方面做的也不够好,所以有必要给大家分享 ...
- ApiDay002_02 Object中的包装类
1.Object:对象/东西 是所有类的鼻祖,所有类都直接或间接继承了Object, 万物皆对象,为了多态 Objec中有几个经常被派生类重写的方法:toString()和equals(); 调用to ...
- FPS游戏逆向-方框透视(三角函数)
本套课程主要学习FPS类游戏安全 由于FPS类游戏本身的特性问题,可能产生一些通用的游戏安全问题 在通过逆向与正向对FPS类游戏分析之后,找到其可能出现的不安全点 才能更好的保护游戏不被外部力量侵犯 ...
- 从零开始Blazor Server(4)--登录系统
说明 上一篇文章中我们添加了Cookie授权,可以跳转到登录页了.但是并没有完成登录,今天我们来完成它. 我们添加Cookie授权的时候也说了,这套跟MVC一模一样,所以我们登录也是跟MVC一模一样. ...
- 【web自动化测试】Playwright快速入门,5分钟上手
我喜欢Playwright! 这是微软开源的一款非常强大的自动化工具,再过几年,他很有可能取代Selenium在浏览器自动化的通知地位.使用过一段时间,我没有找到很好的中文资料可以参考,导致很多问题无 ...
- 高考集训讲课(To 高一)
高考集训讲课(To 高一) 主要是怕下午讲着讲着把自己讲懵了,有一定的迷糊概率 经过机房的讨论,一致认为插头\(DP\)实用性不大,所以这次不讲了,先把重要的讲一讲. 顺便吐槽一下,凭什么另外几个人都 ...
- mybatis 04: mybatis对象分析 + 测试代码简化 + 配置优化
MyBatis对象分析 测试代码示例 package com.example.test; import com.example.pojo.Student; import org.apache.ibat ...