Neural Networks: Zero to Hero · 课程汉化总览

一门从最基础处讲起的神经网络课程。课程由一系列 YouTube 视频组成,Andrej Karpathy 带着你一起写代码、一起训练神经网络;视频中构建的 Jupyter notebooks 都收录在官方仓库的 lectures 目录里。每一讲的视频描述中还附有配套练习。(用他自己的话说:这个仓库将来也许会成长为更像样的东西。)

原作者 Andrej KarpathyMIT License极客教育汉化
授权声明:本页及配套汉化内容译自 Andrej Karpathy 的开源课程仓库 nn-zero-to-hero(MIT License,Copyright © 2022 Andrej Karpathy)。依 MIT 许可条款,极客教育(jikejiao.com)对其 README 与 notebooks 进行翻译与改编,并完整保留原版权声明与许可文本(见页面底部 LICENSE 全文)。课程视频本身不在 MIT 许可范围内,请前往原 YouTube 频道观看。译者:极客教育。

课程列表

以下内容译自官方仓库 README。第 1 讲已完成汉化(导学页 + notebooks),其余讲次陆续汉化中。

第 1 讲:手把手讲透神经网络与反向传播——构建 micrograd 已汉化

反向传播 (backpropagation) 与神经网络的训练。只要求会一点 Python 基础,以及对高中微积分还有一点模糊的印象。

第 2 讲:手把手讲透语言建模——构建 makemore 汉化中

我们实现一个二元 (bigram) 字符级语言模型,并将在后续视频中把它一步步复杂化,最终变成一个现代 Transformer 语言模型(类似 GPT)。本讲的重点有两个:(1)介绍 torch.Tensor 的各种细节,以及如何用它高效地计算神经网络;(2)语言建模的整体框架,包括模型训练、采样,以及损失的评估(例如分类任务中的负对数似然)。

第 3 讲:构建 makemore 之二——MLP 汉化中

我们实现一个多层感知机 (MLP) 字符级语言模型。本讲同时引入许多机器学习的基本功:模型训练、学习率调节、超参数、模型评估、训练/验证/测试集划分、欠拟合与过拟合等等。

第 4 讲:构建 makemore 之三——激活值、梯度与 BatchNorm 汉化中

我们深入多层 MLP 的内部,仔细审视前向传播的激活值和反向传播的梯度的统计特性,以及它们的尺度不当时会踩的坑。我们还会介绍诊断深度网络「健康状况」时常用的工具与可视化手段。你会明白为什么训练深层神经网络曾经如此脆弱易碎,并认识让这件事变容易的第一个现代创新:批归一化 (Batch Normalization)。残差连接 (residual connections) 与 Adam 优化器留待后续视频。

第 5 讲:构建 makemore 之四——成为反向传播忍者 汉化中

我们拿上一讲的两层 MLP(带 BatchNorm),不用 PyTorch autograd 的 loss.backward(),全程手动反向传播:穿过交叉熵损失、第二个线性层、tanh、BatchNorm、第一个线性层,一直传到嵌入表。这一路走下来,你会在高效的张量 (Tensor) 层面——而不只是 micrograd 那样的单个标量层面——直觉地理解梯度是如何沿计算图向后流动的。这会实打实地提升你对神经网络优化过程的手感,让你日后调试和改进现代神经网络时更有底气。

Karpathy 建议你亲手完成配套练习,与视频同步推进:卡住的时候再播放视频,看他公布答案。这个视频不太适合「光看不练」。练习在这里:Google Colab。祝你好运 :)

第 6 讲:构建 makemore 之五——构建 WaveNet 汉化中

我们把上一讲的两层 MLP 用树状结构加深,得到一个卷积神经网络架构,与 DeepMind 的 WaveNet(2016)类似。WaveNet 论文中同样的层级架构是用因果空洞卷积 (causal dilated convolutions) 更高效地实现的(本讲暂未涉及)。这一路上我们会更深入地理解 torch.nn:它是什么、底层如何运作,以及典型的深度学习开发流程长什么样——大量查文档、随时盯着多维张量的形状、在 Jupyter notebook 和仓库代码之间来回切换……

第 7 讲:从零构建 GPT——写代码,讲透每一行 汉化中

我们跟随论文《Attention is All You Need》以及 OpenAI 的 GPT-2 / GPT-3,构建一个生成式预训练 Transformer(GPT),并聊聊它与风靡全球的 ChatGPT 的关系。我们还会看着 GitHub Copilot——它本身就是一个 GPT——帮我们写 GPT(禁止套娃 :D)。Karpathy 建议先看完前面的 makemore 系列,熟悉自回归语言建模框架以及张量和 PyTorch nn 的基础,本讲会默认你已掌握这些。

第 8 讲:构建 GPT 分词器(Tokenizer)汉化中

分词器 (Tokenizer) 是大语言模型 (LLM) 中必不可少又无处不在的组件,负责在字符串与 token(文本块)之间互相转换。分词器是 LLM 流水线中完全独立的一个阶段:它有自己的训练集、自己的训练算法(字节对编码,Byte Pair Encoding),训练完成后实现两个基本函数:encode() 把字符串变成 token,decode() 把 token 还原成字符串。本讲我们从零构建 OpenAI GPT 系列所用的分词器。在这个过程中你会发现,LLM 的许多怪异行为和问题,追根溯源其实都出在分词 (tokenization) 上。我们会过一遍这些问题,讨论为什么锅在分词,以及为什么最理想的情况是有人能把这个阶段彻底干掉。

第 9 讲:复现 GPT-2(124M)汉化中

译者注 官方仓库 README 到第 8 讲为止(并注明「Ongoing…」持续更新中);视频系列实际还有这一讲:用约 4 小时从零复现 GPT-2 124M 模型的完整训练。配套代码在 build-nanogpt 仓库。

许可与版权(LICENSE)

原仓库 README 的 License 一节注明:MIT。以下为原仓库 LICENSE 文件英文原文全文;依 MIT 条款,该版权声明与许可声明须随本汉化版一并保留。

展开查看 MIT License 英文原文全文
MIT License

Copyright (c) 2022 Andrej Karpathy

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.