学习笔记

神经网络:前向传播与反向传播

深度学习 · 激活函数、梯度与参数更新

神经网络把多层可学习的变换连接起来。每一层接收输入,计算加权和,再经过激活函数,逐步形成用于预测的表示。

一层网络做了什么

z = W x + b
h = ReLU(z)
ReLU(z) = max(0, z)  # 对每个元素分别计算

x 是输入向量,W 是权重矩阵,b 是偏置向量。如果输入有 3 个特征、输出有 4 个神经元,采用列向量记法时,W 的形状为 4 × 3。

非线性激活函数很关键:如果每一层都只有线性变换和偏置,叠加多层仍然可以合并成一次仿射变换。

前向传播:算出预测和损失

输入依次经过网络各层得到预测,再用损失函数衡量预测与目标的差异。回归常用均方误差,分类常用交叉熵。损失函数的选择应与任务和输出形式一致。

反向传播:计算梯度

反向传播应用链式法则,从损失开始向前面的层传递导数,计算每个参数对损失的影响。它负责计算梯度;优化器再利用梯度更新参数。

参数 ← 参数 − 学习率 × 损失对参数的梯度

这是最基本的梯度下降更新。学习率过大可能导致震荡或发散,过小则可能学习缓慢。沿负梯度方向走一小步通常能降低当前损失,但不能保证找到全局最优解。

一个小批次的训练顺序

  1. 读取一批输入和目标。
  2. 清空上一轮累积的梯度。
  3. 前向计算预测与损失。
  4. 反向传播计算梯度。
  5. 由优化器更新参数。

一轮 epoch 通常表示遍历一次训练集,一个 batch 是其中的一小批样本。观察训练时,要同时记录训练损失和验证指标。