简介:这份PPT课件面向初学机器学习的人工智能专业学生与自学者,围绕“为什么学、是什么、怎么学”三条主线梳理课程入门框架,帮助读者在正式进入算法学习前建立整体认知。包内共1个pptx文件,约10.28MB,以幻灯片形式组织图文与案例,便于课堂讲授、自学浏览和复习串联。内容从人工智能的定义与三次发展浪潮切入,延伸到机器学习在人工智能研究领域中的位置,并归纳数据、模型、优化三个核心要素及先修课程与后续学习路径。已有165人学习,适合用作第一章导论、课程预习或知识框架搭建,快速把握机器学习的基本概念、发展脉络与学习方向。
1. 先别急着看公式:一份把机器学习讲成地图的讲义
第一次打开这份讲义的人,十个里有八个会被「三次浪潮」「假设空间」「条件概率分布」这些词劝退,然后默默关掉。其实你把它当成一张地图就好——机器学习这门学科太大,零基础的人最需要的不是马上会推导,而是先知道自己站在哪、前面有几条路、哪条路适合现在走。
这份讲义就是那张地图。它不讲公式推导,它只回答三个最朴素的问题:为什么要学、它到底是什么、接下来该怎么学。下面我按新手能跟得上的顺序,把它重新捋一遍,每讲完一个概念,就告诉你下一步手该往哪放。
2. 为什么值得学:从三次浪潮看懂机器学习的来路
2.1 先搞清楚它在你整条学习路线上的位置
很多人以为机器学习是一门孤零零的课,学完就完事。其实它卡在正中间:前面有一堆先修课垫底,后面有一堆方向从它身上长出去。讲义里把人工智能的研究领域列了十项——机器学习、专家系统、自然语言处理、智能决策系统、自动定理证明、人工神经网络、推荐系统、智能识别、机器人学、人工生命。你会发现机器学习排在第一个,而且后面十有八九都要用到它。手机相册自动认出人脸、输入法猜你下一句要打什么词、购物软件推给你一件「你可能喜欢」的东西,背后都是这套东西在工作。
打个比方,学人工智能有点像学做菜。高等数学、线性代数、概率论是刀工和火候,机器学习是炒出第一道能吃的菜,深度学习是操办一桌宴席,再往后才是各种专项应用。跳过刀工直接开宴席,大概率是油溅一脸。所以这门课的意义不在于它本身多高深,而在于它是你从「会写代码」走到「能做出智能的东西」之间那道必须跨过去的门槛。
先修要求讲义里写得很清楚:高等数学、线性代数、概率论、Python、C++。后续课程是深度学习、嵌入式人工智能、创新创业实践。看清楚这个箭头,你就知道自己不是在做无用功——现在补的每一块基础,后面都会直接换成能力。
2.2 第一次浪潮:让机器学会推理,然后撞了墙
上世纪五十年代中期,一场在高校里办的夏季研讨会被后来的人当成起点。当时的核心想法特别直觉:只要给机器推理能力,机器就能有智能。于是大家一窝蜂去做自动定理证明,做会自己改进的下棋程序,做专门处理符号的编程语言。成果确实有——有程序把一本数学名著里的定理一条条证了出来,这在当年是很震撼的事。
但这条路很快就走不下去了。最直接的原因是算力不够,机器跑不动那么复杂的推理。有个流传很广的例子:把一句英文来回翻译几次,意思就歪成了「酒是好的,肉变质了」。更致命的是理论上的打击——有研究者在一本小册子里指出,当时最热的一种模型连「异或」这种最基本的问题都解决不了。
什么是异或问题?你可以自己在纸上试一下:画四个点,两个画三角、两个画圆圈,位置摆成一个正方形,让同类点落在对角线上。现在请你画一条直线,把三角和圆圈分开。你会发现不管怎么画都分不开。这就是线性模型的死穴——它只能画直线(在高维空间里叫超平面),遇到这种「对角分布」就彻底没辙。
注意:这个「画不出直线」的小实验值得你亲手试一次。后面你学到的很多模型升级,本质上都是在想办法把这条「画不出来的直线」变成能画出来的曲线。
2.3 第二次浪潮:把专家脑子里的知识搬进机器
到了八十年代,思路换了一个方向。既然通用推理走不通,那就把领域专家脑子里的经验一条条写成规则,塞进计算机里——这就是「知识工程」,最出名的产物叫专家系统。某一类设备的故障诊断、某一类配置方案的生成,都被做成了这种系统。同一时期,神经网络方面的研究和反向传播算法也开始冒头,为后来的爆发埋了伏笔。
这一波的问题出在「人肉搬知识」这件事本身的成本上。请一个专家把经验讲清楚就已经很贵了,把经验翻译成规则更贵,规则写进系统之后还要不断维护。更麻烦的是知识一多就开始打架:这条规则说往左,那条规则说往右,系统自己也不知道该听谁的。企业投了很大代价,效果却对不上预期,于是又一次进入低谷。
站在新手视角,这一段历史最值得记住的教训是:靠人手工把知识喂给机器,天花板很低。这个教训直接催生了第三次浪潮。
2.4 第三次浪潮:换个思路,让机器自己从数据里找规律
第三次浪潮的关键转变,一句话就能说完:不再由人把知识总结好再教给机器,而是让机器自己从数据里把规律学出来。
这个转变能成立,靠的是四件事同时到位:算法有了演进,理论基础更扎实,数据量起来了,算力也跟上了。四者缺一不可——只有算法没有数据,模型学不到东西;只有数据没有算力,跑一次要等一个月。今天你能在手机上看到会写诗的虚拟助手、会下棋的程序、能自动分类的照片库,都是这四件事凑齐之后的结果。
讲到这里我想强调一句:这三次浪潮不是简单的技术进步史,而是三次「换思路」。第一次相信推理能解决问题,第二次相信知识能解决问题,第三次相信数据能解决问题。你现在要学的机器学习,就是第三次思路的产物——所以它的核心对象是数据,不是逻辑,也不是规则。记住这句话,后面所有概念都会顺很多。
2.5 该先补什么:给零基础的先修清单
讲义里列了五门先修课,但没告诉你每门课到底要会到什么程度。按新手最容易上手的路径,我把它拆细一点:
| 科目 | 具体要会的东西 | 学到什么程度够用 |
|---|---|---|
| 高等数学 | 导数、偏导、链式法则、梯度的直觉 | 知道「往哪个方向调整能让误差变小」就行 |
| 线性代数 | 向量、矩阵乘法、转置、矩阵形状 | 能看懂数据在计算机里就是一个矩阵 |
| 概率论 | 条件概率、贝叶斯公式、期望与方差、常见分布 | 能理解「模型输出的是一个概率」 |
| Python | 变量、循环、函数、列表与字典 | 能读写文件、能调用别人的库 |
| 工具库 | numpy、pandas、matplotlib | 能加载数据、看一眼数据长什么样 |
入门的话建议别按顺序死磕。我第一次学的时候就是想把高数从头看一遍,看了两周就放弃了。后来改成「先跑通一个例子,遇到不懂的数学再回头补那一小块」,效率高了不止一倍。线代和概率论可以边用边补,Python 则建议先花三五天把基础语法过一遍,不然你看不懂代码在干什么。
3. 到底什么是机器学习:一个公式拆成三块
3.1 把定义拆开:数据、模型、优化
讲义里给的定义是:机器学习的核心对象是数据,目标是提取数据特征,通过迭代抽象出数据的模型,发现数据中的知识(规律),最终做到对数据的分析或预测。
这段话读起来拗口,但拆开就三块。我把它写成一行:
机器学习 = 数据 + 模型 + 优化还是用做菜打比方。数据是你手里的食材,模型是你照着做的那道菜谱,优化是你尝一口觉得咸了、下次少放半勺盐的那个过程。三样缺一样都做不出菜:没好食材,菜谱再牛也白搭;没菜谱,食材只能烂在冰箱里;不尝味道,你永远不知道下次该改哪。
讲义里还提了一句「数据的多元化」:数字、文字、图像、视频、音频,以及它们的组合。这句话的意思是,不同类型的数据要用不同的模型去处理,别指望一套方法打天下。表格数据用树模型和线性模型往往就够,图像视频通常得上神经网络,文本又有自己的一套玩法。新手最容易犯的错,就是拿着一把锤子看什么都像钉子。
3.2 数据:口粮,也是新手最容易敷衍的一环
数据这块,你至少要建立三个概念。
第一是样本和特征。一行数据叫一个样本,一列叫一个特征。比如你要预测房价,每个样本是一套房,特征是面积、房龄、楼层、离地铁多远,标签是它卖了多少钱。特征是模型看到的,标签是模型要猜的。
第二是离散和连续。连续数据是可以切细的,比如身高 175.3 厘米;离散数据是一个个格子,比如「一线/二线/三线」这种分类。讲义里说「不同的数据类型对应不同的算法模型」,说的就是这件事——你喂给模型的东西长什么样,直接决定了你能用哪些模型。
第三是数据质量比模型选择重要。这句话在入门阶段听起来像鸡汤,但它会反复验证。同一个模型,喂干净数据和喂脏数据,效果能差出一大截。所以新手的第一课不是调参,是学会打开数据看一眼:有多少行多少列、有没有空值、数值范围是不是离谱、类别是不是严重不平衡。这个习惯越早养成越好,我自己就是踩过坑才记住的。
3.3 模型:从一堆散点里抽象出来的那根线
想象你在纸上画了一堆点,横轴是面积,纵轴是价格。点散得到处都是,但你能隐约看出「面积越大价格越高」的趋势。现在你要画一条线穿过这堆点,让它尽量贴近每一个点——这条线,就是模型。
讲义里提到了模型的几种常见形态:条件概率分布、决策函数、线性函数。名字吓人,意思很朴素。线性函数就是那条直线;决策函数是「给我一个输入,我告诉你是哪一类」;条件概率分布是「给我一个输入,我告诉你它属于每一类的可能性分别是多少」。三者说的其实是同一件事的不同侧面。
还有一个词叫假设空间。它的意思是:你先规定好「我要找的模型长什么样」,比如规定只能找直线,那所有可能的直线就构成了你的假设空间。优化就是在这个空间里挑一条最像样的。这个概念的用处是让你明白一件事——如果你的假设空间里根本没有「正确答案」,那再怎么优化也是白优化。这就是为什么选模型之前要先看数据。
3.4 优化:怎么知道哪根线更合适
线画出来之后,怎么判断画得好不好?得有一把尺子。这把尺子叫损失函数,它算的是「模型猜的」和「真实答案」差了多少。差得越小,说明这根线越贴合数据。
优化的过程就是不断调整模型参数,让这个差值变小。放到散点图上,就是那条线一点点挪位置、转角度,直到它看起来最贴合。
这里有个新手常踩的坑必须提前说:训练误差小,不代表模型好。如果你让线穿过每一个点,训练误差确实变成零了,但这条线一定弯弯曲曲、奇形怪状,来一个新点它照样猜错。这个现象叫过拟合。正确的做法是留一部分数据不参与训练,专门用来考试——模型在没见过的数据上表现好,才说明它真的学到了规律,而不是把答案背下来了。这个「考试」的动作,专业的说法叫泛化能力评估。
提示:入门阶段先建立一个直觉就够了——模型的目标不是「把已知的答对」,而是「把没见过的答对」。所有评估方法、正则化、交叉验证,都是在为这句话服务。
3.5 用「教小孩认猫」走一遍完整流程
概念讲完,我们用一件生活里的事把它们串起来。
你教一个三岁小孩认猫,不会给他讲「猫是哺乳动物,属于猫科」。你会指着照片说:这是猫。看多了,他自己就形成了判断。这个过程拆开,正好四步:
第一步,给照片。几十张、几百张猫的照片,各种角度、各种花色。这就是数据,照片是特征,「猫」这个答案是标签。
第二步,形成判断。小孩脑子里逐渐拼出一个模糊的印象:有尖耳朵、圆眼睛、胡须、毛茸茸。这个印象就是模型,虽然他自己说不清楚。
第三步,纠正错误。他把一只小老虎认成猫,你说「不是」。下次他就不那么认了。这个纠正的过程就是优化。
第四步,认新猫。邻居家一只他从没见过的猫,他看一眼就说是猫。这就是泛化。
整个流程走完,你会发现机器学习一点都不玄学。它做的事,就是把人类小孩学认猫的过程,用数据和计算模拟了一遍。区别只在于:机器需要看得更多、算得更狠,而且它不会自己问「为什么」。
4. 第一个例子怎么跑:二十行代码走完一次完整训练
4.1 动手前:环境准备只要三步
看再多概念,不跑一次代码,你心里始终没底。这一节我们把第一个例子跑通,全程二十来行。
第一步,装 Python。版本建议 3.10 以上,装的时候记得勾上「加入环境变量」那个选项,不然后面命令行找不到它。
第二步,装需要的库。打开命令行(Windows 上是 cmd 或 PowerShell,macOS 上是终端),敲这一行:
# 一次装齐四个库:数值计算、表格处理、机器学习算法、画图 pip install numpy pandas scikit-learn matplotlib这里解释一下这四个东西分别干什么。numpy 管数组和矩阵运算,是后面一切的地基;pandas 管表格数据的读写和清洗,你以后八成时间都在跟它打交道;scikit-learn 是算法库,常见的模型里面都有现成的;matplotlib 负责画图,让你能看见数据长什么样。装的时候如果下载慢,换个时间再试,不用折腾别的。
第三步,验证一下装没装上:
# 能打印出版本号,就说明装好了 import sklearn print(sklearn.__version__)注意:强烈建议给这个项目单独建一个虚拟环境,别把系统自带的 Python 环境搞乱。新手最常见的翻车方式之一,就是装了一堆库之后,发现另一个项目跑不起来了。
4.2 第一个能跑的例子:二十行代码走完一次完整训练
我们要做的是鸢尾花分类。这份数据是现成的,一共 150 朵花,每朵花量了四个尺寸:花萼长度、花萼宽度、花瓣长度、花瓣宽度。花分三个品种。任务就是:看着这四个尺寸,判断它属于哪个品种。
为什么选这个例子?因为它小、干净、结果好理解,而且完整走完了「数据 → 模型 → 训练 → 评估」全流程。你第一次跑通的东西,最好是能一眼看到结果的,不然容易失去信心。
# 第一步:把要用的工具搬进来 from sklearn.datasets import load_iris # 现成的鸢尾花数据 from sklearn.model_selection import train_test_split # 切分训练集和测试集 from sklearn.tree import DecisionTreeClassifier # 决策树模型 from sklearn.metrics import accuracy_score, confusion_matrix # 评估工具 # 第二步:拿数据 iris = load_iris() X = iris.data # 特征:150 行 4 列,每行是一朵花的四个测量值 y = iris.target # 标签:0、1、2,代表三个品种 # 第三步:切一刀,留三成当考卷 X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, # 三成拿去考试,七成用来学习 random_state=42 # 固定随机种子,保证每次切出来的一样 ) # 第四步:选一个模型,开始训练 model = DecisionTreeClassifier(random_state=42) model.fit(X_train, y_train) # 这一步就是「学习」,模型在找规律 # 第五步:拿考卷考试 pred = model.predict(X_test) # 注意:这里用的是没参与训练的 X_test # 第六步:对答案 print("准确率:", accuracy_score(y_test, pred)) print("混淆矩阵:") print(confusion_matrix(y_test, pred))跑完你会看到准确率,大概率在 0.93 以上,跑到 1.0 也不用惊讶——这份数据太干净了,属于入门福利。混淆矩阵是一个表格,行是真实类别、列是预测类别,对角线上的数字越大越好,非对角线上有数字就说明模型把某一类认成了另一类。
4.3 逐行拆开看:每一步到底做了什么
代码跑通了,但如果你不知道每一行在干嘛,等于白跑。我们一行一行过。
load_iris()是直接读现成的数据。真实项目里这一步会换成读 CSV 文件、读数据库、读图片文件夹,但接下来的流程是一模一样的。X是大写,习惯上表示特征矩阵,形状是 150 行 4 列;y是小写,表示标签向量,长度 150。
train_test_split是整段代码里最关键的一步。它的作用是把数据切成两份,一份给模型学,一份留着考。参数说明如下:
| 参数 | 作用 | 新手怎么设 |
|---|---|---|
test_size | 测试集占多大比例 | 0.2 到 0.3 都合理,数据少就设 0.2 |
random_state | 随机种子 | 随便填个整数,填了才能复现结果 |
shuffle | 切之前是否打乱 | 默认就是打乱,通常不用改 |
DecisionTreeClassifier是决策树。你可以把它想成一连串的判断题:「花瓣长度小于 2.45 吗?是的话往左走,不是往右走。」一路问下去,最后落到一个品种上。它最大的好处是可解释——训练完可以把这棵树画出来,你能看见它到底在问哪些问题。
fit就是训练,也就是「学习」这个动作。predict是拿新数据去猜。这两个方法名你以后会见到无数次,几乎所有模型都叫这两个名字,记住它们等于拿到了一把万能钥匙。
最后accuracy_score算的是「猜对了多少个,占总数的多少」。这是最直观的评估指标,但它不是万能的——如果三类里有一类占了九成,模型全猜这一类也能有九成准确率,实际上啥也没学到。所以后面还要学精确率、召回率、F1 这些指标。
4.4 跑通之后该改什么、看什么
第一个例子跑通不算完,真正的学习从「改一改」开始。以下四件事,建议你今晚就动手试一遍。
第一,把test_size从 0.3 改成 0.1,再改成 0.5,看准确率怎么变。你会发现数据少的时候波动很大,这就是为什么小数据集上的评估结果不能太当真。
第二,换一个模型。把决策树换成 K 近邻,只改两行:
from sklearn.neighbors import KNeighborsClassifier # n_neighbors 的意思是「参考最近的几个邻居来投票」 model = KNeighborsClassifier(n_neighbors=3) model.fit(X_train, y_train) pred = model.predict(X_test) print("KNN 准确率:", accuracy_score(y_test, pred))跑完对比一下两个模型的准确率。你会发现同一份数据,不同模型效果不一样——这正是「没有最好的模型,只有最合适的模型」这句话的来源。
第三,给决策树加个深度限制:DecisionTreeClassifier(max_depth=2)。深度越小,模型越简单,越不容易过拟合,但可能学得不够。这个参数你在调参时会反复用到。
第四,故意搞点破坏。把某几行数据的特征改成特别离谱的值,或者把标签打乱,再跑一次,看准确率掉成什么样。做完这一步,你会对「数据质量决定上限」这句话有切身体会。
提示:跑例子的时候别怕报错。新手阶段遇到的报错,八成是三类:库没装、包没导入、数据形状对不上。读报错的最后一行,通常就能找到答案。
5. 新手避坑:五个最容易翻车的地方
5.1 坑一:把机器学习当成写 if-else
现象:拿到任务第一反应是「我来分析一下规则,然后写成判断语句」,写了一百行 if-else,发现规则越加越多,加到最后自己都理不清。
原因:这种思路还停留在第二次浪潮的「知识工程」阶段——靠人把知识总结出来再教给机器。它的问题在历史上已经验证过了:成本高、规则会打架、维护不下去。
解决:换个问法。不要问「我该怎么判断」,要问「我手上有没有历史数据,能不能让模型自己去找规律」。如果实在没有数据,那这个问题可能压根不适合用机器学习做,用规则反而更省事。判断标准很简单:数据量大、规律复杂、人说不清楚但能举出例子——这三条满足两条以上,才值得上模型。
5.2 坑二:数据不看一眼就开始调模型
现象:拿到数据直接fit,准确率不好就换模型、调参数,折腾一整天,从 0.71 调到 0.73,累得半死。
原因:把「模型选择」当成了主要矛盾。实际上大部分项目的天花板是数据定的,不是模型定的。数据里有大量空值、异常值、重复行,再好的模型也救不回来。
解决:强制自己做一遍「数据体检」,就四件事——看形状(多少行多少列)、看空值(哪些列缺)、看分布(数值范围是不是离谱)、看标签(类别是不是均衡)。这四步花不了十分钟,但能省下你半天时间。我第一次学的时候就是跳过这步直接调参,血泪经验。
5.3 坑三:拿训练集当考卷
现象:训练完直接在原数据上评估,准确率 0.99,兴奋地以为自己做出了一个神模型。换个新数据一跑,掉到 0.6。
原因:模型把训练数据的答案背下来了,包括里面的噪声。这就是过拟合。训练集上的高分是假象,因为模型已经见过答案了。
解决:从第一天起就养成切分数据的习惯,train_test_split那行代码永远别省。数据量够的话,切三份:训练集学、验证集调参、测试集最后考一次。测试集在最后评估之前绝对不许碰,碰了就不准了。这条纪律比任何调参技巧都重要。
5.4 坑四:一上来就啃深度学习
现象:刚学完几个概念,就去找深度学习的教程,装框架、跑模型,结果环境配了三天,报错看不懂,最后放弃。
原因:跳过了中间的台阶。深度学习是机器学习的下游,它依赖的那些概念——损失函数、梯度下降、过拟合、训练集验证集——全在机器学习这门课里。地基没打就去盖三楼,摔下来是必然的。
解决:老老实实按顺序走。先把线性回归、逻辑回归、决策树这三个模型吃透,能说清楚它们在干什么、什么时候用哪个;再把评估方法搞明白;然后才碰神经网络。这个顺序看起来慢,实际上是快的。
5.5 坑五:只看代码不看结果
现象:代码跑通了,看到输出了一个数字,就直接进入下一节。问他这个数字意味着什么、好在哪、差在哪,答不上来。
原因:把「跑通」当成了目标。但跑通只是起点,真正的信息在结果里——哪些样本被分错了、错在什么地方、是不是某一类特别差。
解决:每次跑完都多问三句:这个指标是什么水平(跟瞎猜比、跟简单规则比)?错的是哪些样本(看混淆矩阵)?如果我要改进,最该动的是数据还是模型?养成这个习惯,你的进步速度会比只看教程的人快好几倍。
6. 下一步学什么:从这份讲义往后走的路线图
讲义看完了,例子也跑通了,接下来最怕的就是「不知道往哪走」,然后开始漫无目的地刷视频。给你一条我验证过、新手能走得通的路线,按顺序来。
第一站,把三个基础模型吃透:线性回归、逻辑回归、决策树。不要贪多,就这三个。每个都问自己四个问题:它解决什么问题、它的输出长什么样、它有什么参数可调、它什么时候会失效。这一站大概花两到三周。
第二站,把评估方法学明白。交叉验证、混淆矩阵、精确率与召回率、ROC 曲线。这一站很多人跳过,但它决定了你后面能不能判断自己做的到底有没有用。一周足够。
第三站,无监督学习入门:聚类和降维。KMeans 和 PCA 各跑一个例子就行,知道它们能干什么。
第四站,才是神经网络和深度学习。到这一步你会发现,前面三站积累的概念几乎全都能直接搬过来用——损失函数还是那个损失函数,过拟合还是那个过拟合,只是模型复杂了。
给一个更具体的周节奏参考:
| 阶段 | 时间 | 要做完的事 |
|---|---|---|
| 第 1 周 | 5 到 7 天 | 补 Python 基础,跑通第 4 章的例子,改参数看变化 |
| 第 2 到 3 周 | 两周 | 线性回归 + 逻辑回归,各找一个真实小数据集练手 |
| 第 4 周 | 一周 | 决策树 + 评估方法,学会看混淆矩阵 |
| 第 5 周 | 一周 | 聚类和降维各跑一个例子 |
| 第 6 周起 | 视情况 | 再决定是往深度学习走,还是往某个应用方向走 |
另外补一句关于数学的建议。不要一上来就抱着教材从头啃,那样大概率半途而废。正确的姿势是「用到哪补哪」:学线性回归的时候遇到梯度,就回头把导数和偏导看一遍;学逻辑回归的时候遇到 Sigmoid 和概率,就把条件概率补一补。带着问题去补,吸收率完全不一样。
还有个小技巧:每学一个模型,试着用一句大白话把它讲给完全不懂的人听。讲得出来,说明你真懂了;讲不出来,说明你只是记住了代码。这个方法我用到现在,每次卡壳的地方,往往就是我没真懂的地方。
我第一次系统地学这套东西的时候,最大的教训是太急着看结果,数据不看、评估不做,模型跑出一个高分就以为大功告成。后来在一个真实项目上栽了个大跟头,才发现那些被我省掉的步骤,恰恰是决定成败的部分。从那以后我每跑一个模型,都强制先看一眼数据长什么样、再检查一遍测试集有没有被污染,最后才敢看指标。这个笨办法救过我很多次。
希望帮到你。
本文还有配套的精品资源,点击获取