第3课
- 介绍与调查
- “第0课” 如何使用 fast.ai
- 第0课视频在哪里?
- 这与《元学习》这本书和 fastai 课程有什么关系?
- 如何学习 fastai 课程?
- 边看边做笔记
- 运行 Jupyter Notebook 并实验
- 根据代码重现笔记
- 使用不同的数据集重复
- 如何避免自学?
- 实体和虚拟学习小组
- 在论坛上与人一起学习
- 社交互动学习比自学更好
- 得票最高的学生作品
- 有很多有趣的项目可以查看
- Jeremy 的宠物品种检测器
- Jeremy 的宠物仓库
- 你应该用这个 App 示例做什么?
- Paperspace:你在云端的深度学习工作站!
- Jeremy 高度评价它吗?为什么?
- JupyterLab:对初学者非常友好
- 为什么 JupyterLab 非常适合初学者利用?
- 构建更好的宠物检测器
- 训练后,我们应该思考如何改进它
- 所有(图像)模型的比较
- 有人比较了大多数图像模型并分享了结果吗?
- 比较用的 Jupyter Notebook 在哪里?
- 用于比较的 3 个标准是什么?
- 尝试新模型
- 如何选择并尝试得分高的模型
- train.ipynb 文件在哪里?
- 如何在 TIMM 上尝试模型?
- 如何通过损失函数比较它们?
- 为什么这个模型实际上令人印象深刻?
- 模型名称能告诉我们什么?
- 为什么 Jeremy 只训练 3 个 epoch?18:58
- 获取模型的类别
- 如何从模型获取标签或类别信息?
- 剩下的内容我们在上一课已经学过了。
- 模型里有什么
- 模型中存储了哪两样东西?
- 模型架构是什么样的?
- 模型的参数
- 如何放大查看模型的某一层?
- 如何查看某一层的参数?
- 某一层的参数是什么样的?
- 探索性问题
- 权重/数字是什么?
- 它们如何找出重要的东西?
- 关于神经网络工作原理的 Jupyter Notebook 在哪里?
- 创建一个通用的二次函数
- 如何通过改变 3 个参数创建一个通用的函数来输出任何特定的二次函数?
- 如何通过改变 1 个参数从特定的二次函数生成结果?
- 为什么我们创建这样一个具有多个未知参数的通用(二次)函数,而不是直接写一个带有特定系数的特定二次函数?
- 用灵巧的双手和眼睛拟合一个函数
- 拟合函数是什么意思?(根据数据集搜索更好的参数)
- 如何创建一个随机数据集?
- 如何使用 Jupyter 控件手动改变 3 个参数,将通用二次函数拟合到数据集?
- 这种手动/可视化方法的局限性是什么?
- 这个 Jupyter Notebook 在哪里?
- 损失:在眼睛不够灵巧的情况下更好地拟合函数
- 为什么我们需要损失或损失函数?
- 均方误差是什么?
- 损失如何帮助手动/可视化方法变得更准确和鲁棒?
- 自动化搜索参数以获得更好的损失
- 我们如何知道更新参数的方向和幅度,以改善损失?
- 你能在 Khanacademy 上找到足够的导数资料吗?
- 根据 Jeremy 的说法,目前你需要知道关于导数的哪些内容?34:26
- 斜率或梯度是什么?
- PyTorch 会为我们计算导数或斜率/梯度吗?
- 如何创建一个函数,在通用二次函数上输出一些损失?35:02
- 根据 Jeremy 的说法,目前你需要知道关于张量与导数相关的哪些内容?36:02
- 如何创建一个秩为 1 的张量(一个列表来存储数字)来存储二次函数的参数?36:49
- 如何要求 PyTorch 为这些参数准备计算梯度?37:10
- 如何根据这个特定函数(3 个特定参数)在整个数据集上获得的损失,实际计算每个参数的梯度?37:38
- 换句话说,这次我们在计算损失时,也可以轻松获得每个参数的梯度。
- 梯度值对每个参数意味着什么?38:34
- 如何利用损失产生的梯度将参数更新为新值?39:18
- 如何自动化上述过程以找到更好的参数来获得更低的损失?41:05
- 为什么这种自动化被称为梯度下降?
- Jupyter Notebook
- 数学函数
- 除了数据集、损失函数、导数,在寻找/计算这些参数时,什么也非常关键?
- 为什么我们不能简单地使用二次函数来实现它?
- ReLu: 整流线性单元
- 现实世界中的强大模型需要复杂的参数和复杂的函数,我们能构建出多复杂的函数?
- 是否可以通过简单地叠加极其简单的函数来构建一个无限复杂的函数?
- 这种极其简单的函数可能是什么样的?
- 整流线性函数是什么?它有多简单?什么是线性的?哪一部分被“整流”了?
- 整流线性函数在图表上是什么样的?
- 如何使用控件手动调整函数的 2 个参数?
- 在不同参数下,函数可能是什么样的?44:46
- 无限复杂的函数
- 叠加极其简单的函数能有多强大?
- 如何创建一个双整流线性函数(双 ReLU)并使用控件手动调整 4 个参数?
- 与单个整流线性函数相比,这个双 ReLU 函数看起来有多灵活?
- 你能想象当数百万个整流线性函数相加时,一个函数能有多复杂吗?
- 从两个圆到一个猫头鹰
- 深度学习中将基本思想缝合在一起的非常简洁的总结
- 所有图像模型的比较图表
- 能否用简单的代码进行暴力计算来完成?
- Jeremy 是通过模型比较图表来寻找最佳模型吗?
- 学生使用比较图表的错误方式是什么?50:45
- Jeremy 如何使用这个图表?
- Jeremy 如何一步步决定尝试哪些模型?
- 我的数据够吗?
- 你已经构建了一个模型并在自己的数据集上训练了吗?
- 结果对你来说足够好了吗?
- 深度学习行业在这个问题上常犯的错误是什么?52:55
- Jeremy 的建议是什么?
- 半监督学习和数据增强如何以及可能有哪些帮助?
- 有标签和无标签数据呢?
- 如何理解梯度(带单位)?
- 当参数 a 增加一个单位时,损失会下降多少?55:24
- 学习率
- 为什么我们不大幅更新参数值?
- 为什么当非常近地放大复杂函数时,Jeremy 画了一个二次函数来比喻模型?
- 当用大值更新参数时会发生什么?57:19
- 根据二次函数的性质,损失大幅下降是否一定需要参数值大幅增加?
- 学习率是什么?为什么它需要很小?如何选择一个好的值?58:07
- 如果学习率太大,会发生什么?
- 如果学习率太小,会发生什么?
- 休息
- 矩阵乘法
- 当模型需要数百万个整流线性函数时,如何快速计算?
- 进行深度学习实际需要线性代数的哪些知识?1:01:33
- 矩阵乘法有多容易?1:01:51
- 矩阵乘法中的数据集和参数是什么?
- 矩阵乘法会自动处理整流部分吗?
- GPU 擅长什么?1:03:49
- 在电子表格中构建回归模型
- Kaggle 泰坦尼克竞赛介绍 1:05:01
- 数据集是什么?1:05:18
- train.csv 文件该怎么处理?
- 如何稍微清理一下数据集?
- 如何转换数据集以便进行矩阵乘法?1:07:17
- 如何准备参数以便进行矩阵乘法?1:08:50
- 与其他列相比,'Fare' 列的值大得多有什么问题?1:09:35
- 如何处理 'Fare' 列的值以及类似地处理 'Age' 列的值?
- 数据归一化是什么?
- fastai 会为我们做所有这些归一化吗?将来我们会学习 fastai 是如何做到的吗?
- 为什么对 'Fare' 的值应用对数?1:10:59
- 为什么我们需要值均匀分布?
- 如何在电子表格中对数据集和参数进行矩阵乘法?1:11:56
- 如何使用矩阵乘法代替加法来添加一个常数?
- 我们模型的结果是什么样的?1:13:41
- Jeremy 是简单地使用线性回归作为模型,甚至没有使用 ReLU 吗?
- 我们可以用梯度下降解决回归问题吗?怎么做?
- 通过叠加两个回归模型构建一个神经网络
- 将一个回归模型变成神经网络需要做什么?
- 为什么我们不直接将两个线性函数的结果相加?
- 为什么我们只在结果经过整流后才将它们相加?
- 模型预测是什么样的?
- 现在我们需要更新两个线性函数的参数,而不仅仅是一个。
- 矩阵乘法使训练更快
- 如何让训练在电子表格中进行矩阵乘法而不是线性乘法的加法?
- 注意!这是第4章
- 请务必尝试泰坦尼克竞赛
- 为什么第4章吓跑了大多数人?
- 自己完成电子表格的方法
- 创建 3 个类别的哑变量
- 对于有 3 个类别的哑变量,我们只需要 2 列/类别吗?
- 初探 NLP
- 自然语言处理模型是做什么的?
- 非英语母语的学生有哪些项目机会?
- NLP 可以完成哪些任务?1:25:57
- fastai NLP 库 vs Hugging Face 库
- 这两个库有什么不同?
- 为什么我们在本次讲座中使用 transformer 库?
- 为下一课准备的家庭作业