一.深度学习流程

1. 定义一个函数(模型)

  • 假设现实世界x与y之间的函数关系 $y=f(x)$。 我们可以估计一个函数(模型)$\hat{y}={f}'(x)$,这个就是我们常说的深度学习模型,它代表我们认为的从输入x到输出y的映射关系。
  • 可以把{f}'(x)理解成一个 “黑箱”,通过堆叠神经网络层(如卷积层、全连接层)来构建这个函数的具体形式。
  • 常见的模型包括 CNN(用于图像)、RNN(用于序列)、Transformer(用于文本和多模态)等。

2. 定义一个合适的损失函数

  • 损失函数L 用来衡量模型预测值 \hat{y} 和真实标签y 之间的差距;L=\left |\hat{y}-y\right |(或L=(\hat{y}-y)^{2})
  • 它是模型优化的 “指南针”,目标是让损失值尽可能小。
  • 不同任务对应不同的损失函数:
    • 分类任务:交叉熵损失(Cross-Entropy Loss)
    • 回归任务:均方误差(MSE)
    • 生成任务:对抗损失(GAN Loss)

3. 根据损失,对模型进行优化

  • 这一步通过反向传播(Backpropagation)计算损失(Loss)对模型参数的梯度,再用优化器(如 SGD、Adam)更新参数,从而最小化损失。
  • 核心思想是让模型在训练数据上不断 “学习”,调整自身参数以提升预测准确性。
  • 优化过程中还会用到正则化(如 Dropout、L2 正则)和学习率调度等技巧,防止过拟合并加速收敛。

4. 实例(以线性模型为例)

1.定义模型

这里的真实生成规律是 y = 2x + 1 + \xi(\xi 是随机噪声),所以理想模型是 y = 2x + 1。表格里的 x是特征(输入),y是带噪声的标签(输出),我们要从这些数据里学习出最接近真实规律的模型。

我们假设模型形式为:\hat{y}=wx+b;其中:

  • w(weight):权重,代表特征x对预测值的影响大小。
  • b(bias):偏差,代表模型的基准输出。
  • \hat{y}:模型的预测值。
2.定义损失函数(Loss Function)
  • 损失函数用来衡量模型预测值 \hat{y}和真实标签 y的差距,这里使用绝对值损失:L(w,b)=\left |\hat{y}-y \right |=\left |wx+b-y \right |
  • L_{avg}=\frac{1}{N}\sum_{1}^{N}l(损失值要求平均值)
  • 它的作用:
    • 评价参数:损失值越小,说明当前我们假设的(w, b)越接近真实值。
    • 优化目标:我们的任务就是找到能让损失值最小的w和 b(在这个例子里,理想值是w=2,b=1)。
3.模型优化环节(用梯度下降法找到让损失函数最小的模型参数)
1.核心目标

找到最优参数 w^{*}和b^{*} ,使得损失函数 L(w,b)最小:w^{*},b^{*}=\arg \underset{w,b}{min}L这里的损失函数是之前提到的绝对误差:L(w,b)=\left |\hat{y}-y \right |=\left |wx+b-y \right |

2. 梯度下降的基本思想

梯度下降是一种迭代优化算法,它通过不断沿着损失函数负梯度方向更新参数,来逐步逼近最小值点。

  • 梯度(\frac{\partial L}{\partial w}​):表示损失函数在当前参数点的变化率和方向,对于图上例子来讲,即为\bar{x}=\frac{\partial L}{\partial w}。

  • 学习率(\eta):控制每一步更新的幅度,是一个超参数。

3. 梯度下降的步骤(以参数 w为例)
  1. 随机初始化:随机选择一个初始参数 w^{0}(右上标表示迭代的版本号,w^{0}表示第0代版本)。

  2. 计算梯度:在 w=w^{0} 处计算损失函数L对 w的偏导数 \frac{\partial L}{\partial w}|_{w=w^{0}}。

  3. 更新参数:沿着负梯度方向更新 w的值:w^{t+1}=w^{t}-\eta \times \frac{\partial L}{\partial w}|_{w =w^{0}};重复步骤 2-3,直到梯度接近 0(损失值不再明显下降,即取到L_{avg}最接近最小值的情况)

图中的 V 形曲线是损失函数 L 关于参数 w的图像:曲线的最低点就是损失值最小的位置,对应最优参数 w^{*}。当在 w^{0}处时,梯度为正,说明需要向左(负梯度方向)移动 w才能让损失变小。当在最低点左侧时,梯度为负,说明需要向右移动 w。

梯度下降天然不会停在极大值,核心原因:梯度下降固定往负梯度走:

  • 如果当前处在极大值附近,梯度指向损失变大的方向;
  • 减去 梯度 × 学习率,参数会立刻往损失更小的区域逃离,不会收敛到极大值。

易错点:梯度计算和参数更新是两个完全独立的阶段 

梯度计算阶段:从输出层到输入层逐层顺序进行

参数更新阶段:逻辑上是所有参数同时更新的,不存在 “逐层依次更新”

为什么梯度更新要逐层进行?

反向传播的数学基础是链式法则,这个特性决定了梯度的计算顺序必须是自顶向下的。

以下图中例子为例:

更多推荐