Loading

机器学习概念梳理

本文旨在对机器学习模型进行一个简单的抽象,并简单介绍机器学习过程中的一些常用组件。本篇文章并不会有过深的数学概念,以及对某一组件事无巨细的教程。

核心组件

模型的数学表达

模型是一个函数

\(y=F(x;w)\)

  • \(x\)是你的输入,可以是一段文字、一张图片、一段语音的数字化表达(矩阵、tensor)
  • \(w\)即是模型的参数,即我们要训练的部分
  • \(y\)即模型输出的结果,可以是0,1(是否);0,1,2,3,4这样的标签(分类问题);数值(回归问题);下一个词的概率
  • \(F(x;w)\)即模型的结构,或者说模型的公式

开始时,你有:

  1. 一组随机的\(w\)
  2. 一组训练集——\((x, y)\)
  3. 定义好的\(F(x;w)\)公式

模型训练目标:不断利用数学手段调整\(w\),使得对于训练集的每一个\(x\),模型输出的结果\(\hat{y}\)都接近于\(y\)

神经网络

一种定义\(F(x;w)\)的通用方式:

img

在输入\(x\)和输出\(y\)之间,有着一些隐藏层,隐藏层中的每个节点被称作一个神经元,数学表示如下:

\(y=f(\Sigma_i w_i x_i + b)\)

  • 接收上一层的每一个元素
  • 将每一个元素乘以固定的权重 再加一个偏置(线性函数)
  • 将得到的结果放入函数\(f\)\(f\)被称作激活函数,是一个非线性函数,稍后会详细介绍
  • 得到当前神经元的值

在神经网络中,每一个神经元上连接上一层的权重,就是模型要学习的参数。神经网络中的每一层可以看作是一个矩阵运算。

激活函数

如果神经网络中不存在激活函数,神经元的计算全是线性的,那么最终的结果也是线性的,在二维情况下是一条线,三维情况下是一个面...这样的模型拟合能力是有限的,现实问题通常无法用线性关系描述。

在神经元上加一个非线性的激活函数可以解决这个问题,常见的激活函数如下:

img

  • ReLU在传统机器学习领域较为常用
  • GeLU在大模型领域较为常用

损失函数——量化误差

刚刚已经知道,模型训练就是使得每一个\(\hat{y}\)都接近于原始的\(y\),那必然需要有一个量化二者之间差异的手段,这就是损失函数。损失函数的质量,直接影响模型训练的效果。

\(loss(y, F(x;w))\)
是对于单个输入,预期输出和实际输出之间的差异

\(L(D,w)=\frac{1}{N}\Sigma_{i=1}^{N}loss(y_i, F(x_i;w))\)
是对于整个训练集\(D\)和当前权重\(w\),每一个输入下预期输出和实际输出之间差异的平均

常见损失函数:

  • 最小二乘:两个数值之间差距(欧式距离)
  • 向量距离:两个向量之间的距离
  • 向量夹角:两个向量之间的余弦距离
  • 交叉熵:两个概率分布之间的差异

梯度下降

已经有了模型、神经网络、损失函数的概念后,如何进行拟合以将损失降到最小?——梯度下降。

假设该图描述了随着权重变化(横轴),损失函数输出变化(纵轴)的关系:

img

  • 初始权重是一个随机点
  • 通过数学方式知道该往哪个方向走,以及走多少
    • 导数可以获得该点在该函数上的切线斜率,如果斜率为0,表示我们在极值点上,斜率的正负可以给前进方向一个参考,斜率的大小可以给前进距离一个参考
  • 所谓梯度下降,就是不停的找到前进的方向,再以经验方式选择前进的步长,最终使得损失变小。每一次行走都是对权重进行更新。

现实情况:

img

现实情况往往更加复杂,函数通常有大量的坑,所以人们发明出了大量的trick来:

  1. 尽量绕过浅坑
  2. 尽量不跨过坑底
  3. 尽量找到更好的局部最优解
  4. ...

后面会讲解这些trick

学习率 & 梯度——模型训练的数学表达

\(w_{n+1} = w_n - \gamma \Delta_wL(D,w)\)

  • \(\gamma\):人为定义的学习率
  • \(\Delta\):梯度
  • 每一步的权重减去学习率乘梯度,得到下一步的权重
  • 学习率和梯度共同决定了走多远,而梯度是算出来的,人为因素只有学习率

如下图,关于学习率的选择,过高过低都会产生问题

img

随机梯度下降 & Mini-Batch梯度下降

上面的公式\(\Delta_wL(D,w)\)是在整个数据集上求梯度,考虑训练大模型的场景,这几乎是不可能实现的。

随机梯度下降是指:每次在全体数据集中随机选择一个来计算梯度

Mini-Batch是指:每次在全体数据集中随机取N个来计算梯度

img

反向传播*

模型的一趟训练需要正向计算loss,反向计算梯度(链式法则求导),这一正一反的整个过程叫做反向传播。

这个概念没什么用,只有在实际编程调用API时可能会有类似的步骤。

求解器*

为了让训练过程更好的收敛,人们设计了很多复杂的求解器

  • SGD、L-BFGS、Rprop、Adam、AdamW...
  • 大模型领域常用Adam和AdamW

直觉与炼丹

机器学习领域的很多东西都是经验与直觉决定的,比如为什么ReLU成为了激活函数的事实标准,并没有严谨的数学证明,就是直觉上好,用起来也好,就一直用了。

所谓炼丹,就是凭借经验与直觉对各种参数配置进行调整以达到预期效果的过程。

常见炼丹工具介绍

过拟合与欠拟合

img

模型训练中常出现的问题:

  • 欠拟合(左):训练后的模型不能很好的拟合数据集
  • 过拟合(右):训练后的模型仅仅对训练集拟合的非常好

奥卡姆剃刀原则:两个东西都能解决同一个问题,简单的胜出

Weight Decay

看不懂,数学太差。

理解是为了避免让参数过于复杂导致像右图那样的过拟合而引入的一个权重参数。

Dropout

在前向传播时概率性的删除一部分神经元,会使得模型泛化性更强,不依赖某些局部特征

学习率调整器

在训练过程中动态调整学习率

  • 开始时大些,快速接近最优解
  • 越来越小,避免跳过最优解

img

Warmup

防止一开始就过拟合的情况

先从很小的学习率逐渐上升到正常学习率,再逐步降低学习率

posted @ 2025-08-02 10:43  于花花  阅读(29)  评论(0)    收藏  举报