# 机器学习课程-李宏毅

B站课程链接 (opens new window)

youtube课程地址 (opens new window)

# 机器学习的基本概念

1-5 Supervised Learning

6 生成式对抗网络 Generative Adversarial Network

7 自监督学习 self-supervised Learning

BERT 基础模型

8 异常检测 Anomaly Detection

9 可解释性AI Explainable AI

10 模型攻击 Model Attack

11 领域适应 Domain Adaptation

12 强化学习 Reinforcement Learning

13 模型压缩 Network Compression

14 终身机器学习 Life-long Learning

15 元学习-学习如何学习 Meta learning

google colab

浅谈机器学习原理

image-20251215221112172

image-20251215222251713

image-20251215223140651

image-20251215223742080

VC-dimension 描述一个模型复杂程度的指标

image-20251215224734087

视频进度 (opens new window)

structure learning 让机器产生有结构的输出

机器学习公式推导比较难的一步是计算梯度, 而pytorch框架可以自动计算梯度。

# 机器学习任务攻略

image-20251224094027420

当LOSS比较大的时候,可能是模型偏差,也可能是优化没做好,怎么判断呢?

  • 使用容易优化的浅层的网络,或者其他的模型
  • 如果更深的模型在训练数据上没有获得更小的loss,那就是优化没做好

深层网络一定可以做到浅层网络做到的事情,比如50层的网络,前20层可以和20层的网络做相同的事情,后30层什么也不做,那50层的网络效果和20层的网络就是一样的。

# 过拟合问题

过拟合问题解决方案

  • 增加训练数据
  • 数据增强:比如图像领域机器学习,可以把图片左右翻转,部分放大
  • 给模型一些限制:少的参数,共用参数
  • 更少的要素
  • 正则化
  • Early stopping:在验证集性能达到最优时,提前停止训练
  • Dropout
image-20251224102254368

模型太简单会有模型偏差,模型过于复杂会过拟合。

# 模型泛化能力

公共测试集:比赛开发阶段用于评估模型性能的测试数据

私有测试集:比赛最终阶段(盲测阶段)使用的隐藏测试数据

因此需要把训练数据集分为两部分,一部分用于训练,一部分用于验证。选择验证集上LOSS最小的模型就好。

# n 折交叉验证

用于评估模型的泛化能力

整个数据集随机且均匀地划分为 n 个互斥的子集(称为 fold,即 “折”),然后重复 n 次训练和验证:

  1. 每次选取 1 个 fold 作为验证集,剩下的 n-1 个 fold 作为训练集
  2. 用训练集训练模型,用验证集计算性能指标(如准确率、Loss);
  3. 完成 n 次循环后,取 n 次验证指标的平均值,作为模型的最终评估结果。
image-20251224104702357

mismatch:分布偏移或模型不匹配。模型的训练逻辑是架设训练数据和测试数据服从相同的概率分布,一旦这个架设不成立,模型学到的规律就无法适配测试数据。

# 模型优化

# 鞍点、局部最小、局部最大

当梯度为0时,不一定是局部最小值,也有可能是鞍点。

image-20251224105658657

用泰勒展开计算:

image-20251224110411782

H是海森矩阵,多元函数的的二阶偏导数方阵,可以使用海森矩阵正负定性判断极值点。

image-20251224110957649

正定矩阵:实对称矩阵所有特征值大于0,称为正定矩阵。

海森矩阵的特征值有正有负,表示该点是鞍点。

沿着负特征值对应的特征向量方向更新参数,可以降低LOSS。

二维的局部最小值在三维看来可能是一个鞍点,低维度看起来无路可走,在高维度其实是有路的。

# 批次和动量

为什么要用batch?

当并行计算时,较大的batch size计算梯度时不一定比小的batch size 花的时间长。

image-20251224142331956

小的batch size 在优化和测试集上效果更好。

image-20251224143235938

动量Momentum

梯度下降法:每次朝着梯度的反方向更新一步。

然而,在物理世界中,小球沿着Loss函数滚落,由于带有速度,不会在局部最小值停下。

动量只是类比物理世界中物体运动惯性的特点。

image-20251224143520685

考虑动量的计算:每一步的变化量=上一步的变化量-当前步的梯度

image-20251224144713982

引入动量有什么好处?

  • 加速收敛速度
  • 抑制参数更新震荡
  • 突破局部极小值或鞍点

# 自动调整学习率

当Loss不再减小的时候,并不意味着梯度一定很小,有可能在Minima附近震荡。

image-20251224150109081

为什么需要自适应学习率?

固定学习率无法适配复杂误差曲面的不同区域,容易导致收敛慢、震荡或不收敛。

哪里难走,就放慢脚步;哪里好走,就加快速度

# 典型的自适应算法

Adagrad算法:累积参数的历史梯度平方和

image-20251224152651590

RMSprop:指数移动平均累积梯度平方和

衡量近期梯度的波动幅度,远期的梯度影响会指数级衰减。

衰减系数α通常取0.9

image-20251224153424585

Adam:结合动量 + RMSprop 的思想

# 学习率调度

Learning Rate Decay:学习率衰减

初期学习率较大,末期学习率较小。

image-20251224155358715

Warm Up:学习率先变大、后变小

在很多知名的网络都有使用。

# 不同的损失函数Loss

image-20251224162208465

交叉熵最小等价于最大似然

交叉熵通常用于分类任务

image-20251224163754523

# 名词术语

Model Bias:模型偏差,衡量模拟拟合能力不足的指标

piecewise linear :分段线性

Loss:损失函数 means how good a et of values is .

epoch:计算梯度下降时,当所有的batch都计算一遍,作为一个epoch

update:每一次计算batch,更新参数,叫做update

hyperparameter: 超参数,机器学习中非机器自动计算的,人为设定的参数,比如batchsize,学习率等等

sigmoid函数

ReLU函数(Rectified Linear Unit):修正线性单元

Nerual Network:神经网络

Overfitting:过拟合,在训练资料上变好,在测试资料上变差的情况

benchmark corpora:基准语料库,是自然语言处理(NLP)领域中,用于评估模型性能、对比不同算法效果的标准化数据集。

critical point :临界点

error surface:误差曲面,损失函数关于参数的多维曲面。

Last Updated: 12/25/2025, 8:59:06 AM