深度学习 课程笔记
本文最后更新于 2025年5月3日 晚上
优化器|Optimizer
SGD
概念:SGD(Stochastic Gradient Descent),每次更新权重只用小批次(mini batch)的样本梯度,而不是整个数据集的梯度。
公式: \[ \theta=\theta-\alpha\cdot\nabla J \]
优点:
- 计算量小
- 可以频繁更新,加快训练速度
缺点:
- 更新不稳定,可能导致震荡,不容易收敛
- 需要调整学习率
SGD With Momentum
概念:受物理世界启发,在更新参数时,加入动量,i.e. 积累历史梯度。
公式: \[ v_t=\beta\,v_{t-1}+(1-\beta)\nabla J\\ \theta=\theta-\alpha v_t \] 其中:\(\beta\) 是动量衰减因子,通常取0.9
优点:
- 下降更快
- 容易跳出局部极小值
- 减小震荡次数
- 提高收敛速度
缺点:
- 需要调节衰减因子和学习率
Adagrad
概念:Adagrad(Adaptive Gradient Algorithm),是一种自适应优化算法,会根据每个参数的历史梯度调整学习率。
公式: \[ \theta=\theta-\frac{\alpha}{\sqrt{G_t+\epsilon}}\cdot \nabla J \]
优点:
缺点:
RMSprop
概念:
Adam
概念:Adam(Adaptive Momentum Estimation),是 Momentum 与 RMSprop 的结合
Nadam
激活函数|Activation Function
正则化|Regularization
(1)神经网络训练方式
- 批量训练:一次性求出最小值并不好求,利用计算机用迭代计算
- mini batch
- 随机梯度下降:每个 epoch 随机选一个样本,在样本向前传播完之后,马上调整权重和偏置
(2)常用激活函数|Activation Function
- Sigmoid Function
- tanh Function
- ReLu Function
- Leaky ReLu
(3)激活函数性质
- 非线性
- 可微性
- 单调性
- \(f(x)\approx x\)
- 计算简单
- 归一化
- 输出值范围
(4)损失代价函数|Loss or Cost Function
一般按照最小均方误差 MSE 原则 \[ J(w)=\sum_{\text{sample}}\sum_{i=1}^n (\hat{y}_i-y_i)^2 \] (5)常见的损失代价函数
- Sigmoid
- Moon Loss
- Triplet Loss
- Contrastive Loss
- Cross-Entropy Loss
(6)防止过拟合|Overfitting
- 参数范数惩罚:正则化:L1正则化,L2正则化
- 数据增强
- Early Stopping(提前终止)
- Bagging 集成
- Dropout(漏失)
- 批正则化
(7)防止过拟合——惩罚性成本函数
在 Cost Function 中加上惩罚项,下面的例子是加上网络权重的平方和
该方法类似于岭回归
这种方法也叫 \(L_2\) 正则化 \[ J(w)=\frac{1}{2n}\sum_{i=1}^n(\hat{y}_i-y_i)^2+\lambda\sum_{j=1}^mW_j^2 \] (8)防止过拟合——漏失|Dropout
在训练的每一个迭代(批次),依概率漏掉一些神经元子集。
(9)提前停止|Early Stopping
比如:
对训练样本进行10个 epoch 之后,对测试样本观察损失函数
- 损失下降,继续训练
- 损失上升,停止训练
(10)动量|Momentum
概念:每次仅略微改变方向
保持步进方向的连续平均数,消除个别点的变化。 \[ v_t\coloneqq\eta \cdot v_{t-1}-\alpha\cdot\nabla J\\ W\coloneqq W-v_t \] \(\eta\) 表示动量(decay rate),通常小于1