课程
高一人工智能:深度学习和多模态人工智能
用 PyTorch 搭建并训练神经网络,处理图像、文字和声音。
按顺序学习各课。学完后,你能计算神经元的输出,比较 ReLU、sigmoid 和 softmax 激活,并用 NumPy 写小网络的前向传播。你能选择损失,讲清梯度下降和反向传播,并用 PyTorch 写带完整训练和测试循环的脚本。你能用 CNN 训练图像分类器,训练情感分类器分辨正面和负面评论,讲清注意力怎样给其他词元加权,并能给短声音片段分类。你能减少过拟合,在新类别上微调预训练模型,把错误分组并找出原因,还能展示在没见过的图像上测试过的智能野生动物监测。
这些课怎么用
- 从标着做这个的课开始。标题下面那一行你自己会了,再往下。
- 先玩游戏。再做测验。10题里对8题就通过。练习纸在纸上。答案在最下面。
- 每一课都接在前一课后面。每次训练都记下:设置、损失曲线和测试分数。
- 写代码的课用 Python 和 PyTorch,在免费的在线笔记本里,带 GPU。小模型和小数据集就够。只用你可以用的开放数据集。没有本人允许,绝不用人的照片来训练。
每一课都有游戏、测验和练习纸。
0/36
神经网络基础
- 1神经元用输入、权重和偏置计算神经元的输出。
- 写出加权和加偏置。
- 用手算三个输入。
- 在代码里用点积来算。
- 2激活比较 ReLU、sigmoid 和 softmax 激活。
- 画出每种激活。
- 说明网络为什么需要非线性激活。
- 用 softmax 把分数变成概率。
- 3层和网络把层叠成网络。
- 把一层写成矩阵乘法。
- 跟踪每一层数据的形状。
- 数出网络的参数。
- 4小网络用 NumPy 写小网络的前向传播。
- 在 NumPy 里搭一个两层网络。
- 把一批输入送进去。
- 检查输出的形状。
训练神经网络
- 5损失为一项任务选择损失并计算它。
- 回归用均方误差。
- 分类用交叉熵。
- 说出损失下降是什么意思。
- 6梯度下降讲清梯度下降怎样让权重往下走。
- 找出损失曲线的斜率。
- 按学习率迈步。
- 看看学习率太大或太小会怎样。
- 7反向传播顺着反向传播,看误差怎样传回网络。
- 在一个很小的网络上用链式法则。
- 用手算一个梯度。
- 用自动微分核对。
- 8训练网络训练一个小网络,并画出损失。
- 用小批量来训练。
- 画出训练损失和验证损失。
- 验证损失不再变好就停。
深度学习框架
- 9张量创建 PyTorch 张量并改变形状。
- 创建张量,检查形状和类型。
- 改变形状、堆叠并切片。
- 把张量移到 GPU。
- 10模块用 torch.nn 的模块搭建模型。
- 做 nn.Module 的子类。
- 使用 Linear 层和激活层。
- 打印模型及其参数个数。
- 11优化器用 SGD 和 Adam 优化器来训练。
- 使用 zero_grad、backward 和 step。
- 在同一项任务上比较 SGD 和 Adam。
- 使用学习率日程。
- 12训练脚本写一个带完整训练和测试循环的训练脚本。
- 用 DataLoader 加载数据。
- 训练、验证并测试。
- 保存最好的模型。
计算机视觉
- 13图像作为张量把图像加载成张量并归一化。
- 把图像加载成通道、高度和宽度。
- 调整大小并归一化。
- 把一批显示成网格。
- 14卷积说明卷积滤波器怎样找到边缘。
- 用手把 3×3 滤波器滑过一张图像。
- 在代码里用边缘滤波器。
- 说明 stride、padding 和 pooling。
- 15CNN搭建卷积神经网络,也就是 CNN。
- 叠上卷积层、激活层和 pooling 层。
- 展平,再加一个分类头。
- 跟踪形状穿过整个网络。
- 16图像分类器用 CNN 训练图像分类器。
- 在一个小图像数据集上训练。
- 报告测试准确率。
- 展示它分错的图像。
自然语言处理
- 17分词做分词:把文字变成词元和 ID。
- 比较词和子词的词元。
- 建立词表。
- 把序列补到同样长度。
- 18嵌入说明嵌入怎样把相近的词放在一起。
- 使用嵌入层。
- 找出离一个词最近的词。
- 在两个维度上画出嵌入。
- 19文本模型搭建一个能读词元序列的文本模型。
- 把嵌入平均成一个向量。
- 使用一个简单的循环层。
- 比较这两种做法。
- 20情感分类器训练情感分类器,分辨正面和负面评论。
- 在评论数据集上训练。
- 报告准确率、精确率和召回率。
- 找出骗过它的评论,比如讽刺。
Transformer
- 21注意力讲清注意力怎样给其他词元加权。
- 说明查询、键和值。
- 计算一个短句的注意力权重。
- 说出注意力为什么能帮助远处的意思。
- 22Transformer 块说出 Transformer 块的各个部分。
- 说出多头注意力、feed-forward 层和归一化层。
- 说明残差连接。
- 说明位置编码。
- 23预训练模型用预训练的 Transformer 模型做一项任务。
- 加载预训练模型和分词器。
- 用它给文字分类。
- 和你自己的情感模型比一比。
- 24注意力图读懂一张注意力图。
- 把注意力权重画成热力图。
- 找出一个词元注意哪些词。
- 说出注意力为什么不是完整解释。
声音和多模态人工智能
- 25声音作为数据把声音数据变成波形和频谱图。
- 加载声音并画出波形。
- 说明采样率。
- 做出频谱图。
- 26音频分类器用音频分类器给短声音片段分类。
- 把频谱图当成图像。
- 在上面训练 CNN。
- 用背景噪声来测试。
- 27多模态输入说明模型怎样把图像和文字的多模态输入合在一起。
- 说明每种输入有各自的编码器。
- 说明共享的嵌入空间。
- 说出三个多模态应用。
- 28图像和文字把图像和文字配上:用预训练模型把图像和说明对上。
- 取出图像和说明的嵌入。
- 为每张图像给说明排序。
- 用一句文字搜索图像。
改进模型
- 29正则化用正则化减少过拟合:dropout 和权重衰减。
- 加上 dropout。
- 加上权重衰减。
- 比较验证曲线。
- 30数据增强做数据增强:把翻转和裁剪过的图像加进训练集。
- 使用翻转、裁剪和颜色变化。
- 只增强训练集。
- 量一量测试准确率的变化。
- 31迁移学习用迁移学习在新类别上微调预训练模型。
- 冻结预训练的层。
- 换掉分类头并训练它。
- 解冻,再用小学习率微调。
- 32误差分析做误差分析:把错误分组并找出原因。
- 读懂多类别的混淆矩阵。
- 把错误分成组。
- 给最大的那一组选一个改法。
深度学习项目
- 33野生动物数据挑选并划分一个开放的野生动物图像数据集。
- 选一个开放的红外相机或野生动物数据集。
- 选出 5 到 10 个物种。
- 按地点划分,让测试公平。
- 34微调模型把图像分类模型微调到野生动物类别上。
- 微调一个预训练模型。
- 跟踪验证准确率。
- 保存最好的检查点。
- 35演示页面做一个演示页面,显示上传图像的预测。
- 接收一张上传的图像。
- 显示前三个物种和它们的分数。
- 信心低时显示“不确定”。
- 36智能野生动物监测展示智能野生动物监测:没见过的图像上的准确率,以及主要错误。
- 报告没见过的图像上的准确率。
- 展示主要错误和原因。
- 说出下一步要改什么。