只要你懂 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)的更多相关文章

  1. NLP教程(3) | 神经网络与反向传播

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...

  2. 神经网络之反向传播算法(BP)公式推导(超详细)

    反向传播算法详细推导 反向传播(英语:Backpropagation,缩写为BP)是"误差反向传播"的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见 ...

  3. 关于 RNN 循环神经网络的反向传播求导

    关于 RNN 循环神经网络的反向传播求导 本文是对 RNN 循环神经网络中的每一个神经元进行反向传播求导的数学推导过程,下面还使用 PyTorch 对导数公式进行编程求证. RNN 神经网络架构 一个 ...

  4. 使用PyTorch构建神经网络以及反向传播计算

    使用PyTorch构建神经网络以及反向传播计算 前一段时间南京出现了疫情,大概原因是因为境外飞机清洁处理不恰当,导致清理人员感染.话说国外一天不消停,国内就得一直严防死守.沈阳出现了一例感染人员,我在 ...

  5. 深度学习与CV教程(4) | 神经网络与反向传播

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

  6. [AI]神经网络章2 神经网络中反向传播与梯度下降的基本概念

    反向传播和梯度下降这两个词,第一眼看上去似懂非懂,不明觉厉.这两个概念是整个神经网络中的重要组成部分,是和误差函数/损失函数的概念分不开的. 神经网络训练的最基本的思想就是:先“蒙”一个结果,我们叫预 ...

  7. 神经网络中误差反向传播(back propagation)算法的工作原理

    注意:版权所有,转载需注明出处. 神经网络,从大学时候就知道,后面上课的时候老师也讲过,但是感觉从来没有真正掌握,总是似是而非,比较模糊,好像懂,其实并不懂. 在开始推导之前,需要先做一些准备工作,推 ...

  8. 卷积神经网络(CNN)反向传播算法

    在卷积神经网络(CNN)前向传播算法中,我们对CNN的前向传播算法做了总结,基于CNN前向传播算法的基础,我们下面就对CNN的反向传播算法做一个总结.在阅读本文前,建议先研究DNN的反向传播算法:深度 ...

  9. (3)Deep Learning之神经网络和反向传播算法

    往期回顾 在上一篇文章中,我们已经掌握了机器学习的基本套路,对模型.目标函数.优化算法这些概念有了一定程度的理解,而且已经会训练单个的感知器或者线性单元了.在这篇文章中,我们将把这些单独的单元按照一定 ...

随机推荐

  1. HMS Core音频编辑服务3D音频技术,助力打造沉浸式听觉盛宴

    2022年6月28日,HDD·HMS Core.Sparkle影音娱乐沙龙在线上与开发者们见面.HMS Core音频编辑服务(Audio Editor Kit)专家为大家详细分享了基于分离的3D音乐创 ...

  2. RocketMQ 集群的搭建部署 以及rocketmq-console-ng仪表台的安装部署

    在 RocketMQ 主要的组件如下. NameServerNameServer 集群,Topic 的路由注册中心,为客户端根据 Topic 提供路由服务,从而引导客户端向 Broker 发送消息.N ...

  3. Day03 HTML标记

    文本标题 <h1>一级标题</h1> <h2>二级标题</h2> <h3>三级标题</h3> <h4>四级标题< ...

  4. 『现学现忘』Git后悔药 — 28、版本回退git reset --soft命令说明

    git reset --soft commit-id命令:回退到指定版本.(soft:柔软的) 该命令仅仅修改分支中的HEAD指针的位置,不会改变工作区与暂存区中的文件的版本. 实现上是只做了一件事情 ...

  5. lerna学习笔记

    lerna简介 Lerna 是一个优化基于Git+npm的多package项目的项目管理工具,lerna是架构优化的产物,项目复杂度提升后,架构优化的主要目标是以提高ROI为核心的 lerna的主要功 ...

  6. C++学习日记:关于我决定开始学习C++的那些事

    苦恼于Python运行时感人的速度,我决定学习C++. 为了激励我自己好好地学习这门未曾谋面的编程语言,我决定在此开设专栏:C++学习日记.希望在读者们的监督下,我可以早日掌握这门语言.当然,如果那位 ...

  7. day09 集合排序_Collection接口与Collections工具类

    集合的排序 java.util.Collections类 Collections是集合的工具类,里面定义了很多静态方法用于操作集合. Collections.sort(List list)方法 可以对 ...

  8. Flink Window&Time 原理

    Flink 中可以使用一套 API 完成对有界数据集以及无界数据的统一处理,而无界数据集的处理一般会伴随着对某些固定时间间隔的数据聚合处理.比如:每五分钟统计一次系统活跃用户.每十秒更新热搜榜单等等 ...

  9. typescript中的--strictFunctionTypes选项

    什么是协变和逆变 原来,在泛型参数上添加了in关键字作为泛型修饰符的话,那么那个泛型参数就只能用作方法的输入参数,或者只写属性的参数,不能作为方法返回值等,总之就是只能是"入",不 ...

  10. python自带gui插件tkinter使用小结

    1.tkinter简介 Tkinter(即 tk interface,简称"Tk")本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python 官方推荐的 GU ...