旧帖灌水-机器学习与深度学习笔记

1. 定义&基本概念

  • 机器学习(ML):赋予机器学习的能力,通过寻找合适函数处理数据,解决不同类型的问题。
  • 深度学习(DL):作为机器学习的一个子领域,使用多层神经网络来学习数据的复杂表示。

2. 机器学习任务分类

  1. 回归(Regression):预测一个数值,例如预测PM2.5的数值。
  2. 分类(Classification):从预设的类别中选择一个作为输出,例如垃圾邮件检测。
  3. 结构化学习(Structured Learning):生成具有结构的输出,如绘画或写作。

3. 机器学习与模型构建

  • 模型定义:创建一个带有未知参数的函数,例如线性模型 ( y = b + wx_1 )。
  • 损失函数:衡量预测值与实际值之间的差距,常用的损失函数包括 MAE 和 MSE。
  • 优化方法:通过梯度下降等优化算法最小化损失函数,更新参数直到找到最优解。

3.1 梯度下降算法

梯度下降是常见的优化方法,通过逐步调整模型参数 ( w ) 和 ( b ) 来最小化损失函数。

  • 更新规则为:
    $$
    w_{\text{new}} = w - \eta \frac{\partial L}{\partial w}
    $$
    $$
    b_{\text{new}} = b - \eta \frac{\partial L}{\partial b}
    $$
    其中 ( \eta ) 是学习率。

4. 模型优化与评估

  • 优化问题:梯度下降可能会陷入局部最小值,无法找到全局最优解,导致模型性能受限。
  • 超参数调整:通过调节学习率、最大迭代次数等超参数来提高模型性能。
  • 模型评估:使用训练集和测试集进行评估,避免模型在训练集上表现良好但在测试集上表现差的情况。

5. 线性模型及其局限性

  • 线性模型:线性模型表达式为 ( y = b + wx ),但它无法处理复杂的非线性关系,可能出现模型偏差
  • 分段线性曲线:通过组合多个线性函数可以逼近复杂的曲线。增加分段的数量可以逼近任何连续曲线。
  • 激活函数:例如 ReLU(修正线性单元),用于在神经网络中引入非线性,公式为:
    [
    \text{ReLU}(x) = \max(0, x)
    ]

6. 神经网络与深度学习

  • 神经网络:由多个神经元组成的复杂模型结构。深度学习通过增加网络的层数(深度),来提高模型的表达能力。
  • 模型堆叠与复杂度:通过堆叠多个激活函数和神经元层,可以构建更复杂的模型,但这可能导致过拟合问题,即在训练数据上表现良好,而在测试数据上表现差。

7. 模型偏差与过拟合

  • 模型偏差:模型过于简单,无法捕捉数据的复杂关系,即使找到最优参数,损失仍然较高。
  • 过拟合:模型在训练集上表现良好,但在测试集上表现差。通常原因是模型过于复杂,学习了训练数据中的噪声。
    • 解决方法
      • 增加训练数据。
      • 进行数据增强,如图像翻转、裁剪等。
      • 限制模型复杂度,如减少神经元数量或层数。
      • 使用正则化技术(L1、L2 正则化)或丢弃法(dropout)。

8. 模型评估与交叉验证

  • 交叉验证:使用 k 折交叉验证评估模型的泛化能力。
    • 将训练集分为 k 个子集,每次使用 k-1 个子集进行训练,剩下的一个作为验证集,重复 k 次,以减少模型选择的偏差。
  • 模型评估:在训练数据上评估误差,并对未知数据进行预测。

9. 数据分布不匹配

  • 定义:训练集和测试集的数据分布不一致,可能导致模型在训练集上表现良好,但在测试集上表现不佳。
    • 解决方法
      • 理解数据的来源和分布,确保训练集与测试集的一致性。
      • 如果可能,使用来自同一分布的数据进行训练和测试。