nn-zero-to-hero - 一门从基础开始的神经网络课程。该课程是一系列 YouTube 视频,我们在其中一起编码和训练神经网络。

Created at: 2022-09-09 05:23:25
Language: Jupyter Notebook
License: MIT

神经网络:从零到英雄

一门关于神经网络的课程,从基础开始。该课程是一系列YouTube视频,我们一起编码和训练神经网络。我们在视频中构建的Jupyter笔记本随后被捕获在讲座目录中。每个讲座的视频描述中还包含一组练习。(这可能会发展成更受人尊敬的东西)。


第1讲:神经网络和反向传播的简介:构建micrograd

神经网络的反向传播和训练。假设Python的基本知识和高中时微积分的模糊记忆。


第2讲:语言建模的简介:构建化妆

我们实现了一个双字母字符级语言模型,我们将在后续视频中将其进一步复杂化为现代 Transformer 语言模型,如 GPT。在本视频中,重点是(1)介绍 PyTorch 。张量及其微妙之处和在有效评估神经网络中的用途,以及 (2) 语言建模的整体框架,包括模型训练、采样和损失评估(例如分类的负对数可能性)。


第3讲:建筑制造第2部分:MLP

我们实现了多层感知器(MLP)字符级语言模型。在本视频中,我们还介绍了机器学习的许多基础知识(例如模型训练、学习率调优、超参数、评估、训练/开发/测试拆分、欠拟合/过拟合等)。


第4讲:Building makemore第3部分:激活和梯度,BatchNorm

我们深入研究了多层 MLP 的一些内部结构,并仔细研究了正向传递激活、向后传递梯度的统计数据以及它们缩放不当时的一些陷阱。我们还介绍了你希望用来了解深度网络运行状况的典型诊断工具和可视化。我们了解了为什么训练深度神经网络可能很脆弱,并介绍了第一个使训练变得如此容易的现代创新:批量规范化。残差连接和 Adam 优化器仍然是以后视频中值得注意的待办事项。


第5讲:建造假象(第四部分):成为反向道具忍者

我们从上一个视频中获取 2 层 MLP(使用 BatchNorm),并手动反向传播,而无需使用 PyTorch autograd 的 loss.backward()。也就是说,我们通过交叉熵损失、第二线性层、tanh、批处理范数、第一线性层和嵌入表进行反向传播。在此过程中,我们可以直观地了解梯度如何在计算图中和高效张量级别上向后流动,而不仅仅是像micrograd那样的单个标量。这有助于围绕如何优化神经网络建立能力和直觉,并使你能够更自信地创新和调试现代神经网络。

我建议你自己完成练习,但要协同工作,每当你遇到困难时,请取消暂停视频,看看我给出答案。此视频并非旨在简单地观看。该练习作为Google Colab在这里。祝你好运:)


第6讲:构建模型第5部分:构建波网

我们从以前的视频中获取了 2 层 MLP,并使用树状结构使其更深入,得出类似于 DeepMind 的 WaveNet (2016) 的卷积神经网络架构。在WaveNet论文中,使用因果扩张卷积(尚未涵盖)更有效地实现相同的分层架构。在此过程中,我们对torch.nn有了更好的了解,它是什么,它是如何工作的,以及典型的深度学习开发过程是什么样的(大量阅读文档,跟踪多维张量形状,在jupyter笔记本和存储库代码之间移动,......


第 7 讲:让我们构建 GPT:从头开始,用代码,拼写出来。

我们构建了一个生成预训练转换器(GPT),遵循论文“注意力是你所需要的一切”和OpenAI的GPT-2 / GPT-3。我们谈论与ChatGPT的连接,它已经风靡全球。我们看 GitHub Copilot,本身就是一个 GPT,帮助我们编写一个 GPT(元:D!我建议人们观看早期的makemore视频,以熟悉自回归语言建模框架以及张量和PyTorch nn的基础知识,我们在此视频中认为这是理所当然的。


持续。。。

许可证

MIT