
简介本资源是李宏毅教授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笔记HW3RNNLSTM、序列建模吴恩达序列模型HW4Attention与TransformerSelf-Attention、多头注意力原版Transformer论文HW4GAN生成器、判别器、训练稳定性李宏毅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当地图、把作业当练习场这套闭环走下来你收获的不只是知识更是一套自学任何技术都通用的方法论。本文还有配套的精品资源点击获取