尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

李宏毅机器学习深度学习笔记与作业实战:从入门到精通的完整路线

李宏毅机器学习深度学习笔记与作业实战:从入门到精通的完整路线 简介本资源是李宏毅教授2021年机器学习与深度学习课程的完整配套学习材料面向AI初学者及进阶学习者系统解决理论理解难、代码实践弱、作业无参考等核心痛点。压缩包共312.61MB包含PPT讲义、手写/整理版笔记、课后作业题目与参考解答含代码实现与结果分析覆盖监督学习线性/逻辑回归、SVM、决策树、无监督学习K-means、PCA、强化学习Q-learning及深度学习主流模型CNN、RNN/LSTM、GAN、VAE等关键内容并深入讲解梯度下降、反向传播、正则化、模型评估与PyTorch/TensorFlow实战技巧。目前已有2600人学习下载资料结构清晰、知识点层层递进每部分均配有原理图解、公式推导与可运行代码片段特别适合自学巩固、课程复习与项目复现。 李宏毅老师的《机器学习》课程在机器学习入门圈里几乎是一块绕不开的跳板。去年我给自己定了一个目标把2021 Spring那版课程完整啃下来而且不只是“看”要把PPT逐页消化成自己的笔记把每次作业都跑通、调优、写清实验记录。整理这份“李宏毅2021机器学习深度学习笔记PPT作业”的过程前后花了大概三个月最后沉淀下来的笔记、代码和踩坑记录成了我后来面试、做项目和期末复习最顺手的一份资料。这篇文章不打算复述课程内容而是把这套“学习一个项目”的思路完整拆开为什么这门课值得精读、笔记怎么整理才不算白写、作业如何从“跑通”到“跑好”以及遇到环境问题和概念瓶颈时怎么排查。无论你是刚准备入门的萌新还是已经刷过几遍视频但总觉得没吃透的进阶学习者这篇内容应该都能给你一些可落地的参考。1. 李宏毅2021这版课为什么值得下一份笨功夫先给结论如果你只能选一门课来建立机器学习的地基李宏毅这门课是投入产出比最高的选择之一。它和吴恩达、周志华、《动手学深度学习》这些资源的最大区别不在“难易”而在“视角”。李宏毅的讲解方式是先给你一个直觉再用数学把直觉压实最后配上可视化的实验结果让你看到模型到底在干什么。这正好对应了大多数人学机器学习时的真实困境概念都懂代码也能抄但遇到一个新任务就不知道从哪下手。而这门课从头到尾都在训练你“看见问题—选择模型—迭代改进”的思维方式。1.1 课程主线与内容分层2021 Spring这版课除去开头的课程导览和工具介绍大致可以分成几个阶段。第一个阶段是机器学习基础重点是线性回归、逻辑回归、分类问题以及最核心的“损失函数梯度下降”框架。这个阶段很多人会觉得简单但李宏毅会在里面埋一个关键问题为什么梯度下降能work它不仅讲了反向传播的直觉版本还把误差表面的形状、局部最小值与鞍点的区别讲得很清楚。我在笔记里反复写过一句话机器学习模型不是魔法它的本质就是“定义损失函数然后在参数空间里找低点”。第二个阶段进入深度学习主线从深度神经网络的结构、激活函数、Dropout、Batch Normalization到CNN、RNN、Self-Attention、Transformer再到GAN、自监督学习、BERT这类前沿主题。2021版相比更早的版本明显加重了Self-Attention和Transformer的占比这也符合这两年NLP和视觉领域的发展趋势。可以说学完这个阶段你再看近两年的模型论文至少不会被架构图吓住。第三个阶段是专题探讨包括可解释性AI、对抗攻击、异常检测、强化学习、模型压缩等。李宏毅对这些专题的处理方式是给足直觉和代表性方法不深入每一个数学细节但会让你明白这个子领域在解决什么问题。我当时把强化学习部分单独拉出来做了十页笔记因为这块光看视频容易“懂”但自己做题和写代码时经常转不过弯。所以第一件需要明确的事情是这门课不是一门“看了就懂”的科普课它是一门“需要跟着动手”的工程课。光刷视频效果大概只有完整做笔记加作业的三成。1.2 为什么只看视频远远不够很多人会觉得李宏毅课程在B站上都有现成字幕和笔记自己没必要再整理一份。我一开始也是这么想的直到我合上视频尝试不看任何材料复述“Self-Attention的Q、K、V到底在算什么”时发现自己只能说出一个模糊的影子。这就是我后来坚持要自己整理PPT的主要原因李宏毅的PPT信息密度非常高很多关键结论藏在动画切换里、图表注记里、甚至口播的闲话里。举个具体的例子讲CNN卷积核的时候他用了一个猫狗的图片识别案例PPT上叠了好几层卷积核响应图如果只看最终页面你很容易忽略“不同层卷积核学到的是不同粒度的特征”这个核心结论。把这个观察用自己的话写进笔记比在视频下面留一句“学到了”有用得多。另外整理笔记本身也是一种主动回忆。心理学上有个“测试效应”你从记忆里往外提取信息的动作比反复阅读更能加深记忆。所以我的建议非常明确视频是输入笔记是加工作业是验证三者缺一不可。2. 我的笔记整理法不是抄PPT是给未来的自己留接口笔记如果只做“PPT复读机”那整理得再漂亮也没用。我在做这份项目笔记时给自己定了一个标准三个月后的我能不能只看笔记就完成一次期末复习或者直接上手写一个类似模型为了达到这个标准我把每章笔记拆成了三层结构。2.1 三层笔记结构概念、推导、实验第一层是“概念卡”解决“这个模型是什么”的问题。我用大白话把每个模型的核心思想压缩成两三句话然后补充一个生活类比。比如池化笔记里写的是“把一张大图缩小但保留主要特征相当于看照片时先眯起眼睛只看轮廓省内存还能防过拟合”。再比如Transformer的自注意力我的类比是“让每个字都去看一眼整句话再决定自己接下来怎么表达”。类比不一定完全严谨但能帮你在第一遍接触时快速建立心理模型。第二层是“推导页”解决“为什么是这个公式”的问题。这里不需要把所有数学推导都抄一遍但至少要亲手把关键链条推一遍。以CNN为例我会把卷积运算的输入输出尺寸公式、感受野的计算、Padding和Stride对特征图的影响全部手写一遍。这个过程很耗时间但非常值得很多你在面试里被问到的“基础题”比如“为什么CNN比全连接层更适合图像”本质都是在考察你有没有亲手算过这些尺寸变化。第三层是“实验记录”解决“这个模型实际跑起来是什么样”的问题。每学完一个模型我都会找一个最小数据集跑一次训练把损失曲线、准确率、参数量、训练时间记录下来。这部分内容虽然一开始看起来像流水账但当你后面调参时它就是最宝贵的对照基线。2.2 每个模型都要有一张“一句话解释”李宏毅课程最大的特点就是模型多、变体多从Perception到CNN到RNN到Attention到BERT如果不做整理很容易混成一锅粥。我的办法是每学完一个模型强制自己写一张“一句话解释”卡片格式是这样的它解决什么问题比如RNN是为了处理变长序列但它有长距离依赖问题它的核心改动是什么比如Self-Attention用两两相似度替代了循环结构的顺序依赖它的主要代价是什么比如Self-Attention是O(n²)复杂度所以长文本上要用窗口化或者近似方法它和上一个模型的关系比如Transformer是“去掉RNN的Seq2Seq”BERT是“只取Transformer Encoder的预训练模型”只要这张卡片能写出来并且能用一句话说给一个完全不懂的人听就说明这个模型真的过了脑子。很多人在面试或考试时表现不好不是因为没学过而是没有完成这种“压缩输出”的步骤——脑子里知识是一团毛线当然扯不出清晰的答案。2.3 补哪些PPT之外的东西PPT是骨架但有些东西PPT不会给你需要自己往外延伸。首先是数学基础。李宏毅的课对数学的要求不算高但梯度下降、链式法则、矩阵求导这些如果你不熟中间有些推导就会卡住。我当时把微积分和线性代数里跟机器学习相关的部分过了一遍这里没有推荐更多就是想强调一件事缺什么补什么不用系统啃一本数学书遇到不懂的公式再回去查对应章节效率最高。其次是论文阅读。课程里会引用一些经典论文比如Transformer的《Attention Is All You Need》GAN的原始论文等。我不要求自己全读懂但会把摘要和核心图截下来放进笔记作为“这个模型的下一个为什么”的索引。这样做的好处是当你后续做深度学习实战项目需要了解一个陌生模型时已经有了一套从论文中提取核心信息的习惯。最后是把作业要求和评分标准贴在笔记里。李宏毅课程的作业通常有详细的功能要求、提交格式和强baseline分数这些信息是课程设计者想让你掌握的能力清单比任何课程大纲都更接近“考试重点”。3. 作业环节从“能跑通”到“跑得好”的必经之路如果把看视频和做笔记比作学游泳时的陆地动作练习那么作业就是真正跳进泳池的那一下。李宏毅这门课的作业设置非常精心每个作业都对应一个核心技能点而且是递进式的前一个作业的模型往往会被后一个作业当作基础模块来用。所以我的第一个建议是不要跳作业尤其是不要跳过看起来“简单”的前几个。3.1 作业的递进逻辑与训练目标2021版的作业体系我记得是从回归、分类这类基础任务开始逐步过渡到CNN图像分类、Seq2Seq/注意力机制、生成模型等更复杂的任务。每个作业虽然都有自己的技术主题但训练的目标其实是几项通用能力数据处理能力如何把原始CSV、图片、文本变成模型能吃的张量模型搭建能力基于PyTorch或TensorFlow搭出一个能训练的模型类训练循环能力前向传播、反向传播、梯度更新、验证集评估这一整套流程排错能力维度不匹配、设备不一致、梯度爆炸、过拟合这些坑几乎每个作业都会出现做作业的时候我会额外给自己加一个要求不只用助教给的baseline代码跑通还要尝试自己修改模型结构或者超参数让分数尽量往上涨。能不能涨分不是最重要的重要的是这个过程逼着你去理解“为什么这个改动会有效”。3.2 一个通用训练流程模板这里分享一套我每次做作业都会走的流程算是从踩坑里沉淀出来的肌肉记忆。第一步先不急着写代码先把数据下载下来看一遍样例。用DataLoader加载之前我会先打印几条样本确认通道数、尺寸、标签格式对不对。这一步能挡掉一多半的“莫名其妙的维度错误”。第二步搭一个最简单的小模型作为baseline比如两三层卷积或一个线性层先让它在小批量数据上跑通。注意这里有个很重要的验证技巧如果模型在十几个样本上都无法过拟合那大概率是代码有bug而不是模型容量不够。我见过很多新手直接拿大模型去跑全量数据训练半天发现损失纹丝不动最后查出来是标签错位白白浪费几个小时。第三步在验证集上做完整评估。很多人只盯着训练集损失但作业和真实项目一样更关心的是泛化表现。我习惯在每个epoch结束时计算一次验证集的准确率或者损失并记录下来方便后面画曲线对比。第四步调参。常规顺序是先确定学习率再调整batch size然后是模型层数或卷积核数量最后才考虑数据增强和正则化。我自己的经验是学习率的问题出现得最频繁设太大会loss爆炸设太小会训练慢得让人怀疑人生。一个可用的排查方法是先跑三五个epoch观察loss的初始下降速度如果前几十步loss几乎没动就把学习率往上调十倍试一次。3.3 我在作业里踩过的具体坑这部分可能是对大家最直接有用的内容。我在做作业和后来帮朋友调试代码时反复遇到过几个问题。第一个是数据集路径。这个听起来很蠢但真的会卡住新手很久。Windows和Linux的路径分隔符不一样如果用绝对路径写死别人拿到你的代码就跑不了。我后来统一用Path对象或者相对路径组织数据顺手把数据缓存也放到项目目录下避免每次启动都重新下载。第二个是GPU显存溢出。图像类作业最常遇到一张卡只有8G或12G显存Batch Size设成64可能瞬间爆掉。解决办法不是直接把Batch Size调小到2而是先检查输入图片尺寸有没有归一化到合理范围比如224x224的图会不会被缩放成512x512再看模型是否有不必要的超大中间特征最后才考虑梯度累积模拟大batch trick。第三个是随机种子。深度学习训练涉及大量随机性如果不固定随机种子同样代码两次跑出来的结果可能差很大。我一开始没注意结果调参时很困惑同一个参数上一次分数很高重新跑一次就跌了。后来我会在代码开头固定torch.manual_seed、numpy.random.seed和random.seed如果用了GPU还要设置torch.cuda.manual_seed_all。这个习惯在比赛和作业中都极其有用。第四个是过拟合与早停。作业里给的训练集通常不大模型很容易在训练集上冲到98%准确率验证集却卡在85%。这一点在CNN和Transformer作业里尤其明显。我的处理方式是加Dropout、加权重衰减、做数据增强同时用“验证集指标不升反降就停止训练”的早停策略。早停逻辑实现起来很简单但对最终分数影响非常大。4. 课程之外的配套资源吴恩达、周志华、动手学深度学习怎么配合很多人学李宏毅课时会有个疑问我已经在跟他的课了还需要看吴恩达吗还需要翻周志华的西瓜书吗我的答案是需要但不是全部看而是各取所长、做交叉引用。这里我根据自己的实测体验帮你梳理一下几套资源的分工。4.1 几套主流资源的分工与选择资源强项适合用途我的配合方式李宏毅《机器学习》直觉讲解、覆盖前沿、PPT可视化好建立整体认知、入门深度学习主线课程做笔记和作业吴恩达《机器学习》/《深度学习》专项课程基础概念扎实、数学通俗、配套测验打基础、补概念盲区遇到“为什么用逻辑回归做分类”这类基础问题回去看周志华《机器学习》西瓜书理论体系完整、算法推导严谨深入推导、期末复习、面试理论当作公式字典遇到推导卡壳时按图索骥《动手学深度学习》代码完整、实现风格现代实战代码、框架API补强配套参考每个模型的PyTorch实现直接借鉴很多人觉得资源看得越多越好其实不是。我见过一位同学把三套课的视频全部刷完最后还是写不出一段完整的训练代码。问题的根源在于他一直在“输入”从来没有“输出”。我的建议是以李宏毅为主课主课里提到一个概念先去理解如果觉得没吃透再根据是“数学推导”还是“代码实现”分类去查其他资源。这样每套资源都是在解决你当前的具体问题时才出现效率最高。4.2 从热搜词反推学习重点我注意到很多人在搜索“机器学习期末复习”“机器学习知识点”“深度学习知识点”这类词说明大家最焦虑的是知识体系太散、记不住。这一点我感同身受。李宏毅课的PPT动辄几百页如果从头翻到尾去复习基本等于打仗没带地图。我的做法是把期末复习拆成三个层次。第一层是“列举题”把所有模型名字列出来比如线性回归、逻辑回归、朴素贝叶斯、SVM、决策树、随机森林、CNN、RNN、Transformer、GAN、BERT等等然后给每个模型写一句话定义。这一层能快速撑起整张知识地图。第二层是“对比题”两个模型放到一起问区别和联系比如“CNN和Transformer在图像任务里各自的优势是什么”“RNN和Self-Attention谁更适合长序列”。这种对比题是考试和面试的高频题型平时做笔记时就应该顺手把对比维度整理出来。第三层是“流程题”问你一个完整任务的机器学习应用流程比如“给定一批图片怎么做图像分类”。这时候你要能说出从数据采集、清洗、划分、模型选择、训练、评估、调参到部署的完整链路。这三层能cover住大部分期末复习和面试准备。4.3 善用中文社区的优质笔记现在网上已经有很多人分享过李宏毅课程的笔记包括一些深度学习的笔记网站和GitHub仓库。我的态度是可以看但不要直接拿别人的笔记当自己的复习材料。因为笔记的价值不在于信息而在于信息和你已有知识结构的连接方式。别人觉得需要重点标注的地方未必是你薄弱的地方。我自己的习惯是每章自己先整理一版然后去找一两份高质量的中文笔记做对照看看别人有没有提到我遗漏的点。比如我在整理BERT那章时最初笔记里完全没提“Tokenization”的细节后来看一位博主的笔记里写了不同分词方法的对比才回去补上了这块内容。这种“用别人笔记当镜子”的方法比单方面输入高效得多。5. 环境配置与训练实战的坑从Ubuntu到PyTorch讲完资料和笔记必须得说说实操环节最磨人的一块环境配置。别小看这一步很多人就是从“装环境”开始放弃的。我当年第一次配Ubuntu深度学习环境折腾了整整两天显卡驱动装了又删、删了又装最后才发现问题出在版本不匹配上。5.1 Ubuntu下深度学习环境配置的要点现在很多人拿到新机器或者新服务器第一反应是装Anaconda、装PyTorch然后测试import torch。这一步没问题但GPU支持通常没那么简单。如果你是Ubuntu 22.04或24.04装驱动之后发现nvidia-smi没反应这几乎是最常见的问题。我的排查路径是这样的先确认显卡型号用lspci | grep -i nvidia看系统能不能识别到硬件查当前内核版本uname -r很多驱动装不上是因为内核版本太新或太旧查看驱动安装状态dpkg -l | grep nvidia如果装过多个版本建议先彻底清理干净再重装最关键的一步用官方推荐的ubuntu-drivers devices命令查看推荐驱动版本不要自己去官网随便下很多“驱动装完没反应”的情况其实是因为Secure Boot开启了导致驱动签名没过系统启动时根本没有加载。解决方法是进BIOS关掉Secure Boot或者在安装驱动时进行签名注册。这个问题在我帮同学排查时出现了至少三次网上教程写得比较分散很容易漏掉。5.2 深度学习框架版本搭配驱动问题解决之后还有一套版本搭配需要留意。我平时喜欢把Python环境管理好用conda创建独立环境再根据CUDA版本安装对应的PyTorch。这里有个经验不要一上来就装最新版尤其是PyTorch和CUDA的搭配最新版往往需要最新的驱动而你的GPU可能比较老反而不稳定。以我自己的一个项目为例一台显卡比较老的工作站我最终用的是CUDA 11.8 PyTorch 1.13的稳定组合。如果你拿到的环境是全新的Ubuntu 22.04显卡也比较新装CUDA 12.x反而更顺。所以配置环境的唯一原则就是“以官方兼容矩阵为准不要自己混搭”。装好后记得跑一个最小GPU测试import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0))如果cuda.is_available()返回True再跑一个简单矩阵乘法确认GPU真的在参与计算。我遇到过print出来是True但训练时模型还在CPU上的情况原因是没有显式调用.to(cuda)。这一条一定要写进自己的checklist。5.3 常见训练异常当模型不按预期工作时环境只是前提训练过程中还会遇到很多“玄学”问题。分享几个我统计下来最高频的异常及其排查思路。损失不下降先看数据有没有归一化再看学习率然后检查模型最后一层有没有接正确的激活函数。如果回归任务最后一层用了sigmoid损失大概率会卡住。损失变成NaN常见原因是学习率过大或者数据里存在NaN/Inf还有一个容易被忽略的是标签类别数小于模型输出维度导致CrossEntropyLoss里面出现无效运算。训练集和验证集表现差异大这个基本是过拟合先加正则化再看数据划分有没有随机化。我在一次作业里就踩过数据泄漏的坑——数据按类别顺序排列划分时又没打乱导致验证集全是某一类模型直接崩溃。显存溢出除了减小batch size还可以考虑使用混合精度训练或者用torch.cuda.empty_cache()释放缓存。此外注意模型是否在验证阶段也保留了梯度如果验证时不加torch.no_grad()显存会白白翻倍。6. 三个月完成度复盘我给后来者的学习节奏建议文章最后很多朋友会问我如果现在从零开始到底应该怎么安排时间这里我给一套比较可执行的节奏按每天1.5到2小时、周末加码来算大概三个月能完成“基础深度学习作业”这条主线。第一到第三周主攻机器学习基础完成回归和分类相关的作业。这段时间先不要碰深度学习把梯度下降、过拟合、评估指标这些概念吃透。我见过不少人第一周就急着看Transformer结果学到后面又回来补基础的。基础不牢后面的每一步都会走得晃。第四到第六周进入深度学习和CNN完成图像相关作业。这段时间要开始动手写模型了不要只看视频。PyTorch的基础操作要在这一阶段彻底熟练包括自定义Dataset、DataLoader、模型构建和训练循环。如果代码写得还磕磕绊绊说明你看得太多、动手太少。第七到第十周攻Self-Attention、Transformer、预训练模型这部分。这是2021版课程的重头戏也是最值得花时间的一段时间。建议把相关论文摘要和核心图表贴进笔记并对照《动手学深度学习》里的Transformer实现来理解。最后两三周完成剩余作业做一次整体复习。复习时就用前面说的三层检法列举所有模型、对比相近概念、串讲完整流程。如果这三层都能流畅完成这门课的收获就真正内化成你自己的能力了。最后再分享一个小技巧我每章笔记的最后一页都会写一个“TODO”清单记录“这个模型我还没完全搞懂的问题”“下一步想试的实验”。这个习惯让我的学习和复习始终有方向感不会学着学着就变成漫无目的地刷视频。希望这份整理思路能帮你在机器学习这条路上走得更稳一点少踩一些我曾经踩过的坑。本文还有配套的精品资源点击获取
返回列表