第 6 讲 · 机器学习基础

前五讲解决了“怎样表示知识”和“怎样处理数据”。从这一讲开始,核心问题变成:没有办法把所有规则手写出来时,能否让机器根据样本自动调整一个函数?线性回归、SVM 和神经网络长得不同,但都服从本讲的共同框架。

学习到底学什么

给定输入 xx,希望模型给出输出 y^=f(x;θ)\hat y=f(x;\theta)。学习不是凭空产生知识,而是在一个候选函数族中,根据数据选择参数 θ\theta。

  • 监督学习有输入和答案,例如根据鸢尾花特征预测品种;
  • 无监督学习只有输入,例如把相似顾客分组或学习数据的低维结构;
  • 强化学习没有逐步标准答案,智能体通过行动获得延迟奖励,第 14 讲会单独展开。

监督学习中,输出是连续数值叫回归,输出是离散类别叫分类。一个完整问题至少要明确:样本是什么、特征是什么、标签是什么、损失怎样定义、模型怎样评估。

经验风险和梯度下降

训练集上平均损失称为经验风险:

R^(θ)=1n∑i=1nL(f(xi;θ),yi)\hat R(\theta)=\frac1n\sum_{i=1}^n L(f(x_i;\theta),y_i)

优化希望找到让它尽量小的参数。梯度指向函数上升最快方向,因此沿反方向更新:

θt+1=θt−η∇θR^(θt)\theta_{t+1}=\theta_t-\eta\nabla_\theta\hat R(\theta_t)

批量梯度下降每次用全部样本,方向稳定但单步昂贵;随机梯度下降每次用一个样本,噪声大但更新快;小批量梯度下降在深度学习中最常见。

训练集做得好,还远远不够

模型真正要处理的是未来样本。训练误差和测试误差一起看,才能区分:

  • 欠拟合:模型太简单或训练不充分,两边误差都高;
  • 过拟合:模型记住训练细节,训练误差低而测试误差高;
  • 合适拟合:训练数据学得充分,未见数据也保持较小误差。

课件用偏差—方差—噪声解释泛化误差。高偏差常对应模型过于僵硬,高方差常对应模型对训练集波动过于敏感,噪声则是再好的模型也无法消除的随机性。增加模型复杂度通常降低偏差、提高方差,选择模型就是在两者间平衡。

常见控制方法:

  • 加入 L1/L2L_1/L_2 正则化;
  • 限制树深、网络规模等模型复杂度;
  • 获取更多有代表性的数据;
  • 数据增强;
  • 根据验证集表现早停,而不是把训练损失压到最低。

数据怎样分才不自欺

最简单的留出法把数据分为训练集和测试集,课件给出的训练/测试比例大致可在 2:1 到 4:1 之间选择。关键不是某个固定比例,而是测试数据不能参与训练。

如果要选择超参数,最好再分验证集;不能反复看测试集来挑参数,否则测试集也被“间接训练”了。数据少时可用 kk 折交叉验证:分成 kk 份,每次用一份验证、其余训练,轮换后求平均。课件以 10 折为常见选择。留一法是 k=nk=n 的极端情况,训练次数很多,计算昂贵。

时间序列、同一人的多条记录或同一对象的增强样本不能随意随机拆分,否则会发生数据泄漏。

回归和分类怎么评估

回归常用均方误差:

MSE⁡=1n∑i=1n(yi−y^i)2\operatorname{MSE}=\frac1n\sum_{i=1}^n(y_i-\hat y_i)^2

平方会放大大误差。分类先从混淆矩阵看四种结果:TP、TN、FP、FN。再计算:

Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy}=\frac{TP+TN}{TP+TN+FP+FN} Precision=TPTP+FP,Recall=TPTP+FN\text{Precision}=\frac{TP}{TP+FP},\qquad \text{Recall}=\frac{TP}{TP+FN} Fβ=(1+β2)PRβ2P+RF_\beta=(1+\beta^2)\frac{PR}{\beta^2P+R}

β>1\beta>1 更看重 Recall,β<1\beta<1 更看重 Precision。改变分类阈值会让二者此消彼长。PR 曲线直接展示 Precision—Recall 的权衡;ROC 曲线画真正率对假正率,AUC 概括不同阈值下的排序能力。类别极不平衡时,PR 往往比单看 Accuracy 更直观。

维度越高,数据越显得稀疏

“维度灾难”不是简单地说特征多一定坏,而是空间体积随维度迅速增长:同样数量的样本在高维空间里变得非常稀疏,距离的区分度下降,模型需要更多数据才能覆盖可能情况。处理办法包括特征选择、降维、正则化,以及利用模型的结构先验。

优化方法的几何直觉

最速下降

一阶可微时,负梯度是局部最陡下降方向。它只用坡度,不使用曲率,窄长谷底中容易左右摆动。

Newton 法

二阶可微时,Hessian 矩阵 HH 描述局部曲率:

θt+1=θt−H(θt)−1∇f(θt)\theta_{t+1}=\theta_t-H(\theta_t)^{-1}\nabla f(\theta_t)

它在最低点附近可能收敛很快,但计算和存储 Hessian 昂贵,Hessian 非正定时还未必朝下降方向走。

约束优化与 Lagrange 乘子

若要最小化 f(x)f(x),同时满足 g(x)=0g(x)=0,构造:

L(x,λ)=f(x)+λg(x)\mathcal L(x,\lambda)=f(x)+\lambda g(x)

在候选最优点上联立 ∇xL=0\nabla_x\mathcal L=0 和 g(x)=0g(x)=0。不等式约束还要加入 KKT 条件,第 8 讲 SVM 的对偶推导会真正用到它。

我在这一讲只建立“数据—模型—损失—优化—评估”骨架。第 7 讲把骨架装进最简单的线性模型,第 8 讲看最大间隔,第 9 讲再把函数族扩展为多层网络。

评论