机器学习如何入门?AI/ML/DL概念与建模流程全景
关键词:机器学习、人工智能、深度学习、特征工程、scikit-learn
目录
- 写在前面
- 一、AI、ML、DL:三个概念到底是什么关系
- [1 人工智能:让机器"像人一样行动"](#1 人工智能:让机器"像人一样行动")
- [2 机器学习:不写规则,让机器自己学](#2 机器学习:不写规则,让机器自己学)
- [3 深度学习:用多层神经元逼近万物](#3 深度学习:用多层神经元逼近万物)
- [4 三者的包含关系](#4 三者的包含关系)
- [5 基于规则的学习 vs 基于模型的学习](#5 基于规则的学习 vs 基于模型的学习)
- 二、机器学习用在哪?又是怎么发展到今天的
- [1 应用领域](#1 应用领域)
- [2 发展史:三次浪潮](#2 发展史:三次浪潮)
- [3 数据、算法、算力三要素](#3 数据、算法、算力三要素)
- 三、绕不开的术语:样本、特征、标签与数据集划分
- [1 样本、特征、标签分别指什么](#1 样本、特征、标签分别指什么)
- [2 为什么要划分训练集和测试集](#2 为什么要划分训练集和测试集)
- 四、算法分类:监督、无监督、半监督、强化学习
- [1 有监督学习:分类与回归](#1 有监督学习:分类与回归)
- [2 无监督学习:没有标签怎么学](#2 无监督学习:没有标签怎么学)
- [3 半监督学习:少量标注撬动大量数据](#3 半监督学习:少量标注撬动大量数据)
- [4 强化学习:靠奖励试错出策略](#4 强化学习:靠奖励试错出策略)
- 五、机器学习建模流程的五个步骤
- 六、特征工程:为什么说它决定模型上限
- [1 特征工程是什么](#1 特征工程是什么)
- [2 特征提取](#2 特征提取)
- [3 特征预处理](#3 特征预处理)
- [4 特征降维](#4 特征降维)
- [5 特征选择](#5 特征选择)
- [6 特征组合](#6 特征组合)
- 七、模型拟合问题:欠拟合、过拟合与泛化
- [1 三种拟合状态](#1 三种拟合状态)
- [2 产生原因与处理策略](#2 产生原因与处理策略)
- [八、开发环境:scikit-learn 快速上手](#八、开发环境:scikit-learn 快速上手)
- 常见问题
- [和 AI 大模型开发的关系](#和 AI 大模型开发的关系)
- 总结
写在前面
前面几个阶段,我们把大模型应用开发的"上层建筑"搭得差不多了:本地部署过 Ollama、写过 Python 调用大模型 API、在 Coze 上编排过工作流、也完整拆解过一个 AI 面试助手项目。但有一个问题始终绕不开------大模型为什么能理解语言?微调到底在调什么?RAG 检索回来的内容凭什么能影响生成结果?
这些问题的答案,全都埋在"大模型核心开发技术"这一层里:NLP 基础任务、机器学习、深度学习、Transformer、BERT、LangChain。从这篇开始,我们往下挖地基,第一站就是机器学习概述------把 AI、ML、DL 三个天天挂在嘴边的词彻底分清,把样本、特征、标签、训练集这些术语一次性讲透,再走一遍完整的建模流程。这些概念后面讲线性回归、Transformer、模型微调时会反复出现,值得先打牢。
一、AI、ML、DL:三个概念到底是什么关系
1 人工智能:让机器"像人一样行动"
人工智能(Artificial Intelligence,AI)的定义可以浓缩成一句话:研究如何构造能"智能行动"的计算系统。注意这里有两个维度:
- 像人一样思考:模拟人类的推理、决策过程;
- 像人一样行动:表现出合理的、有目标的行为。
所以 AI 是一个学科/目标,而不是某种具体技术。下棋程序、推荐系统、聊天机器人,只要表现出"智能行为",都算 AI 的研究对象。
2 机器学习:不写规则,让机器自己学
机器学习(Machine Learning,ML)的经典定义来自 Arthur Samuel:
让计算机在没有被明确编程的情况下具备学习能力的研究领域。
对比一下人类和机器识别"车"的过程就清楚了:
- 人类:看过很多车,归纳出"有四个轮子、有车身、能载人"之类的规律,见到新图片时套用规律判断;
- 机器学习 :给机器大量带标注的图片,让它从数据中自己归纳规律,见到新数据时输出预测。
关键词是"从数据中学习"------规律不是程序员写死的,而是算法从样本里拟合出来的。
3 深度学习:用多层神经元逼近万物
深度学习(Deep Learning,DL)是机器学习的一个分支,核心思想是仿生:用一层一层的"神经元"组成深度神经网络去模拟人脑处理信息的方式。层数越深,能表达的函数越复杂,这也是"深度"二字的由来。
4 三者的包含关系
一句话记住:机器学习是实现人工智能的一种途径,深度学习是机器学习的一种方法。
人工智能(AI)
└── 机器学习(ML):从数据中学习
└── 深度学习(DL):用深度神经网络学习
5 基于规则的学习 vs 基于模型的学习
理解了 ML 的定义,再看两种"让程序做预测"的路线对比:
基于规则的学习:程序员凭经验手写 if-else。比如判断邮件是不是垃圾邮件:
python
def is_spam_by_rules(subject: str) -> bool:
# 规则完全由人工维护,命中即判为垃圾邮件
if "中奖" in subject or "免费领取" in subject:
return True
return False
这类方法在简单场景够用,但遇到图像识别、语音识别、自然语言处理这类问题就失效了------以"识别大象"为例,实物大象、雕塑、绘画里的大象千差万别,没人能写出一套穷尽所有情况的规则。
基于模型的学习 :不写规则,写学习算法,让机器从历史数据中自己训练出模型:
python
# 伪代码:模型学习路线
# 1. 准备历史数据(输入 + 正确答案)
# 2. 选择算法,让算法从数据中归纳出"模型"
# 3. 用模型对新数据做预测
model = train(algorithm, history_data) # 训练:数据 → 模型
prediction = model.predict(new_data) # 预测:模型 → 结果
以预测客服工单处理时长为例:把历史工单的"类型、字数、紧急程度 → 实际处理时长"喂给算法,算法拟合出一条规律(比如 时长 = a×字数 + b×紧急度 + c),其中 a、b、c 就是参数 ,这条规律就是模型。参数通常是未知的,训练的过程就是求解参数的过程。
二、机器学习用在哪?又是怎么发展到今天的
1 应用领域
机器学习早已渗透进日常产品里,随手可举:
| 领域 | 典型应用 |
|---|---|
| 用户分析 | 社交网络画像、影评/商品评论情感分析 |
| 搜索引擎 | 网页、图片、视频、新闻检索排序 |
| 信息推荐 | 新闻、商品、短视频、书籍推荐 |
| 图像识别 | 人脸识别、商品图审核、自动驾驶感知 |
| 自然语言处理 | 机器翻译、摘要生成、智能客服 |
| 其他 | 生物信息分析、多模态内容、AR/VR |
做大模型应用开发的人其实天天在"消费"机器学习的成果:RAG 里的检索排序是模型,推荐系统推给你什么文档也是模型。
2 发展史:三次浪潮
AI 的发展不是一条直线,而是三次浪潮叠加:
| 时间段 | 主导流派 | 标志性事件 |
|---|---|---|
| 1950~1970 | 符号主义(专家系统) | 1956 年达特茅斯会议提出"人工智能"术语(AI 元年);1962 年 IBM 跳棋程序战胜人类高手(第一次浪潮) |
| 1980~2000 | 统计主义(统计模型) | 1993 年 Vapnik 提出 SVM;1997 年 IBM 深蓝战胜卡斯帕罗夫(第二次浪潮) |
| 2010~2017 | 深度学习 | 2012 年 AlexNet 成为深度学习开山之作;2016 年 AlphaGo 战胜李世石(第三次浪潮) |
| 2017~至今 | 大规模预训练模型 | 2017 年 Transformer 出现;2018 年 BERT/GPT 问世;2022 年 ChatGPT 开启 AIGC 时代 |
注意最后一行------我们做大模型应用开发,正站在"大规模预训练模型"这一段的肩膀上。而 Transformer、BERT 这些内容,正是本阶段后面要拆的主角。
3 数据、算法、算力三要素
机器学习能在这几年爆发,不是单一原因,而是三要素同时到位:
- 数据:互联网积累了海量标注与未标注数据;
- 算法:深度网络结构、优化方法不断突破;
- 算力 :硬件路线分工明确------
- CPU:擅长调度与复杂逻辑,适合 I/O 密集型任务;
- GPU:擅长大规模矩阵并行运算,适合计算密集型的模型训练;
- TPU:专为神经网络张量运算设计的处理器。
这也解释了为什么训练大模型要"抢 GPU"------模型训练的本质就是海量矩阵乘法。
三、绕不开的术语:样本、特征、标签与数据集划分
1 样本、特征、标签分别指什么
用一张"智能客服工单"数据表来理解三个术语:
| 工单编号 | 渠道来源 | 问题类型 | 用户等级 | 首次响应时长 | 是否升级人工 |
|---|---|---|---|---|---|
| 1001 | App | 退款 | VIP | 3 分钟 | 否 |
| 1002 | 网页 | 物流 | 普通 | 12 分钟 | 是 |
- 样本(sample):一行数据就是一个样本,多个样本组成数据集,也叫一条"记录";
- 特征(feature):一列数据就是一个特征(也叫属性),如"渠道来源""问题类型";
- 标签/目标值(label/target):模型要预测的那一列,这里可以是"是否升级人工"。
特征的本质定义值得记住:特征是从数据中抽取出来的、对预测结果有用的信息。预测工单是否升级时,"问题类型"是有用特征,而"工单编号"这种纯标识列对预测毫无帮助,就不该进模型。
2 为什么要划分训练集和测试集
数据集通常按 8:2 或 7:3 划分成两部分:
- 训练集(training set):用来训练模型,模型从中学习规律;
- 测试集(testing set):用来检验模型,评估它对没见过的数据的表现。
为什么必须分开?如果拿训练数据自己考自己,模型哪怕把训练集背得滚瓜烂熟,也可能只是"死记硬背",换个新数据就露馅。测试集模拟的正是"上线后遇到的新数据"。
python
from sklearn.model_selection import train_test_split
# features: 特征矩阵(每行一个样本),labels: 目标值
# test_size=0.2 表示 20% 做测试集,random_state 固定随机种子保证可复现
X_train, X_test, y_train, y_test = train_test_split(
features, labels, test_size=0.2, random_state=42
)
四、算法分类:监督、无监督、半监督、强化学习
1 有监督学习:分类与回归
有监督学习 :训练数据由"特征 + 目标值"组成,即数据带标签,需要人工标注。根据目标值的类型又分两种:
分类(classification):目标值不连续,是离散的类别。
- 二分类:这封用户反馈是"投诉"还是"咨询";
- 多分类:工单属于"退款/物流/账号/其他"哪一类。
回归(regression):目标值连续,是一个数值。
- 预测这张工单的处理时长(分钟);
- 预测某个 API 的响应延迟(毫秒)。
python
# 数学表示:有监督学习
# 训练集 D = {(x1, y1), (x2, y2), ..., (xn, yn)}
# x 是特征向量,y 是标签;目标是学出映射 f,使 f(x) ≈ y
2 无监督学习:没有标签怎么学
无监督学习 :输入数据没有标签,算法根据样本之间的相似性做聚类,发现数据内部的结构和关系。
典型场景:把海量用户反馈自动聚成若干簇,运营再看每一簇在抱怨什么------不需要事先定义类别。
python
# 数学表示:无监督学习
# 训练集 D = {x1, x2, ..., xn},没有 y
# 目标是发现数据自身的结构(聚类、降维、密度估计等)
和监督学习的本质区别就一条:有没有人告诉模型"正确答案"。
3 半监督学习:少量标注撬动大量数据
标注数据很贵,未标注数据很便宜------半监督学习就是为这个矛盾设计的:
- 让专家标注少量数据,训练出一个初始模型;
- 用该模型去预测大量未标注数据;
- 将预测结果与专家意见对比校验,迭代改善模型。
效果:大幅降低标注成本。大模型时代常见的"用大模型给数据打伪标签再训练小模型",思路上与半监督学习一脉相承。
4 强化学习:靠奖励试错出策略
强化学习(Reinforcement Learning)不依赖标注数据,而是让智能体在试错中学策略。四个核心要素:
- Agent(智能体):做决策的主体;
- 环境(Environment):智能体所处的世界状态;
- 行动(Action):智能体可执行的动作;
- 奖励(Reward):环境对行动的反馈。
Agent 的目标是让累计奖励最大。经典里程碑是 AlphaGo,如今也广泛用于游戏 AI、机器人控制、无人驾驶。
一个直观类比:小孩学走路------小孩是 agent,地面是环境,迈步是行动,走稳了几步得到奖励(正反馈),摔倒了没有奖励,反复试错后学会走路。后面讲大模型对齐时会遇到的 RLHF(基于人类反馈的强化学习),正是这个思想的延伸。
五、机器学习建模流程的五个步骤
无论做什么任务,建模流程都可以抽象成同一条流水线:
获取数据 → 数据基本处理 → 特征工程 → 模型训练 → 模型评估 → (上线预测)
| 步骤 | 做什么 | 说明 |
|---|---|---|
| 1 获取数据 | 收集图像、文本、表格等与任务相关的数据 | 数据质量决定上限 |
| 2 数据基本处理 | 缺失值处理、异常值处理 | 清洗"脏数据" |
| 3 特征工程 | 特征提取、预处理、降维等 | 耗时耗力最多的环节 |
| 4 模型训练 | 选算法(线性回归、逻辑回归、决策树、GBDT...)训练模型 | 按任务类型选算法 |
| 5 模型评估 | 用回归/分类/聚类评测指标检验效果 | 效果好则上线,不好则回到前面迭代 |
两点经验:
- 特征工程和数据处理通常占整个项目最多的时间和精力,真正"调模型"反而是小头;
- 评估不通过不是失败,而是回到数据或特征环节迭代的信号------建模是个循环,不是单行道。
六、特征工程:为什么说它决定模型上限
1 特征工程是什么
先明确"特征"的两个视角:
- 从数据集角度:一列一列的数据就是特征;
- 从模型训练角度:对预测结果有用的属性才是特征。
特征工程(Feature Engineering)的定义:利用专业背景知识和技巧处理数据,让机器学习算法效果达到最好的过程。
业界有句流传很广的话:
"Coming up with features is difficult, time-consuming, requires expert knowledge. Applied machine learning is basically feature engineering."
(构造特征困难、耗时、需要专业知识;应用机器学习基本上就是特征工程。)
由此引出一个重要结论:数据和特征决定了机器学习的上限,模型和算法只是逼近这个上限。
2 特征提取
从原始数据中提取与任务相关的特征,构成特征向量。关键在于:文本、图片这类非行列形式的原始数据,要先转换成行列结构------一旦转成表格形态,每一列就是特征。
比如把一段用户反馈文本提取成特征:
python
# 从原始文本中提取对"是否投诉"预测有用的特征
raw_text = "快递三天没到,客服也联系不上,太失望了"
features = {
"text_length": len(raw_text), # 文本长度
"has_neg_word": "失望" in raw_text, # 是否含负面情绪词
"mentions_logistics": "快递" in raw_text # 是否涉及物流主题
}
3 特征预处理
不同特征的量纲(单位、取值范围)差异巨大:比如"处理时长"以分钟计(0~几百),"用户等级"只是 1~5 的整数。量纲差异会让某些特征对模型影响过大、某些几乎被忽略。
特征预处理就是把不同单位的特征转换到同一范围内(标准化、归一化),使各特征对模型的影响趋于一致。
4 特征降维
把原始数据的维度降低。降维会丢失部分信息,因此要保证主要信息被保留;降维后的数据会发生变化(不再对应原始含义),但保留了最主要的结构。典型代表是 PCA(主成分分析)。
5 特征选择
特征很多,但与任务真正相关的往往只是其中一个子集。特征选择就是按某些指标挑出重要特征 ------注意它与降维的关键区别:特征选择不改变原始数据,只是"挑";降维则会"变"。
6 特征组合
把多个特征合并成一个新特征,通常通过加法、乘法完成。比如把"问题类型"和"用户等级"交叉组合,可能比单独使用任何一个都更能预测"是否升级人工"。
用一张表收尾:
| 手段 | 做什么 | 是否改变原始数据 |
|---|---|---|
| 特征提取 | 从无到有构造特征向量 | --- |
| 特征预处理 | 统一量纲(标准化/归一化) | 数值缩放 |
| 特征降维 | 压缩维度、保留主信息 | 是 |
| 特征选择 | 挑选重要特征子集 | 否 |
| 特征组合 | 多特征合并为一个 | 生成新特征 |
七、模型拟合问题:欠拟合、过拟合与泛化
1 三种拟合状态
**拟合(fitting)**用来描述模型对样本点的贴合程度,共三种状态:
| 状态 | 训练集表现 | 测试集表现 |
|---|---|---|
| 欠拟合(under-fitting) | 很差 | 也很差 |
| 正好拟合 | 好 | 也好 |
| 过拟合(over-fitting) | 很好 | 很差 |
一个经典比喻:教机器认天鹅。
- 欠拟合:机器学到的天鹅特征太少(比如只知道"会飞"),区分标准太粗糙,识别不准;
- 过拟合:训练图片全是白天鹅,机器把"白色"也当成天鹅的必要特征,结果见到黑天鹅就不认识了。
2 产生原因与处理策略
欠拟合的原因 :模型过于简单。处理思路是增加模型复杂度------增加特征、换更强的模型。
过拟合的原因:模型过于复杂、数据不纯(噪声多)、训练数据太少。处理策略:
- 正则化:给模型加约束,惩罚过大的参数;
- 数据增强/扩充:增加训练数据量、清洗脏数据;
- 特征降维/特征选择:减少模型可"死记"的细节;
- 早停(early stopping):训练过程中监控测试集表现,开始变差就停止;
- 交叉验证:更可靠地评估泛化能力。
最后两个概念:
- 泛化(Generalization):模型在新数据集(非训练数据)上的表现能力------我们训练模型,最终要的就是泛化,而不是训练集上的高分;
- 奥卡姆剃刀原则 :给定两个泛化误差相同的模型,较简单的模型更可取。
八、开发环境:scikit-learn 快速上手
Python 生态里做传统机器学习的首选是 scikit-learn:
- 简单高效的数据挖掘与分析工具;
- API 风格统一(fit/predict/transform),可在各种环境中复用;
- 建立在 NumPy、SciPy、matplotlib 之上;
- 开源、BSD 许可证,可商业使用。
安装与验证:
bash
pip install scikit-learn
python
import sklearn
# 打印版本号,确认安装成功(本文写作时最新稳定版为 1.x)
print(sklearn.__version__)
scikit-learn 覆盖了本篇提到的几乎所有环节:train_test_split 做数据集划分,StandardScaler 做特征预处理,PCA 做降维,各种回归/分类/聚类算法一应俱全。后面的线性回归实战就会直接用它。
常见问题
Q1:AI、ML、DL 三个词能混着用吗?
不能。AI 是目标(让机器表现出智能),ML 是实现 AI 的一条途径(从数据中学习),DL 是 ML 的一个分支(深度神经网络)。说"我在做深度学习"一定是在做机器学习,但说"我在做机器学习"未必用了深度学习------传统算法如 SVM、决策树同样属于 ML。
Q2:分类和回归到底怎么一眼区分?
看目标值:离散类别是分类,连续数值是回归。"这封反馈是不是投诉"是二分类,"处理时长是多少分钟"是回归。容易混淆的是"预测用户等级"------等级虽然用数字表示,但本质是离散类别,仍属于分类问题。
Q3:特征降维和特征选择都是"减少特征",有什么区别?
特征选择是挑 :从原有特征里选出重要的子集,数据本身不变,选出来的每一维都有明确业务含义;特征降维是变:把原始数据投影到新的低维空间,新维度往往没有直观含义,但保留了主要信息。实践中通常先做特征选择去掉明显无用的列,再考虑是否需要降维。
Q4:训练集准确率 99%,上线就翻车,问题出在哪?
十有八九是过拟合:模型把训练数据背下来了,泛化能力差。先检查数据量是否太少、特征是否过多过杂,再考虑正则化、交叉验证和早停。记住本篇的判断标准------训练集很好、测试集很差,就是过拟合。
和 AI 大模型开发的关系
机器学习概述里的概念,在大模型应用开发中几乎处处复用。
场景一:RAG 检索质量评估------本质是分类问题
判断"检索回来的文档片段与用户问题是否相关",就是一个二分类任务,样本、特征、标签一一对应:
python
# RAG 相关性标注数据(有监督学习的样本)
samples = [
# 特征 x:问题与片段的组合;标签 y:1 相关 / 0 不相关
{"question": "如何申请退款", "chunk": "退款入口在订单详情页...", "label": 1},
{"question": "如何申请退款", "chunk": "物流时效说明...", "label": 0},
]
# 训练出的分类器可作为 RAG 的 rerank/过滤模型
场景二:智能客服意图识别------特征工程决定上限
把用户消息映射到"退款/物流/咨询/投诉"意图,是典型的多分类;而"提取哪些特征"直接决定效果:
python
def extract_intent_features(text: str) -> dict:
# 特征提取:从原始文本构造对意图分类有用的特征
return {
"length": len(text), # 文本长度
"has_order_id": "订单号" in text, # 是否提及订单
"negative_score": sum(w in text for w in ["失望", "投诉", "差评"]), # 负面情绪强度
}
场景三:大模型微调数据的半监督思路
高质量人工标注贵,常见做法是先用大模型给海量数据打"伪标签",人工只校验少量样本------这正是半监督学习"少量标注 + 模型扩展"的思想在 LLM 时代的翻版。
场景四:RLHF 对齐------强化学习的直接应用
ChatGPT 类产品用 RLHF 让回答更符合人类偏好:模型是 agent,生成回答是行动,人类偏好打分是奖励。理解了本篇强化学习的四要素(agent、环境、行动、奖励),后面讲对齐技术时就不会陌生。
总结
这篇把机器学习的"地图"完整铺开了一遍:
- 概念层:AI 是目标,ML 是途径,DL 是方法,三者层层包含;机器学习的本质是"从数据中学习"而非手写规则;
- 术语层:一行是样本、一列是特征、要预测的那列是标签;训练集学规律、测试集验泛化;
- 分类层:有监督(分类/回归)、无监督(聚类)、半监督、强化学习,区别在于"数据有没有标签、反馈以什么形式给";
- 流程层:获取数据 → 数据处理 → 特征工程 → 模型训练 → 模型评估,其中特征工程耗时最多、决定上限;
- 风险层:欠拟合源于模型太简单,过拟合源于模型太复杂/数据太少太脏,一切优化都服务于泛化能力。
下一篇进入第一个具体算法------线性回归,看"从数据中拟合出 y = ax + b"这件事在数学和代码上到底怎么落地。
#机器学习 #人工智能 #深度学习 #特征工程 #scikit-learn