跳到主要内容

机器学习基本概念

问题

机器学习的核心概念有哪些?训练与推理的区别是什么?特征、标签、损失函数、梯度下降的本质是什么?

答案

机器学习(Machine Learning) 是让计算机从数据中自动学习规律并做出预测或决策的技术——你不需要显式编写规则(如 if temperature > 30 then hot),而是给模型大量数据,让它自己学出 temperature → 天气 的映射关系。

一、训练与推理——两个阶段

阶段目标数据计算资源时间
训练(Training)从数据中学习参数需要大量标注数据高(GPU 集群)小时~月
推理(Inference)用学到的参数做预测单条新数据较低毫秒~秒
类比

训练就像学生做练习题(有答案对照,不断纠错),推理就像考试(面对新题目,用学到的知识作答)。

二、核心术语

特征(Feature)与标签(Label)

  • 特征(Feature / Input / X):描述数据的属性。比如预测房价时,面积、楼层、地段就是特征
  • 标签(Label / Target / Y):我们要预测的目标值。比如房价本身
  • 样本(Sample / Instance):一条完整的数据记录(一组特征 + 对应标签)
样本: { 特征: [面积=100m², 楼层=5, 地段=市中心], 标签: 500万 }

模型(Model)与参数(Parameter)

模型是一个数学函数,输入特征、输出预测值。最简单的模型就是线性回归

y^=w1x1+w2x2++wnxn+b\hat{y} = w_1 x_1 + w_2 x_2 + \cdots + w_n x_n + b

其中 wiw_i权重(Weight)bb偏置(Bias),它们统称参数(Parameters)。训练的本质就是找到一组最优参数,使模型的预测尽可能接近真实值。

参数规模
  • 线性回归可能只有几十个参数
  • 一个 ResNet-50 有约 2500 万参数
  • GPT-3 有 1750 亿参数
  • GPT-4 据传有超过 1 万亿参数(MoE 架构)

参数越多,模型的表达能力越强,但也越容易过拟合、训练越耗资源。

损失函数(Loss Function)

损失函数衡量模型预测值 y^\hat{y} 和真实值 yy 之间的差距。训练的目标就是最小化损失函数

损失函数公式适用场景
均方误差 MSE1n(yiy^i)2\frac{1}{n}\sum(y_i - \hat{y}_i)^2回归任务
平均绝对误差 MAE1nyiy^i\frac{1}{n}\sum\|y_i - \hat{y}_i\|回归(对异常值鲁棒)
交叉熵 Cross-Entropyyilog(y^i)-\sum y_i \log(\hat{y}_i)分类任务
二元交叉熵 BCE[ylogy^+(1y)log(1y^)]-[y\log\hat{y}+(1-y)\log(1-\hat{y})]二分类任务

梯度下降(Gradient Descent)

有了损失函数,如何找到最优参数?——沿着损失下降最快的方向更新参数,这就是梯度下降:

θt+1=θtηθL(θt)\theta_{t+1} = \theta_t - \eta \cdot \nabla_\theta L(\theta_t)
  • θ\theta:参数
  • η\eta:学习率(Learning Rate),控制每一步的步长
  • θL\nabla_\theta L:损失函数对参数的梯度(方向导数)

学习率的影响

学习率效果
太大参数更新幅度过大,损失震荡甚至发散
太小收敛极慢,可能卡在局部最优
合适稳定收敛到较优解

三、超参数与模型选择

超参数(Hyperparameter) 是训练前需要人为设定的参数(不是通过学习得到的),如:

  • 学习率
  • 批次大小(Batch Size)
  • 网络层数和隐藏单元数
  • 正则化强度
  • 训练轮数(Epochs)

超参调优方法

方法说明
网格搜索(Grid Search)遍历所有组合,计算开销大
随机搜索(Random Search)随机采样,效率更高
贝叶斯优化(Bayesian Optimization)根据历史结果智能选择下一组参数
学习率调度(LR Scheduler)动态调整学习率(余弦退火、Warmup 等)

四、数据集划分

数据集用途参与训练?
训练集(Training Set)模型学习参数✅ 是
验证集(Validation Set)调超参、选模型、早停判断❌ 否(但会影响超参选择)
测试集(Test Set)最终评估模型泛化能力❌ 否(只用一次)
常见错误

数据泄露(Data Leakage):如果测试集的信息在训练时被模型"看到"了,评估结果就不可信。常见泄露场景:

  • 先做特征缩放再划分数据集(应该先划分再分别缩放)
  • 时序数据随机打乱后划分(应该按时间顺序划分)
  • 用全部数据做特征选择

五、交叉验证

当数据量不大时,单次划分可能导致评估不稳定。K 折交叉验证(K-Fold Cross Validation) 将数据分成 K 份,每次用 1 份做验证、其余 K-1 份做训练,重复 K 次取平均:

Fold 1: [验证] [训练] [训练] [训练] [训练]
Fold 2: [训练] [验证] [训练] [训练] [训练]
Fold 3: [训练] [训练] [验证] [训练] [训练]
Fold 4: [训练] [训练] [训练] [验证] [训练]
Fold 5: [训练] [训练] [训练] [训练] [验证]

常用 K=5 或 K=10。对于小数据集,交叉验证是更可靠的评估方式。


常见面试问题

Q1: 机器学习和深度学习的区别?

答案

维度机器学习(经典)深度学习
特征工程需要人工设计特征自动学习特征
模型复杂度相对简单(线性模型、决策树等)极复杂(百万~万亿参数)
数据需求小数据也能工作通常需要大量数据
计算资源CPU 即可通常需要 GPU/TPU
可解释性较好(如决策树)较差(黑箱)
适用场景表格数据、小数据集图像、文本、语音、大数据

深度学习是机器学习的子集,核心区别在于是否使用多层神经网络自动提取特征。

Q2: 什么是过拟合?如何避免?

答案

过拟合是指模型在训练集上表现很好,但在新数据上表现差——模型"记住"了训练数据的噪音而非真正的规律。

表现:训练 Loss 持续下降,但验证 Loss 先降后升。

应对方法

  • 正则化:L1(稀疏化)、L2(权重衰减)限制参数大小
  • Dropout:训练时随机丢弃部分神经元
  • 早停(Early Stopping):验证 Loss 不再下降时停止训练
  • 数据增强:增加训练数据的多样性
  • 减小模型复杂度:减少层数或参数量
  • 交叉验证:更可靠地评估泛化能力

Q3: 梯度消失和梯度爆炸是什么?

答案

在深层网络的反向传播中,梯度需要逐层传递。如果每层的梯度都 < 1(如 Sigmoid),梯度会指数级衰减,到浅层已接近零——梯度消失,导致浅层参数几乎不更新。反之,如果梯度 > 1,会指数级增大——梯度爆炸

解决方案

  • ReLU 激活函数:正区间梯度恒为 1,缓解消失
  • 残差连接(ResNet):跳跃连接让梯度直接流向浅层
  • Batch Normalization:标准化中间层输出
  • 梯度裁剪(Gradient Clipping):限制梯度最大值
  • 合适的权重初始化:He 初始化、Xavier 初始化

Q4: Batch Size 对训练有什么影响?

答案

Batch Size优点缺点
(8~32)正则化效果好、泛化能力强训练慢、GPU 利用率低
(256~4096)训练快、梯度估计稳定可能泛化差、需要更大学习率

实践中通常从 32 开始尝试,配合学习率线性缩放规则(Batch Size 翻倍则学习率翻倍)。

Q5: 训练集、验证集、测试集的作用分别是什么?为什么需要三个?

答案

  • 训练集:模型从中学习参数(权重和偏置)
  • 验证集:用于在训练过程中调超参(学习率、层数等)和选择最佳模型
  • 测试集:训练完全结束后做最终评估,模拟模型面对"完全没见过"的数据

为什么不能只用训练集和测试集?如果用测试集反复调参,测试集就变成了"间接的训练数据",评估结果不再可靠。验证集就是专门用来"消耗"的——你可以反复在上面调参,最终用测试集做一次性的公正评估。


相关链接