当前位置: 首页 > news >正文

李宏毅2021机器学习深度学习课程:从笔记到实战的完整刷课指南

简介:本资源是李宏毅教授2021年春季《机器学习与深度学习》课程的配套学习材料合集,面向高校学生、AI初学者及自学者,系统支撑理论理解、代码实践与作业复现。压缩包共122个文件,涵盖40份PPT课件(含Domain Adaptation、强化学习等前沿章节)、31个Jupyter Notebook作业代码(含GAN、对抗攻击、Colab训练等典型实验)、23份PDF笔记与说明文档,以及CSV数据集、模型权重(.pth)、Markdown指南等辅助内容,整体大小273.51MB,结构清晰按ppt/homework/video分目录组织。已有2737人下载学习,内容持续同步官网更新至第九章,覆盖从基础回归分类到生成模型、鲁棒性训练等进阶主题,提供可直接运行的TensorFlow/PyTorch实现、完整数据集(如covid.train.csv)及本地化HTML作业模板,显著降低入门门槛与复现成本。 第一次完整刷完李宏毅老师的《Machine Learning》(2021春) 是在一个很普通的周末。当时我已经零散看过不少机器学习和深度学习的文章,也照着教程跑过几个模型,但总觉得知识是散的:今天看到一个概念,明天看到一个损失函数,很难把它们串成一条线。直到把这一整门课从绪论到最后的终身学习完整过了一遍,配合PPT精读和作业实战,才算是把机器学习和深度学习的主干脉络捋顺了。这门课的视频、PPT、作业和代码都在GitHub上能直接找到,仓库名就叫 machineLearningDeepLearning,里面把李宏毅2021机器学习深度学习课程的笔记、PPT和作业都整理好了,特别适合想系统入门又不想啃英文教材的人。

这篇文章我就以“过来人”的身份,聊聊这门课到底应该怎么刷、笔记怎么整理、PPT里哪些章节最值得反复读、HW1到HW14每个作业到底在练什么,以及本地环境配置时踩过的一些坑。如果你正准备开始学机器学习和深度学习,或者已经到了期末复习阶段想找一份够系统的中文讲义,这份内容应该能帮你省下不少时间。

1. 为什么是李宏毅2021:课程定位和真实学习收益

先说说这门课的位置。国内提到机器学习入门,绕不开三座大山:吴恩达的Coursera课程、周志华的《机器学习》(也就是大家常说的西瓜书)、还有李宏毅的《机器学习》。吴恩达的课胜在数学推导温和、由浅入深,但偏传统机器学习方法,深度学习的部分占比不高。西瓜书理论严谨,但如果你不是计算机科班出身,读起来会有一定门槛,尤其是有监督学习那一堆公式的符号体系,光适应就需要时间。相比之下,李宏毅2021这门课最大的特点是:讲深度学习讲得极其清楚,而且每讲完一个技术原理,立刻配一个非常生动的生活化例子,让你觉得“神经网络”并不是什么神秘的黑盒。

从课程内容上看,2021年春季这门课覆盖的面很广:从回归、分类这类基础监督学习任务出发,一路讲到反向传播、CNN、RNN、Self-Attention、Transformer、BERT、GAN、自编码器、异常检测、可解释性AI、模型压缩、元学习、强化学习、终身学习。基本把当前深度学习最主干的技术方向都扫了一遍。很多人学机器学习最大的困惑是“不知道学了之后能做什么”,这门课的好处在于,它每一章节都给你一个看得见摸得着的场景——比如HW1让你预测新冠确诊人数,HW6让你生成动漫头像,这些作业做完之后你是真的有东西可以拿去和朋友展示的。

另一个很现实的好处是它是全中文授课,PPT排版也非常干净,公式和示意图都做得足够清晰。对国内学生来说,不用一边看视频一边查术语翻译,学习效率会高很多。如果你是准备期末复习的话,这套课程的PPT和笔记基本可以当一份“深度学习知识地图”来用,配合西瓜书查漏补缺,效果相当不错。

2. 笔记怎么记:面向复习的课程骨架整理法

刷课和刷剧不一样,光看视频很容易陷入“眼睛会了,脑子不会”的状态。我的经验是:每一节课都要边听边整理出自己的笔记,不是抄PPT,而是把PPT上的推导用自己的话重新写一遍。这门课信息量很大,如果不及时整理,两周后再回头看视频,等于从头再来。

2.1 笔记结构:按技术主题而不是按课时

建议不要一节一节地记笔记,而是把课程内容按主题拆成几个大的模块。我自己的笔记目录大致是这样的:

  • 监督学习基础:线性回归、逻辑回归、分类、梯度下降、损失函数选择
  • 深度学习核心:神经网络结构、反向传播、优化器、正则化、Batch Normalization
  • 卷积神经网络:CNN原理、感受野、池化、经典网络结构
  • 序列模型:RNN、LSTM、Seq2Seq
  • Attention机制与Transformer:Self-Attention、Multi-Head Attention、位置编码
  • BERT与NLP预训练:BERT原理、微调、问答任务
  • 生成模型:GAN原理、训练技巧、自编码器、异常检测
  • 可解释性、模型压缩、元学习、强化学习、终身学习

每个主题下再拆成几个固定板块:“核心概念”、“关键公式”、“我的理解”、“常见误区”、“对应PPT页码”、“对应作业”。这个结构的好处是,复习的时候你可以直接按主题索引,而不是翻视频。期末复习阶段,我自己就是靠这份笔记把每个章节的核心考点重新过一遍,效率非常高。

2.2 哪些内容值得重点记录

有一段我印象很深:李宏毅在讲梯度下降的时候,花了很大篇幅讲“学习率太小/太大”的影响,还放了一张Loss与参数关系的等高线图,非常直观。这种图是必须自己动手截下来存进笔记的,因为考试时很可能就会出“学习率过大导致Loss爆炸”这类选择题。

Transformer这一章也值得花大力气记录。李宏毅讲Self-Attention时,把Query、Key、Value的运算过程一步步画出来,还特意解释了为什么要除以根号d_k——这一步对新手来说比较费解,如果只是看PPT很容易忽略,但如果你自己推导一遍,会发现这其实是为了防止点积结果过大导致softmax进入饱和区。我在笔记里专门写了一行:“除以√d_k不是因为好看,而是为了梯度稳定”,后来复习时这一句话帮了大忙。Transformer是当期深度学习最重要的考点之一,这一部分笔记做得越细越好。

另外,像“池化”这种概念,很多人以为CNN必须配池化。实际上李宏毅在PPT里提到,池化只是用来降低分辨率的手段,并非CNN的必要组件,你完全可以只用带stride的卷积来降采样。这类“打破直觉”的细节,考试特别喜欢考,记录下来非常划算。

2.3 用什么工具记

我个人推荐Markdown+图片引用的方式。因为课程涉及大量公式和图解,纯文字很难表达清楚。我喜欢用Typora或VS Code写Markdown,公式用LaTeX语法,截图直接放到本地一个figures目录里统一管理。如果你还想把笔记发布到个人博客或GitHub上,这一套方案会非常顺手。不建议单纯用Word,公式排版太痛苦了。

3. PPT精读:哪些章节值得反复嚼

李宏毅的PPT本身就很有营养,很多细节只听视频是感受不到的,必须静下来精读。以下是我认为最值得反复翻的几个章节,每一章都值得花至少两三天去消化。

3.1 Self-Attention与Transformer:整个现代深度学习的地基

如果说这门课只看三章,那么我强烈推荐看Self-Attention、Transformer和Bert这三章。原因很简单:现在无论是NLP还是CV,都逃不开Transformer结构,甚至推荐系统、强化学习领域也在大量借鉴Attention机制。李宏毅2021的PPT里把这部分讲得非常“手把手”,从“为什么要Attention”开始,到“Attention怎么计算”,再到“Multi-Head Attention到底在干什么”,层次非常清楚。

我当时精读时做了一件事:把Transformer的Encoder部分结构图单独截图,然后用箭头标注每个子模块的输入输出形状。这样做完之后,你就能清晰地知道“从词向量到最终输出”之间每一层张量是怎么变化的。面试或考试时如果遇到“请简述Transformer结构”,你甚至可以凭这张图完整口述出来。

3.2 GAN那章:理解生成模型的起点

GAN是很多初学者觉得玄学的部分。李宏毅的PPT里用了“伪造钞票”和“警察抓假币”这种例子来解释生成器与判别器的对抗关系,当时看的时候觉得很有趣,但后来才发现这个例子比很多教材里“分布匹配”这类说法好懂太多。PPT里还讲了训练GAN的常见问题,比如模式崩溃、判别器太强导致生成器梯度消失等,这些知识点都是我后来做实际生成任务时反复踩坑后才有更深理解的。

建议精读时特别留意“WGAN”那一小节。李宏毅会讲为什么原始GAN的损失函数在判别器训练得太好时会导致生成器学不到东西,而WGAN通过Wasserstein距离来缓解这个问题。这部分推导虽然有一点数学门槛,但非常值得啃下来,因为生成模型面试基本必考。

3.3 可解释性AI与模型压缩:容易被忽视但很有用

这两部分在很多人看来像“选修课”,于是直接跳过了。但恰恰是这些章节,后来我在实际工作中用得最多。可解释性AI章节讲的Grad-CAM、LIME等方法的思路,能够帮你理解模型到底在“看什么”,这在做图像分类、医疗影像分析等场景时特别重要。模型压缩章节讲的剪枝、量化、知识蒸馏,则是把模型部署到边缘设备时的利器。

李宏毅2021年的PPT里,模型压缩部分专门讲了Distillation(蒸馏)的思路:用一个大的Teacher模型去教一个小Student模型。以前我不太理解为什么蒸馏会有效,直到自己做了实验才发现,Teacher模型的软标签确实包含了类别之间的相似性信息,这比单纯用真实标签训练小模型效果要好很多。

3.4 强化学习:概念多,但核心逻辑就一条

强化学习章节对新手来说是最容易“听不懂”的。李宏毅的处理方式是从Policy Gradient讲起,再引出Actor-Critic和PPO。PPT里放了大量动画和示例来展示智能体在环境中的交互过程,这种“先看效果再讲公式”的顺序,对建立直觉非常有帮助。但只要理解了“最大化期望回报”这条主线,后面的各个算法都是在这个框架下做优化技巧的变体。

4. 作业实战:从回归到强化学习的十四道关卡

这门课的作业设置是它最强的部分之一。每一个作业都对应一个非常具体的任务,让你在代码层面真正跑通一个项目。从Kaggle上也有对应的Public Baseline,你可以对比自己的成绩。

4.1 HW1到HW7:从回归到Transformer的爬坡过程

HW1是一个典型的回归问题,使用COVID-19确诊数据来预测未来某个地区的病例数。这个作业的难点不在于模型,而在于特征工程和数据预处理。我当时第一次做完,Public Score大概是0.9左右,后来通过做特征标准化、去掉异常值、加入时间窗口特征之后,分数明显下降。这个作业最大的价值是让你体会“特征工程的收益往往大于模型调参”。

HW3是图像分类任务,用CNN对食物图片进行分类。这个作业我开始意识到PyTorch的DataLoader、Transform、模型保存与加载这些工程化操作的重要性。HW5是英译中任务,使用了Transformer架构,数据集也比较大,是整门课第一个真正吃显存的作业。如果你用Colab免费版做,训练时间会很长,建议学会使用早期的Early Stopping和梯度累积策略。

HW6是GAN生成动漫头像,这个作业特别好玩,也特别容易让人绝望——因为你会遇到生成器Loss已经很低了但生成出来的还是模糊的一团的情况。后来我在代码里加入了一些技巧,比如使用BCEWithLogitsLoss来保证数值稳定性,把生成器的学习率调低一点,训练总步数拉长,才慢慢看到清晰的人脸轮廓。

HW7是一个BERT问答任务,具体目标是给定一篇文章和一个问题,从文章中提取答案片段。这个作业因为已经提供了预训练模型,主要是“如何微调”的问题。做完这个作业,你会发现所谓“大模型”并没有那么神秘,本质上就是加载预训练权重,在特定数据集上继续训练。

下表是我整理的作业核心要点:

作业任务核心模型/技术我踩过的最大一个坑
HW1COVID-19病例数预测线性回归/MLP、特征工程忘记标准化了,模型收敛特别慢
HW2音高分类逻辑回归、概率输出分类别权重不平衡,F1分数很低
HW3图像分类(食物)CNN未做数据增强,严重过拟合
HW4说话者分类Self-Attention序列长度差距大,没有统一Padding策略
HW5英译中TransformerLearning Rate设置过低,训练几乎不收敛
HW6动漫头像生成GAN判别器训太快,生成器梯度消失
HW7问答抽取BERT微调输出位置Softmax维度搞错,导致Acc为0
HW8异常检测自编码器重建误差阈值选得不合适,误报率很高
HW9解释性AIGrad-CAM可视化时张量需要detach,否则画图报错
HW10模型攻击FGSM攻击强度太大,图片人眼都看不清了
HW11模型压缩剪枝、蒸馏蒸馏时温度系数设置过高,软标签过于平滑
HW12元学习MAML对多任务batch的处理理解不到位
HW13强化学习PPOReward归一化处理不当,训练特别不稳定
HW14终身学习EWC忘记了旧任务的buffer,灾难性遗忘严重

4.2 作业代码组织经验:别把Notebook当草稿纸

很多初学者喜欢直接在Colab Notebook里写代码,写完就跑,跑完就关,结果代码烂在笔记本里。我的建议是:每个作业都建立一个独立的项目文件夹,包含data、models、src、checkpoints、logs这几个子目录,把训练和评估逻辑分到不同的.py文件里,而Notebook只用来做数据可视化和快速实验。这样到期末复习时,想重新看某个作业的代码,你只需要打开src/main.py就可以了,不必在一堆Cell里翻找。

另外,如果你用的是Colab,一定要学会挂载Google Drive并在代码里定期保存checkpoint。我有一次跑了三个小时GAN训练,因为忘记保存模型,最后Colab连接断开,全部白费。从那之后,我每个epoch都会保存一组权重,后面如果发现生成效果变差了,还能回到之前某个状态重新训练。

5. 本地环境配置:Ubuntu系下的一个完整避坑参考

虽然用Colab很方便,但如果你和我一样,本地有一张显卡,还是想在自己机器上跑。这里就涉及机器学习和深度学习最让人头疼的环境配置问题。搜索热度里有很多人查“ubuntu22安装深度学习”“ubuntu24.04配置深度学习环境”,说明踩坑的人不在少数。我以Ubuntu 22.04/24.04为例,梳理一套稳定流程。

5.1 驱动、CUDA、PyTorch的安装顺序

首先,驱动和CUDA的安装顺序是有讲究的。正确流程是:先装NVIDIA驱动,再确认驱动正常,然后装CUDA Toolkit,最后再装PyTorch。不要上来就复制网上的命令装CUDA,因为驱动版本和CUDA版本是有对应关系的。

第一步,确认显卡型号:

lspci | grep -i nvidia

第二步,安装驱动。最简单的方式是在“软件和更新”里添加NVIDIA显卡驱动PPA,或者用ubuntu-drivers工具自动安装推荐版本:

sudo ubuntu-drivers autoinstall sudo reboot

重启后运行:

nvidia-smi

如果能看到显卡信息,说明显卡驱动已经装好了。注意:如果你在“ubuntu22安装深度学习驱动安装了没反应”这种搜索结果里看到类似的描述,基本上都是因为没有重启,或者安全启动(Secure Boot)没有关闭导致驱动模块没有被加载。检查这两项就能解决大半问题。

第三步,安装CUDA Toolkit。这里有个常见的误区:其实PyTorch在安装时会自带对应版本的CUDA runtime,并不需要你单独安装完整的CUDA Toolkit。如果你只是用PyTorch跑模型,只需要装驱动,然后直接装PyTorch即可。只有当你要自己编译CUDA扩展时,才需要额外安装完整版Toolkit。

所以最终极简流程是:

# 确认驱动OK nvidia-smi # 创建虚拟环境 conda create -n ml python=3.10 -y conda activate ml # 安装PyTorch(以CUDA 12.1为例,按官网实际命令为准) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

安装完成后,在Python里验证一下:

import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0))

如果输出显示True和你的显卡名称,环境就配置成功了。

5.2 环境不一致导致的奇怪Bug

我遇到过最奇怪的一个Bug是:在本地训练HW5 Transformer时,损失函数在某个step之后突然变成NaN。检查了很久,发现不是代码逻辑问题,而是PyTorch版本太老导致某些算子对Turing架构显卡的兼容性有问题。解决办法很简单:升级到最新稳定版本即可。像这种“代码没变,换个环境就好了”的问题,一般来说就是因为CUDA和PyTorch版本组合不匹配。

另一个常见问题是显存不足。李宏毅的HW5、HW7这类任务,如果你的显卡只有6GB显存,可能需要调整Batch Size到8甚至4,然后使用梯度累积来模拟大Batch的训练效果。梯度累积的思路是先把多个Batch的梯度累积起来,再统一做一次优化器更新,这在代码里实现起来也简单:

accumulation_steps = 4 optimizer.zero_grad() for i, (inputs, labels) in enumerate(train_loader): outputs = model(inputs) loss = criterion(outputs, labels) loss = loss / accumulation_steps loss.backward() if (i + 1) % accumulation_steps == 0: optimizer.step() optimizer.zero_grad()

5.3 深度学习开发常用的辅助工具

除了PyTorch本身,我还会安装几个能大幅提升效率的库,比如tensorboard用于可视化训练曲线,tqdm用于显示训练进度,opencv-python用于图像处理,pandas和numpy用于数据处理。如果你的作业涉及可视化,还可以装matplotlib和seaborn。

在Windows和macOS上的配置思路也类似,只是驱动安装方式不同。Windows上装驱动后直接在NVIDIA官网下载对应的CUDA安装包即可;macOS没有NVIDIA显卡,跑深度学习主要靠CPU或者M系列芯片的Metal加速,处理HW5这种Transformer任务会比较吃力,适合跑一些较小的模型做实验。

6. 学习节奏和一点额外建议

最后聊聊实操层面的学习规划,这是很多自学者最容易失焦的地方。

我的建议是“三遍法”。第一遍,以1.5倍速快速过一遍视频,不做笔记,只求知道这门课大概讲什么;第二遍,逐章节精读PPT并整理笔记,这里不要追求速度,一个章节花三四天很常见;第三遍,做作业,每一个作业做完之后,回到对应章节再读一遍PPT,这时你会发现很多之前没看懂的细节突然变得合理了。

如果你是为了期末复习,时间不够的时候,可以优先看HW1、HW3、HW5、HW7这四块对应的内容,因为它们分别覆盖了回归、CNN、Transformer和BERT,基本就是深度学习主干的“四大名著”。其他章节可以等到复习完主干内容后再去补。

我在这个仓库里除了整理笔记和作业之外,还专门维护了一个“考点速查表”,把每一章出现过的重要概念、对应PPT页码、对应作业编号、常见考试形式都放在一起。这个东西在考前冲刺时帮助非常大。我的实际操作体会是:机器学习和深度学习并不是一门靠天赋才能学会的课,它的知识体系非常庞大,但只要你能把一条主线完整走通——从基础损失函数到神经网络到Transformer到生成模型到强化学习——你就已经超过了绝大多数初学者。

最后再分享一个小技巧:无论你用什么工具记笔记,一定要把每一张重要的结构图、流程图、公式图都截下来存档。这些图片在复习时能帮你节省大量重新理解的时间。我在期末复习时,基本就是靠翻笔记里的图片来“过电影”,一个晚上就可以把整门课的框架过一遍,效果比重新刷视频好太多。

本文还有配套的精品资源,点击获取

http://www.cnnetsun.cn/news/4320558.html

相关文章:

  • 车辆横向控制中的MPC联合仿真:从CarSim到Simulink的完整实践
  • 脑机单词速记为什么不是“买两台学习舱就能开课”?
  • 农业病虫害知识图谱构建实战:从爬虫到Neo4j可视化
  • 公交POV拍摄全流程:从设备固定到站点标记,记录城市交通运行秩序
  • Python数据分析实战:技术社区周度运营数据可视化与洞察
  • 多种滚动轴承诊断数据集(凯斯西储大学、辛辛那提大学、西安交通大学)故障诊断系统,一维时间序列分类和二维图像处理分类,采用多种模型进行对比实验
  • B站技术岗笔试复盘:前端、运维、后端与移动端核心考点解析
  • 《妃梦千年》第38章-归途之择
  • C 语言学习笔记(六)
  • 福瑞兽剧预告片制作全流程解析:从兽设建模到渲染合成
  • 【计算机毕业设计】基于深度学习的智能交通流量预测 Web 系统
  • 《易学・姤䷫|道影子新解 044》
  • 游戏NPC接入大语言模型为何难?从确定性、实时性到成本解析
  • QCA7000/7005 SPI驱动开发指南:MCU与电力线通信芯片的通信实现
  • GFS-VL:融合3D VLM稠密知识与少样本校准的点云分割
  • AI蜂群逃逸与多智能体系统安全:沙箱防护实践指南
  • 从单片机到ROS2:机器人嵌入式物联网自学路线全攻略
  • 从零训练二次元角色LoRA:Stable Diffusion角色一致性实战全流程
  • 八电HOLOLIVE vs 八门P5X:WS练习局触发轴与资源节奏拆解
  • Hypermesh 2024前处理实战:网格划分、质量检查与节点显示问题
  • ESP8266 与 ESP-01S 到底是什么?从 Wi-Fi SoC 到串口联网模块,新手一篇快速看懂
  • Luckysheet集成实践:从zip解压到Excel转JSON的全流程指南
  • LVGL 9.0移植到STM32F746G-DISCO与性能基准测试实战
  • 用 Scrapy 爬取百家姓与姓氏源流数据:多源采集、数据清洗与结构化存储实战
  • 直播录像处理实战:FFmpeg转码切片与批量归档全流程
  • 266美元+四个AI模型,一天打造AI小镇应用:开源项目实战
  • 阿里编程题4星刷题体验:从算法建模到树状数组的实战解析
  • 【设计模式精讲】5.工厂方法(Factory Method)
  • S7-1200 MODBUS轮询库V15:多从站通信高效封装方案
  • YOLOv8农田作物倒伏识别系统:从环境搭建到部署实战解析