1 上节内容回顾:分类器、损失函数与训练目标
1.1 图像分类的基本形式
图像分类(Image Classification)是计算机视觉中的核心任务:给定一张图像,从预先定义好的标签集合中选择一个类别,例如 dog、cat、truck、plane 等。这个任务表面上只是输出一个类别,但实际困难来自图像中的多种变化:光照、视角、形变、遮挡、背景杂乱以及同类内部差异。
早期的简单方法可以用最近邻分类器(k-Nearest Neighbor, kNN)理解:把测试图像与训练图像比较,选择距离最近的样本或最近的若干样本投票。kNN 的优点是训练阶段几乎没有计算,但测试慢、距离度量很脆弱,也难以真正学习视觉语义。
1.2 线性分类器与分数函数
本讲的优化和正则化围绕线性分类器展开。对一张输入图像 \(x\),线性分类器输出各类别分数:
\[ f(x, W) = Wx + b \]
其中 \(W\) 是权重矩阵,\(b\) 是偏置项。每个类别对应一组权重,分数越高表示模型越倾向于把图像判为该类别。训练的目标不是手工指定 \(W\),而是通过数据自动找到一组能让训练样本分类正确、并且能泛化到测试数据的参数。
1.3 损失函数与总体训练目标
给定训练集:
\[ \{(x_i, y_i)\}_{i=1}^{N} \]
其中 \(x_i\) 是第 \(i\) 个样本,\(y_i\) 是它的真实类别标签。损失函数(Loss Function)衡量当前模型在一个样本上的错误程度,数据集上的平均损失写作:
\[ L_{\text{data}}(W)=\frac{1}{N}\sum_{i=1}^{N}L_i(f(x_i,W),y_i) \]
常见分类损失包括多类 SVM 损失和 Softmax 交叉熵损失。它们的共同目的都是让正确类别的分数相对错误类别更高。到这里,学习问题就变成了一个优化问题:如何找到让损失尽可能小的参数 \(W\)?
2 正则化(Regularization)
2.1 为什么需要正则化
如果只最小化训练集上的数据损失,模型可能会过度贴合训练数据中的偶然噪声。一个简单的一维拟合例子可以说明这一点:如果数据点来自某个大致平滑的趋势,复杂模型可能穿过每个训练点,却在测试点上表现很差;较简单的模型虽然训练误差不一定最低,但更可能捕捉真实规律。
正则化(Regularization)的核心思想是:在要求模型拟合训练数据的同时,对模型复杂度或参数形态施加偏好,从而提高泛化能力。完整目标通常写成:
\[ L(W)=L_{\text{data}}(W)+\lambda R(W) \]
其中 \(R(W)\) 是正则化项,\(\lambda\) 是正则化强度(regularization strength)。\(\lambda\) 越大,模型越倾向于满足正则化偏好;\(\lambda\) 越小,训练目标越接近纯数据损失。
2.2 Occam’s Razor 与简单模型偏好
正则化背后的直觉可以用奥卡姆剃刀(Occam’s Razor)概括:当多个假设都能解释训练数据时,优先选择更简单的假设。在机器学习中,“简单”不一定指模型参数少,也可以指权重更小、更平滑、更稀疏,或训练过程更不容易记住噪声。
考试重点:正则化并不是让训练集表现更好,而是有意阻止模型在训练集上“好得过头”,用一点训练误差换取更好的测试泛化。
2.3 常见正则化形式
常见的参数正则化包括:
| 正则化 | 形式 | 主要偏好 |
|---|---|---|
| L2 正则化 | \(R(W)=\sum_k W_k^2\) | 惩罚大权重,让权重更平滑、更分散 |
| L1 正则化 | \(R(W)=\sum_k |W_k|\) | 鼓励稀疏权重,使更多参数接近或等于 0 |
| Elastic Net | \(R(W)=\alpha\sum_k |W_k|+\beta\sum_k W_k^2\) | 同时结合稀疏性和小权重偏好 |
L2 正则化喜欢把影响分散到多个维度上。例如两个权重向量如果都能产生相似分类效果,L2 更偏好多个较小权重共同发挥作用,而不是少数维度权重特别大。L1 正则化则更偏好稀疏解,因为绝对值惩罚会把一些参数推到 0。
除了这些显式参数惩罚,深度学习中还有更复杂的正则化方法,例如 Dropout、Batch Normalization、Stochastic Depth、Fractional Pooling 等。它们不一定都表现为简单的 \(R(W)\),但都在某种意义上限制模型过拟合或改善训练行为。
2.4 正则化的三个作用
正则化至少有三层意义:
- 表达对权重的偏好:例如偏好小权重、稀疏权重或更平滑的函数。
- 提升测试集泛化:通过限制模型记忆训练噪声,让模型学习更稳定的规律。
- 改善优化曲面:某些正则项会给目标函数增加曲率,使优化问题更稳定。
这里要注意,正则化强度 \(\lambda\) 是超参数,需要通过验证集调节。训练损失最低的 \(\lambda\) 不一定最好,验证集表现才是选择超参数的依据。
3 优化问题:从随机搜索到梯度下降
3.1 训练分类器就是最小化损失
在有了分数函数、损失函数和正则化项之后,训练问题可以写成:
\[ W^\ast=\arg\min_W L(W) \]
也就是说,参数 \(W\) 是优化变量,损失 \(L(W)\) 是目标函数。对线性分类器而言,\(W\) 可能已经有成千上万个参数;对深度神经网络而言,参数数量可以达到百万、十亿甚至更多。因此,优化算法必须能在高维空间中高效寻找低损失区域。
3.2 随机搜索为什么很差
最直观但很糟糕的办法是随机搜索:随机采样许多组 \(W\),计算它们在训练集或验证集上的表现,选最好的一个。这个方法偶尔能比随机猜测稍好,例如在 CIFAR-10 上可能得到十几个百分点的准确率,但远远达不到现代模型水平。
随机搜索的问题在于高维空间巨大。参数维度越高,随机命中好区域的概率越低。优化不能只靠“试运气”,而应该利用损失函数本身提供的信息。
3.3 顺着斜率下降
更合理的策略是观察损失函数在当前位置的斜率。对一维函数,导数告诉我们函数在当前位置向右增加还是减少;对多维函数,梯度(Gradient)是所有偏导数组成的向量:
\[ \nabla_W L(W)=\left[\frac{\partial L}{\partial W_1},\frac{\partial L}{\partial W_2},\ldots,\frac{\partial L}{\partial W_d}\right] \]
梯度方向是函数上升最快的方向,因此负梯度方向 \(-\nabla_W L(W)\) 是局部下降最快的方向。梯度下降的基本思想就是:反复计算当前位置的梯度,然后沿负梯度方向小步更新参数。
4 数值梯度、解析梯度与梯度检查
4.1 数值梯度
数值梯度(Numerical Gradient)用有限差分近似偏导。对某个参数维度 \(W_j\),可以计算:
\[ \frac{\partial L}{\partial W_j}\approx \frac{L(W+h e_j)-L(W)}{h} \]
其中 \(e_j\) 表示只在第 \(j\) 个维度为 1 的单位向量,\(h\) 是很小的扰动。例如某一维参数增加 \(0.0001\) 后,损失从 \(1.25347\) 变为 \(1.25322\),则该维梯度近似为:
\[ \frac{1.25322-1.25347}{0.0001}=-2.5 \]
数值梯度的优点是容易实现、直观,不需要手工推导复杂公式。缺点也很明显:慢,并且只是近似值。如果有上百万个参数,每次计算完整梯度都要对每个维度单独扰动并重新计算损失,代价不可接受。
4.2 解析梯度
解析梯度(Analytic Gradient)通过微积分直接推导 \(\nabla_W L(W)\) 的公式。它速度快、结果精确,实际训练中必须使用解析梯度。深度学习框架中的自动微分,本质上就是在计算图上自动应用链式法则得到解析梯度。
解析梯度的风险是实现容易出错,尤其是手写反向传播或自定义损失函数时。一处符号、维度或广播错误,就可能让训练表现异常。
4.3 梯度检查
实践中的标准做法是:训练时使用解析梯度,但用数值梯度检查解析梯度实现是否正确。这叫梯度检查(Gradient Check)。
| 方法 | 优点 | 缺点 | 用途 |
|---|---|---|---|
| 数值梯度 | 容易写,直观 | 慢,只是近似 | 调试梯度实现 |
| 解析梯度 | 快,精确 | 推导或实现可能出错 | 实际训练 |
梯度检查通常只在小模型、小 batch 或少量参数上做,因为它太慢。通过检查后,就可以相信解析梯度并进入正式训练。
5 梯度下降与随机梯度下降(SGD)
5.1 梯度下降更新式
标准梯度下降(Gradient Descent)的参数更新为:
\[ W_{t+1}=W_t-\eta \nabla_W L(W_t) \]
其中 \(\eta\) 是学习率(Learning Rate)。学习率控制每一步走多远:太小会训练很慢,太大可能越过低损失区域,甚至让损失爆炸。
从几何上看,每一步都沿当前点的负梯度方向移动。由于梯度只是局部信息,梯度下降不保证一步到达全局最优,而是通过许多小步逐渐降低损失。
5.2 全量梯度下降的代价
完整数据损失为:
\[ L(W)=\frac{1}{N}\sum_{i=1}^{N}L_i(W)+\lambda R(W) \]
如果每次更新都计算所有 \(N\) 个样本上的梯度,当训练集很大时会非常昂贵。深度学习训练集通常包含数万、数百万甚至更多样本,全量梯度下降每一步都太慢。
5.3 随机梯度下降与 minibatch
随机梯度下降(Stochastic Gradient Descent, SGD)用一个小批量(minibatch)样本近似全数据梯度:
\[ \nabla_W L(W)\approx \frac{1}{B}\sum_{i\in \mathcal{B}}\nabla_W L_i(W)+\lambda \nabla_W R(W) \]
其中 \(\mathcal{B}\) 是大小为 \(B\) 的 minibatch。常见 batch size 例如 32、64、128。SGD 每次更新便宜很多,因此可以频繁更新参数。
SGD 的关键权衡是:minibatch 梯度是有噪声的估计,不一定等于全量梯度;但只要估计方向总体上有用,许多便宜的小步通常比少数昂贵的大步更适合深度学习。
6 SGD 的困难:病态曲率、局部极小值、鞍点与噪声
6.1 问题一:不同方向曲率差异很大
如果损失函数在一个方向变化很快,在另一个方向变化很慢,SGD 会出现典型的低效行为:在陡峭方向来回震荡,在平坦方向前进缓慢。这种现象常出现在狭长山谷形的损失曲面中。
课件用条件数(Condition Number)描述这种困难。粗略来说,Hessian 矩阵最大和最小奇异值之比很大时,损失曲面在不同方向的曲率差异很大,优化会变得困难。
6.2 问题二:局部极小值与鞍点
在非凸优化中,损失函数可能存在局部极小值(Local Minimum)和鞍点(Saddle Point)。如果梯度接近 0,普通梯度下降可能停滞。
在高维深度学习问题中,鞍点通常比局部极小值更常见。鞍点在某些方向像极小值,在另一些方向像极大值;如果算法只看当前位置梯度,可能因为梯度很小而难以离开。
6.3 问题三:minibatch 梯度噪声
SGD 的梯度来自 minibatch,因此不同 batch 给出的梯度会有随机波动。噪声有时有好处,例如可以帮助模型逃离某些平坦停滞区域;但噪声也会让优化轨迹抖动,导致收敛不稳定。
因此,现代优化器通常会引入动量、自适应学习率或学习率计划,来缓解曲率差异、鞍点停滞和梯度噪声。
7 动量方法与自适应优化器
7.1 SGD + Momentum
动量(Momentum)的思想是维护一个速度向量,把过去的梯度方向累积起来。常见写法为:
\[ v_{t+1}=\rho v_t-\eta \nabla_W L(W_t) \]
\[ W_{t+1}=W_t+v_{t+1} \]
其中 \(\rho\) 是动量系数,常用 \(0.9\) 或 \(0.99\)。\(\rho\) 可以理解为“摩擦”或“记忆”参数:值越大,过去方向保留得越久。
动量的作用包括:
- 在长期一致的方向上加速,例如狭长山谷中的平坦方向。
- 在来回震荡的方向上相互抵消,例如陡峭方向。
- 在梯度噪声较大时,让更新方向更平滑。
因此,SGD + Momentum 往往比普通 SGD 更快、更稳定。
7.2 RMSProp
RMSProp 是一种自适应学习率方法。它为每个参数维度维护历史平方梯度的指数滑动平均:
\[ s_{t+1}=\beta s_t+(1-\beta)g_t^2 \]
\[ W_{t+1}=W_t-\eta \frac{g_t}{\sqrt{s_{t+1}}+\epsilon} \]
其中 \(g_t=\nabla_W L(W_t)\),平方和除法都是逐元素进行。直觉上,如果某个维度历史梯度一直很大,说明这个方向可能很陡,RMSProp 会缩小该方向步长;如果某个维度历史梯度较小,说明方向较平,RMSProp 会相对放大该方向更新。
核心结论:RMSProp 会抑制陡峭方向的更新,加速平坦方向的进展,因此能缓解不同方向曲率差异的问题。
7.3 Adam
Adam 可以理解为把 Momentum 和 RMSProp 结合起来。它同时维护一阶矩估计和二阶矩估计:
\[ m_t=\beta_1 m_{t-1}+(1-\beta_1)g_t \]
\[ v_t=\beta_2 v_{t-1}+(1-\beta_2)g_t^2 \]
其中 \(m_t\) 类似动量,\(v_t\) 类似 RMSProp 的平方梯度统计。由于 \(m_0\) 和 \(v_0\) 通常初始化为 0,训练初期估计会偏向 0,所以 Adam 使用偏差校正:
\[ \hat{m}_t=\frac{m_t}{1-\beta_1^t} \]
\[ \hat{v}_t=\frac{v_t}{1-\beta_2^t} \]
最终更新为:
\[ W_{t+1}=W_t-\eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t}+\epsilon} \]
常用起点是 \(\beta_1=0.9\)、\(\beta_2=0.999\),学习率 \(\eta=10^{-3}\) 或 \(5\times 10^{-4}\)。Adam 是许多模型的强默认选择,常常即使使用常数学习率也能工作得不错。
8 AdamW、权重衰减与学习率计划
8.1 Adam 中的 L2 正则化和 AdamW 的区别
在普通 SGD 中,L2 正则化和权重衰减(Weight Decay)常常可以看成等价。但在 Adam 这类自适应优化器中,二者不再完全等价,因为 L2 正则项会先进入梯度,再参与一阶、二阶矩统计。
标准 Adam 如果把 L2 正则化写进损失:
\[ L(W)=L_{\text{data}}(W)+\lambda \|W\|_2^2 \]
那么梯度中的正则化部分会参与 \(m_t\) 和 \(v_t\) 的计算。AdamW 的做法是把权重衰减从梯度矩估计中解耦,在 Adam 的自适应更新之后直接对权重施加衰减:
\[ W_{t+1}=W_t-\eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t}+\epsilon}-\eta\lambda W_t \]
重要区别:AdamW 的权重衰减项不参与 Adam 的动量和二阶矩统计,因此通常比在 Adam 损失中直接加 L2 更符合“缩小权重”的初衷。
8.2 为什么需要学习率计划
SGD、SGD + Momentum、RMSProp、Adam、AdamW 都依赖学习率。一个固定学习率可能在训练早期太小,导致进展慢;也可能在训练后期太大,导致模型无法稳定收敛。因此实践中常让学习率随训练时间变化。
常见学习率计划包括:
| 计划 | 形式或直觉 | 典型用途 |
|---|---|---|
| Step decay | 在若干固定 epoch 将学习率乘以某个因子,例如 \(0.1\) | 传统 CNN/ResNet 训练常见 |
| Cosine decay | 学习率按余弦曲线平滑下降 | 现代视觉和语言模型常见 |
| Linear decay | 从初始值线性下降到较小值或 0 | BERT 等训练中常见 |
| Inverse square root | 学习率按 \(1/\sqrt{t}\) 类似形式下降 | Transformer 相关训练中常见 |
余弦衰减常写作:
\[ \eta_t=\frac{1}{2}\eta_0\left(1+\cos\left(\frac{t}{T}\pi\right)\right) \]
其中 \(\eta_0\) 是初始学习率,\(t\) 是当前训练步或 epoch,\(T\) 是总训练长度。
8.3 Linear Warmup
训练初期如果学习率过高,损失可能爆炸。线性预热(Linear Warmup)会在最开始一段迭代中把学习率从 0 逐渐增加到目标值:
\[ \eta_t=\eta_{\max}\frac{t}{T_{\text{warmup}}}, \quad 0\le t\le T_{\text{warmup}} \]
预热结束后再接余弦衰减、线性衰减或其他计划。经验规则之一是:如果 batch size 扩大 \(N\) 倍,初始学习率也可以按比例扩大 \(N\) 倍,但通常需要配合 warmup 保持稳定。
9 一阶优化与二阶优化
9.1 一阶优化
一阶优化(First-Order Optimization)只使用梯度信息。可以把损失函数在当前位置做线性近似:
\[ L(W+\Delta W)\approx L(W)+\nabla L(W)^T\Delta W \]
然后选择能降低这个近似目标的方向。梯度下降、SGD、Momentum、RMSProp、Adam 都属于一阶方法。它们的优点是每步成本相对可控,适合大规模深度学习。
9.2 二阶优化
二阶优化(Second-Order Optimization)不仅使用梯度,还使用 Hessian 矩阵 \(H\) 描述曲率。二阶 Taylor 展开为:
\[ L(W+\Delta W)\approx L(W)+\nabla L(W)^T\Delta W+\frac{1}{2}\Delta W^T H \Delta W \]
令这个二次近似的导数为 0,可以得到 Newton 更新:
\[ W_{t+1}=W_t-H^{-1}\nabla L(W_t) \]
二阶方法的直觉是:如果知道曲率,就可以更聪明地决定每个方向走多远。
9.3 为什么二阶方法难以直接用于深度学习
深度学习模型参数 \(N\) 往往是百万、千万、亿级。Hessian 矩阵有 \(O(N^2)\) 个元素,存储已经很困难;求逆还需要 \(O(N^3)\) 时间,直接使用 Newton 方法几乎不可行。
因此,深度学习实践中最常用的仍然是一阶方法。若能进行全 batch、确定性优化,可以考虑 L-BFGS 等近似二阶方法;但在 minibatch 随机训练中,二阶方法的优势不容易直接发挥。
9.4 实践建议
本讲给出的实践经验可以概括为:
- Adam 或 AdamW 是许多模型的好默认选择,调参成本相对低。
- SGD + Momentum 有时能超过 Adam,但通常需要更仔细地调学习率和学习率计划。
- 如果能承受 full batch 更新,可以考虑二阶或近似二阶方法。
10 从线性分类器走向神经网络
10.1 线性分类器的局限
线性分类器只能用线性决策边界分割数据。如果二维平面中的红点和蓝点呈环形或其他非线性结构,单条直线无法把它们分开。
解决思路是引入特征变换。例如把原始坐标 \((x,y)\) 变换为极坐标相关特征 \((r,\theta)\),原来不可线性分离的数据可能在新特征空间中变得线性可分。
10.2 神经网络作为可学习特征变换
神经网络可以看成把“特征变换”也变成可学习的部分。一个两层神经网络可以写成:
\[ f(x)=W_2 \sigma(W_1 x) \]
其中 \(W_1\) 把输入映射到隐藏表示,\(\sigma\) 是非线性激活函数,\(W_2\) 再把隐藏表示映射到类别分数。实际中通常还会在每层加偏置项。
这里的关键是非线性。如果没有 \(\sigma\),多个线性层叠加仍然等价于一个线性层:
\[ W_2(W_1x)=(W_2W_1)x \]
因此,神经网络之所以比线性分类器更强,是因为它通过非线性层学习复杂特征空间。
10.3 名称说明
“神经网络(Neural Network)”是一个很宽泛的术语。本讲下一步要讨论的两层网络,更准确地说是全连接网络(Fully Connected Network)或多层感知机(Multi-Layer Perceptron, MLP)。后续课程会进一步讨论反向传播,也就是如何为多层网络高效计算梯度。
11 附录补充:Nesterov、AdaGrad、L-BFGS 与 SVM/Softmax 易混点
11.1 Nesterov Momentum
普通 Momentum 在当前位置计算梯度,再结合速度更新。Nesterov Momentum 的思想是先沿当前速度“向前看”一步,在这个前瞻位置计算梯度,再决定实际更新方向。
直觉上,普通动量像是根据当前位置的坡度和已有速度继续滑行;Nesterov 则先估计“如果按惯性走过去会到哪里”,再在那个位置修正方向。这种前瞻机制有时能减少过冲。
11.2 AdaGrad 与 RMSProp 的关系
AdaGrad 也使用历史平方梯度为每个参数设置自适应学习率:
\[ s_t=s_{t-1}+g_t^2 \]
\[ W_{t+1}=W_t-\eta \frac{g_t}{\sqrt{s_t}+\epsilon} \]
它会抑制历史梯度大的方向、加速历史梯度小的方向。但由于 \(s_t\) 持续累加不衰减,长期训练后分母越来越大,步长会逐渐衰减到接近 0。RMSProp 可以看成“带泄漏的 AdaGrad”:它使用指数滑动平均,让很久以前的梯度影响逐渐变小。
11.3 L-BFGS
BFGS 是拟牛顿方法,会近似 Hessian 逆矩阵,避免直接求 Hessian 逆。L-BFGS(Limited-memory BFGS)进一步减少内存,不显式存储完整逆 Hessian。
L-BFGS 在 full batch、确定性目标上通常表现很好;但在 minibatch 随机训练中,由于目标函数和梯度本身有噪声,L-BFGS 往往效果不好。把二阶方法适配到大规模随机深度学习仍然是研究方向。
11.4 SVM 零损失解为什么不唯一
多类 SVM 损失关注正确类别分数是否比错误类别分数至少高出 margin。如果某个 \(W\) 已经让所有样本损失为 0,把 \(W\) 放大为 \(2W\) 后,正确类别与错误类别之间的分数差距也会放大,因此损失仍然可能为 0。
这说明没有正则化时,零训练损失解不唯一。正则化可以在多个同样训练损失很低的解之间做选择,例如 L2 正则化通常会偏好范数更小的 \(W\),而不是无意义地把权重越放越大。
12 复习重点与易混点
12.1 必须掌握的核心公式
| 主题 | 公式 |
|---|---|
| 总损失 | \(L(W)=L_{\text{data}}(W)+\lambda R(W)\) |
| L2 正则化 | \(R(W)=\sum_k W_k^2\) |
| L1 正则化 | \(R(W)=\sum_k |W_k|\) |
| 梯度下降 | \(W_{t+1}=W_t-\eta\nabla_W L(W_t)\) |
| SGD minibatch 梯度 | \(\nabla_W L(W)\approx \frac{1}{B}\sum_{i\in \mathcal{B}}\nabla_W L_i(W)+\lambda\nabla_W R(W)\) |
| Momentum | \(v_{t+1}=\rho v_t-\eta g_t,\quad W_{t+1}=W_t+v_{t+1}\) |
| RMSProp | \(s_{t+1}=\beta s_t+(1-\beta)g_t^2,\quad W_{t+1}=W_t-\eta\frac{g_t}{\sqrt{s_{t+1}}+\epsilon}\) |
| Adam | \(m_t=\beta_1m_{t-1}+(1-\beta_1)g_t,\quad v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2\) |
| Newton 更新 | \(W_{t+1}=W_t-H^{-1}\nabla L(W_t)\) |
12.2 常见概念对比
| 概念 | 关键区别 |
|---|---|
| 数据损失 vs 正则化损失 | 数据损失要求拟合训练标签,正则化损失表达对模型复杂度或权重形态的偏好 |
| 训练误差 vs 泛化能力 | 训练误差低不代表测试表现好,过拟合时训练很好但测试变差 |
| 数值梯度 vs 解析梯度 | 数值梯度慢但易写,适合检查;解析梯度快且精确,适合训练 |
| 全量梯度下降 vs SGD | 全量梯度每步准确但贵;SGD 每步便宜但有噪声 |
| Momentum vs RMSProp | Momentum 平滑并累积更新方向;RMSProp 为每个维度调整学习率 |
| Adam vs AdamW | Adam 结合动量和自适应学习率;AdamW 解耦权重衰减,更适合配合 Adam 类优化器 |
| 一阶优化 vs 二阶优化 | 一阶只用梯度,成本低;二阶使用 Hessian 曲率,信息多但成本高 |
12.3 考试和作业中容易出错的点
- 正则化强度是超参数,通常用验证集选择,而不是训练集。
- L2 正则化偏好小而分散的权重,L1 正则化更偏好稀疏权重。
- 负梯度方向是局部下降最快方向,梯度本身是上升最快方向。
- 数值梯度不能用于实际训练大模型,它主要用于 gradient check。
- SGD 的 minibatch 梯度有噪声,这既是效率来源,也是训练不稳定来源。
- 鞍点在高维非凸问题中非常常见,不能只用一维局部极小值的直觉理解深度学习优化。
- Adam 的偏差校正来自初始矩估计为 0,训练初期尤其重要。
- Adam 中直接加 L2 与 AdamW 的权重衰减不同,因为前者会影响自适应矩估计。
- 学习率计划和优化器同样重要,一个好优化器配错学习率也可能训练失败。
- 多层线性变换仍然是线性的,神经网络需要非线性激活才能表达复杂决策边界。