简介:本资源是李宏毅教授2021年机器学习与深度学习课程的配套学习材料,面向高校学生、AI初学者及转行从业者,系统解决理论理解难、公式推导抽象、代码实现脱节等核心学习痛点。压缩包共312.61MB,包含完整PPT课件、手写/整理版笔记、课后作业题与参考解答,覆盖监督学习(线性回归、SVM、决策树)、无监督学习(K-means)、深度学习(CNN、RNN、LSTM、GAN、VAE)及训练技巧(反向传播、Adam优化器、正则化、模型评估)等关键模块。已有2600人下载学习,内容紧扣课程逻辑,PPT侧重直观图解与公式演进,笔记强化概念辨析与易错点标注,作业题设计由浅入深,含图像分类、文本分析等典型任务实践,便于边学边练、闭环巩固。 如果你在B站刷到过李宏毅老师的机器学习课程,大概率会对那口台湾腔和大量生活化比喻印象很深。这门课在中文世界里的地位,基本等同于“机器学习入门必看”,它的完整配套资源其实有三样:视频、PPT、作业。很多人跟课只刷视频,PPT当成ppt看一眼就过,作业更是直接跳过去,等学完才发现脑子里什么都没留下。
我这两年反复带过几次新人走这套流程,最大的感受是:李宏毅2021这门课真正值钱的地方,不是视频本身,而是“视频+PPT+作业”形成的闭环。这套组合几乎覆盖了一个初学者从零开始接触机器学习、深度学习,到能独立完成一个小项目所需的全部环节。这篇内容我打算围绕“笔记怎么记、PPT怎么读、作业怎么做”三个核心来拆解,把整个闭环运作的细节、踩坑点和配套方法都展开讲清楚,给准备入门或者已经开始学但卡在半路的同学一份可以直接照着走的参考。
1. 项目整体定位与学习路线设计
1.1 为什么是李宏毅2021,而不是吴恩达或者周志华
先把一个常见问题放前面:搜机器学习课程时,最先跳出来的往往是吴恩达的Machine Learning、李宏毅的ML课程、还有周志华的《机器学习》西瓜书。这三个我全接触过,定位差异非常大。
吴恩达的课程数学推导温和,作业基于Octave/MATLAB,体系偏传统机器学习,适合完全没有基础的人建立直觉。但它的代码部分距离现代工业界习惯——也就是Python + PyTorch/TensorFlow——有明显距离。周志华的西瓜书是教材不是课程,理论密度极高,适合做案头参考,直接上手容易劝退。
李宏毅2021恰好站在中间:视频课用中文讲,课堂上有大量直观例子,数学门槛比西瓜书低,但覆盖范围到了Transformer、BERT、GAN这些实际工业界正在用的模型。最关键的是,这门课的作业是基于Python和PyTorch的,和你以后做深度学习项目用的工具链完全一致。所以对大部分人来说,李宏毅2021是“第一遍系统学”的最佳选择,西瓜书用来“查漏补缺”,吴恩达用来“补数学直觉”。
1.2 把“看课”变成“学习闭环”的路线图
很多人学完就忘,问题出在把“看视频”当成了“学习”。视频课是线性叙事,你看完以为懂了,其实只是被老师的节奏带着走。真正有效的学习闭环是四步:看视频建立概念、读PPT把概念变成结构化知识、做笔记把知识变成自己的表达、写作业把表达变成可运行的代码。
我建议的路线是:先快速过一遍视频建立整体印象,不要纠结某个公式看不懂,这一遍控制在两周内;第二遍配合PPT细读,每看完一个章节就整理一份笔记;之后立刻做对应的作业,作业做完后再回头去看视频里没理解的部分,这时候你的疑问会变得非常具体。这个路线执行下来,大概需要六到八周。
有一个非常实用的技巧:李宏毅每节课最后都会留作业链接和评分标准,这些评分标准和作业代码是配套的。你在做作业时,其实就是把课堂上学到的知识放到一个已知答案的测试环境里验证。这种“答案就在手边”的练习方式,比你自己在Kaggle上找比赛练手要高效得多,因为你随时能知道自己的理解偏差在哪里。
2. 笔记整理:把视频课沉淀成自己的知识资产
2.1 笔记到底记什么:PPT上没有的东西才是重点
这里要澄清一个误区。不少人记笔记的思路是把PPT截图贴到Word里,然后打印出来复习。这样做的效果和没记差不多,因为PPT本身就是人家的笔记,摹写抄一遍不会让你的认知有任何增量。
真正值得记的有三类东西。第一类是老师在课堂上说的“口语化解释”,比如李宏毅讲梯度下降时用“在山谷里滚球”来比喻,这种例子不会出现在PPT文字里,但它恰恰是帮你建立直觉的关键,必须记下来。第二类是老师随手画的图,尤其是损失函数的地形图、过拟合的示意图,这些比文字信息密度高得多。第三类是你自己在听课时产生的疑问和顿悟,比如“为什么逻辑回归要用交叉熵而不是均方误差”,这类问题等做完作业会得到答案,把提问本身记录下来,回头看就会发现自己的成长轨迹。
我个人的笔记习惯是每讲一个文件,开头是“这一讲的问题是什么”,然后记录关键概念、口语化解释、你的疑问、作业中的验证结果。这五个要素缺一不可,它决定了你的笔记是一个有逻辑的故事,还是一堆概念碎片。
2.2 我的笔记模板和工具链参考
工具方面,我试过Notion、OneNote、纯Markdown,最后长期用的是“Typora + Git”组合,原因是Markdown对公式、表格的支持非常好,而且文件是纯文本,可以用Git记录每次修改,不会因为平台问题丢了内容。如果你希望笔记可以随处阅读和多端同步,Notion是个更友好的选择,但公式输入体验略差。如果用的是Windows系统,OneNote的手写功能适合平板用户,但它的同步偶尔会出问题。
下面是一个我整理过多次后觉得比较通用的单讲笔记模板,你可以直接套用:
# 第X讲 标题 ## 这一讲解决什么问题 (用自己的话写,一两句话即可) ## 核心概念清单 - 概念A:一句话定义 + 生活化类比 - 概念B:一句话定义 + 适用场景 ## 老师口语化的解释 (记录原话或者复述,关键是那些上课时让你“啊哈”一下的瞬间) ## 疑问记录 1. 问题一 2. 问题二 ## 作业验证结果 (做作业时回到这里补充,记录代码调用方式、训练结果和踩坑现象) ## 公式速记 (公式用LaTeX记录,推导过程简写,重点是公式的作用)公式输入是个坎,很多新人一听到LaTeX就害怕。其实Markdown里的LaTeX只需要记最基础的一点:用美元符号包裹公式,下划线表示下标,尖号表示上标,比如$W^T x + b$。常用到的基本就这些,不用背任何语法。
记录笔记本身不是目的,让笔记成为你和知识之间的对话界面,才是这个环节真正要解决的问题。每次翻开笔记,你应该是和一个旧朋友聊新话题,而不是在背诵生词表。
3. PPT研读:从李宏毅的课件里拆出技术主线
3.1 李宏毅PPT的风格与阅读方式
李宏毅的PPT在公开课里算是质量非常高的一档:图形多、动画多、文字少,关键结论会被醒目标注。但也正因为图多,很多人读PPT时会被好看的图示带偏,以为看懂了图就等于理解了背后的数学原理。
读这份PPT的正确姿势是“看三遍”。第一遍专门看图,弄懂每一张图在表达什么关系,比如横轴纵轴分别是什么、曲线为什么是这个形状。第二遍专门看文字结论,把每一页PPT最后一句总结性的话找出来,这些就是这份PPT的骨架。第三遍把图和文字对应起来,在小本子上写一遍这页PPT到底在论证什么问题。
我特别想提一个很多人忽略的细节:李宏毅PPT里的很多公式是“省略推导过程”的,只给最终结果。比如反向传播那一节,PPT上直接给出了误差项从前层传向后层的递推公式,但并没有把链式法则的展开过程手把手写一遍。如果你在这一页卡住了,不要死磕,去翻周志华西瓜书的对应章节,或者看吴恩达课程里对反向传播的推导,很快就能补上。
3.2 几个容易学不透的知识点:池化、Self-Attention、Batch Normalization
结合我观察到的初学者反馈,有几个知识点是卡住人最多的地方,这里逐个拆一下。
池化(Pooling)。很多人学CNN时会认为池化层是“为了减少参数所以下采样”,这个理解不算错,但太浅了。李宏毅课程里强调的池化更本质的作用是让特征具有平移不变性,也就是“猫的脸不管是往左偏一点还是往右偏一点,都能被识别出来”。这个性质在实际应用里非常重要,比如人脸检测、图像分类,如果输入图像里的目标物体位置有偏移,池化可以帮你兜底。做作业时你会发现,去掉池化层模型依然能训练,但泛化性能会明显下降。
Self-Attention。这个知识点在Transformer出现后变得无比重要。李宏毅的讲法很巧妙:他会把Attention解释成“每个词去数据库里查询和自己最相关的其他词”,Query、Key、Value的概念被他用具名的方式讲得很清楚。我建议你在读这部分PPT时,自己去推一遍attention的计算过程:输入三个词向量,算Q、K、V三个矩阵,然后算Q和K的点积得到注意力分数,再用softmax归一化后加权V。这个过程只要手推过一遍,后面读BERT、GPT这些模型就会顺畅很多。
Batch Normalization。这个技术现在几乎成了深度学习标配,但李宏毅课上会顺着一个自然的逻辑推导出它:我们虽然对输入数据做了归一化,但每层网络输出的分布还是在不断变化,那不如把每一层的输出也做一个归一化。这个“从问题出发推技术”的思路,比直接背BN的公式要有用得多。做作业时你会发现,加上BN层之后训练收敛速度明显加快,这就是理论回到实践最直观的体验。
3.3 用PPT反推知识体系:建议搭配对照表
李宏毅2021整门课的知识点条目非常多,如果只是顺着视频一讲一讲往下学,很容易学了后面忘了前面。我建议你把PPT的目录整理成一张自己的“课程地图”,把机器学习、深度学习、CNN、RNN、Transformer、GAN、强化学习这些章节之间的逻辑关系画出来。
这里给一张参考对照表,说明各章节知识和外部资源的关系:
| 李宏毅课程章节 | 核心知识点 | 搭配资源 | 对应作业 |
|---|---|---|---|
| 回归与分类 | 梯度下降、逻辑回归、概率生成模型 | 吴恩达第三到五周 | HW1回归、HW2分类 |
| 深度学习基础 | 神经网络、反向传播、训练技巧 | 周志华第五章、动手学深度学习 | HW3图像分类 |
| CNN | 卷积、池化、感受野 | CS231n笔记 | HW3 |
| RNN | LSTM、序列建模 | 吴恩达序列模型 | HW4 |
| Attention与Transformer | Self-Attention、多头注意力 | 原版Transformer论文 | HW4 |
| GAN | 生成器、判别器、训练稳定性 | 李宏毅GAN专题 | HW5 |
| 异常检测 | 密度估计、自编码器 | 李宏毅异常检测专题 | HW6 |
这张表不只是让你用来复习的,更重要的作用是在你学到一个新概念时,能快速定位“它属于哪棵树上的哪根枝桠”,这样知识就不是一堆散点,而是一张网。
4. 作业实战:从“看懂”到“做出来”的关键一跃
4.1 作业清单与各作业的核心考点
李宏毅2021的作业设计可以说是这门课精华中的精华。每一个作业都对应一个特定技术点,难度逐级递进,而且绝大部分作业都提供了starter code和baseline。根据我跟课时的记录,这套作业大致覆盖了这样几条主线:
回归预测类作业,核心考点是数据预处理和梯度下降的实现。你要处理的不只是模型结构,还有特征中缺失值怎么填充、不同量纲的特征要不要归一化、学习率设多少合适。
分类类作业,核心考点是逻辑回归和分类模型评估。这里最容易踩的坑是类别不平衡,也就是说训练集里某个类别的样本特别少,模型学出来会对这个类别完全无视。
图像分类类作业,核心考点是CNN的结构设计、数据增强和迁移学习。李宏毅课程里反复强调的“数据量不够时怎么办”,这个作业会给你最真实的反馈——同样的模型,加了数据增强效果可能提升一大截。
序列模型和Transformer类作业,核心考点是注意力机制的实现细节。这一块确实需要提前熟悉PyTorch的官方Transformer实现,以及mask机制是怎么处理变长序列的。
生成模型类作业,核心考点是GAN的训练稳定性。做这个作业你会深刻体会到什么叫“训练Gan就是在平衡两个网络的血条”,判别器太强生成器学不动,判别器太弱生成器又会产生模式崩塌。
异常检测类作业,核心考点是自编码器在无监督学习上的应用。它的思路是用正常数据训练自编码器,让模型学会压缩和重建,训练完成后,如果给它输入一个异常样本,重建误差会非常大,据此判断异常。
以上这些作业全部完成,你就等于做了一次系统的深度学习实操训练,虽然每个作业单独看规模不大,但它们合起来覆盖了深度学习项目里最核心的完整链路:数据处理、模型设计、训练调优、评估对比。
4.2 作业环境准备:Ubuntu + Anaconda + PyTorch
作业开始前第一个要过的坎就是环境配置。李宏毅课程的作业是基于PyTorch的,我建议你直接用Linux环境来做,Windows虽然也能跑,但后面一些数据处理和GPU相关的环节会让你多花很多时间。
如果你是Ubuntu 22.04或者24.04,环境配置路径大概是这样的:先安装Anaconda用于Python环境隔离,然后安装NVIDIA显卡驱动,再用conda创建虚拟环境安装PyTorch。有一个最容易出问题的点:驱动装完之后终端里输入nvidia-smi没有反应,这个问题大多是驱动和内核版本不匹配或者Secure Boot没关造成的。遇到时不要慌,先查内核版本再找对应驱动,不要用系统自动推荐的默认驱动。如果只是用CPU跑小作业,也可以不装GPU版本,把PyTorch的CPU版本装上,前几个作业完全够用。
进入作业代码目录后,建议你在项目根目录新建一个requirements.txt文件,把需要的库版本记录进去,这样别人克隆你的仓库后可以一键复现环境,这也是你后续做正式项目时需要养成的好习惯。
4.3 如何把课程作业升级成可写进简历的项目
课程作业直接写进简历其实有点单薄,但稍微做一点小升级就能变成有说服力的项目经历。比如做完图像分类作业后,你可以做一个“XX数据集图像分类系统”,把模型封装成Flask接口,实现输入图片返回预测结果。或者把回归预测作业升级成一个带可视化展示的数据分析工具。
这里我提供一个最实用的升级模板:在每个作业基础上增加三个模块——数据可视化分析、消融实验对比、模型部署演示。数据可视化分析是在训练之前先用matplotlib画特征分布、标签分布,展示你对数据的理解;消融实验对比是控制变量对比不同模型结构、不同超参数的效果,形成一张对比表格;模型部署演示是把训练好的模型用最简单的Flask或Gradio做成一个可交互的网页demo。做完这三步,一个课程作业就有了完整项目的雏形。
同时建议你为每个作业建立一个Git仓库,仓库里包含README、代码、实验记录。README里写清楚项目背景、数据来源、方法、结果、复现步骤,实验记录里贴loss曲线和测试集精度。这个习惯对你后续求职和做开源项目都有很大帮助。
5. 常见问题与避坑经验
5.1 卡住最多的地方:环境、数据、Loss
先说说环境问题。我前面提到Ubuntu驱动装完没反应,这类问题在实际中出现频率极高,而且往往不是你操作有问题,是系统版本、驱动版本、GPU型号三者之间的兼容性坑。我的经验是:装驱动前先去NVIDIA官网查一下目标驱动的支持矩阵,装完先重启再验证,如果还是不识别,就去查Secure Boot设置。卡住半小时以内属于正常,超过两小时建议直接换一条路,比如用云GPU平台跑作业,先把作业完成再说,学习的节奏不能被环境问题打断。
数据问题是第二个高频点。很多作业第一步就让你下载数据,但数据集下载可能遇到网速慢、路径改变、文件损坏等意外。建议你养成一个习惯:任何作业先看数据目录结构和样例数据,把数据可视化出来,确认内容和格式是自己预想的,再开始写模型。我见过太多人在数据格式上栽跟头,明明模型和训练逻辑都没问题,跑出来的结果却一塌糊涂,最后排查半天发现是数据标签错了。
第三个点是训练时loss不降。这是深度学习里最经典的问题之一,基本排查顺序是:先检查代码里梯度传播是否正确——把模型输出和损失函数打印出来,看数值是否合理;再看学习率——损失基本不动用小数学习率,损失爆炸用大数学习率;接着检查数据预处理和标签是否对齐;最后考虑模型结构本身是否有问题。很多时候loss不降并不是bug,只是你还没找到合适的超参数范围。
5.2 学习心态上的三个坑
第一个坑叫“收藏等于学会”。B站收藏夹里躺着几百个视频,网页书签里存了几十篇教程,但真正看完的不超过十分之一。应对方法是给每个收藏的资源加上一个“计划完成时间”,比如“李宏毅2021课程7月底前刷完第一轮”,没有截止日期的收藏都是自我安慰。
第二个坑叫“只看不写”。机器学习是实践的学科,代码能力、调参手感只能在写代码和跑实验中获得。我见过有同学把李宏毅的PPT读了三遍,笔记整理得非常精美,但一到自己写模型就无从下手。我给这类同学的建议很简单:每个作业的starter code先自己看完再自己敲一遍,一个字母一个字母地敲,不要复制粘贴,敲的过程就是思考的过程。
第三个坑叫“贪多求快”。有人一上来就想学扩散模型、大语言模型这些当下最热门的方向,连反向传播都没搞明白。李宏毅课程安排的顺序已经是很合理的梯度了,按部就班比东一榔头西一棒子快得多。
5.3 少走弯路的几个实用习惯
最后分享几个我踩过不少坑之后沉淀下来的习惯。
第一,每跑完一个实验,立刻把实验配置和结果记录在表格里。深度学习实验变量多,不记录的话一周后你完全想不起来当初那个90%准确率的模型到底用了什么学习率。
第二,坚持用版本管理工具管理每一个作业的代码。哪怕只是自己一个人做,Git也能帮你随时回到能跑的版本,避免改坏了代码再也恢复不了。
第三,遇到报错信息先读完全全文再动手。很多初学者一看到红字就慌,直接复制到搜索引擎,其实错误信息后半段往往已经告诉了你解决方案,比如“shape mismatch”后面会把具体是哪两个维度不匹配都写出来,读完全文两分钟就能解决。
第四,善用调试工具查看中间张量的维度。深度学习代码80%的错误是维度不匹配,用调试工具在每个关键张量处打印shape,很快能定位问题。这也是为什么我会在代码的关键位置预留日志输出,配合调试工具来排查问题。
这套课我前后跟过不止一遍,每次重看都会有新的收获,但所有收获都建立在一个前提上:我不只是“看”,而是把视频、PPT、作业完整地走了一遍。学习机器学习没有捷径,但确实有更高效的路。把笔记当对话、把PPT当地图、把作业当练习场,这套闭环走下来,你收获的不只是知识,更是一套自学任何技术都通用的方法论。
本文还有配套的精品资源,点击获取