第五章 机器学习基础
这里写的比较简单,仅仅是机器学习与深度学习相关联的一些知识。传统机器学习的知识比如线性回归、决策树、PCA 主成分分析等内容都没有给出,可以自己了解。
5.1 机器学习的基本任务
机器学习的基本任务一般分成监督学习、无监督学习、半监督学习、强化学习。这四种学习方式的区别主要在于数据标注的情况以及模型学习目标的不同。
监督学习(Supervised Learning)是最常见的机器学习形式,它依赖于一组带有标签(label)的样本数据。假设我们有训练集 \(\mathcal{D} = \{(x_i, y_i)\}_{i=1}^N\),其中 \(x_i\) 表示输入特征,\(y_i\) 表示对应的真实输出标签。模型的目标是学习一个映射函数 \(f_\theta(x)\),使其在给定输入时能尽可能准确地预测输出,也就是最小化损失函数 \[ \mathcal{L}(\theta) = \frac{1}{N}\sum_{i=1}^{N} \ell(f_\theta(x_i), y_i) \] 其中 \(\ell(\cdot)\) 通常是均方误差(MSE)或交叉熵损失。典型任务包括分类(如图像识别、情感分析)和回归(如房价预测、温度预测)。
无监督学习(Unsupervised Learning)则在没有标签的数据上进行学习。此时模型只有输入样本 \(\{x_i\}\),目标是发现数据的内在结构或潜在分布。例如聚类(如 K-Means、DBSCAN)通过最小化样本到簇中心的距离求解: \[ \min_{C_1,\dots,C_k} \sum_{i=1}^k \sum_{x_j \in C_i} \|x_j - \mu_i\|^2 \] 其中 \(\mu_i\) 表示第 \(i\) 个簇的中心。此外,主成分分析(PCA)是一种常见的降维方法,它通过最大化样本方差方向找到最优投影矩阵 \(W\): \[ \max_W \ \text{Tr}(W^T S W), \quad \text{s.t.} \ W^T W = I \] 其中 \(S\) 为样本协方差矩阵。
半监督学习(Semi-supervised Learning)位于监督和无监督学习之间。它利用少量标注数据与大量未标注数据共同训练,从而在节省标注成本的同时保持较高性能。其核心思想是让模型在标注数据上拟合标签,在未标注数据上保持一致性或平滑性。例如伪标签法(Pseudo-Labeling)会用模型当前预测结果作为未标注样本的临时标签;一致性正则化(Consistency Regularization)通过最小化不同扰动下预测结果的差异来实现平滑约束: \[ \mathcal{L}_{semi} = \mathcal{L}_{sup} + \lambda \cdot \mathbb{E}_{x_u}[\|f_\theta(x_u) - f_\theta(\tilde{x}_u)\|^2] \] 其中 \(\tilde{x}_u\) 是加噪或增强后的未标注样本。
强化学习(Reinforcement Learning, RL)是一种通过与环境交互来学习策略的方式。它的目标不是直接拟合输入输出,而是通过试错过程获得最大化长期回报的策略 \(\pi(a|s)\)。在时间步 \(t\),智能体在状态 \(s_t\) 下执行动作 \(a_t\),环境返回奖励 \(r_t\) 并转移到新状态 \(s_{t+1}\)。目标是最大化期望累计回报: \[ J(\pi) = \mathbb{E}_{\pi}\left[\sum_{t=0}^{\infty} \gamma^t r_t\right] \] 其中 \(\gamma\) 是折扣因子,用于平衡当前与未来的奖励。强化学习中有基于价值的方法(如 Q-learning)、基于策略的方法(如 Policy Gradient)以及两者结合的 Actor-Critic 方法。
5.2 机器学习的一般流程
机器学习的一般流程是:明确目标、收集数据、输入数据、数据探索与预处理、选择模型及损失函数、评估及优化模型。
机器学习的一般流程是一个从目标设定到模型优化的完整闭环过程,它体现了从数据到智能的系统化思维。无论是回归、分类还是强化学习,几乎都遵循以下基本步骤。
首先是明确目标(Define Objective)。任何机器学习任务都必须以明确的问题定义为起点。例如,我们要预测房价,这是一个回归问题;要判断邮件是否为垃圾邮件,这是一个分类问题。目标决定了数据类型、模型选择及评价指标。数学上,任务可表述为学习一个函数 \(f_\theta(x)\),使得其在给定任务目标下最小化某种损失或风险函数: \[ \min_\theta \ \mathbb{E}_{(x,y)\sim \mathcal{D}}[L(f_\theta(x), y)] \] 其中 \(\mathcal{D}\) 是数据分布,\(L(\cdot)\) 是损失函数。
其次是收集数据(Data Collection)。数据是机器学习的基础,质量直接决定模型性能。数据来源包括公开数据集、网络爬取、传感器采集或人工标注。收集阶段需注意样本的多样性与代表性,以避免偏差(bias)和过拟合(overfitting)。数据量过少可能导致模型欠拟合(underfitting),即无法学习到潜在规律。
第三步是输入数据(Data Input),即将原始数据转化为机器可理解的形式。不同类型的数据需要不同处理方式:数值型特征可直接输入,类别特征常用独热编码(One-Hot Encoding)或嵌入向量(Embedding)表示,文本数据可用 TF-IDF 或词向量,图像则通过像素矩阵或卷积特征输入。若数据维度较高,还可进行降维操作,如主成分分析(PCA)提取主要特征。
接着进行数据探索与预处理(Exploration and Preprocessing)。探索性数据分析(EDA)帮助我们理解数据的分布、缺失情况及异常点。常见预处理包括:缺失值填补、标准化(standardization)、归一化(normalization)、去除异常值、数据增强(data augmentation)等。标准化公式为 \[ x' = \frac{x - \mu}{\sigma} \] 其中 \(\mu\) 和 \(\sigma\) 分别为样本均值与标准差,使得各特征具有相似尺度,有助于模型收敛。
之后是选择模型及损失函数(Model and Loss Selection)。根据任务类型选择合适的算法:线性回归、决策树、神经网络等。损失函数用于度量预测结果与真实标签的差距。例如在分类任务中使用交叉熵损失: \[ \mathcal{L} = -\sum_{i=1}^N y_i \log f_\theta(x_i) \] 在回归任务中则常用均方误差: \[ \mathcal{L} = \frac{1}{N}\sum_{i=1}^{N}(y_i - f_\theta(x_i))^2 \] 优化算法如梯度下降(Gradient Descent)通过更新参数 \[ \theta \leftarrow \theta - \eta \nabla_\theta \mathcal{L} \] 不断逼近最优解,其中 \(\eta\) 为学习率。
最后是评估及优化模型(Evaluation and Optimization)。评估阶段需划分训练集、验证集和测试集。分类任务常用准确率(Accuracy)、精确率(Precision)、召回率(Recall)与 F1 值等指标;回归任务使用均方误差(MSE)、平均绝对误差(MAE)等指标。若训练误差低而验证误差高,则说明模型过拟合,此时可采用正则化(如 L2 范数 \(\lambda \|\theta\|_2^2\))、早停(early stopping)、Dropout 等方法进行优化。交叉验证(Cross Validation)也是常见的评估手段,可提高泛化能力。
整体而言,机器学习流程从目标到优化是一个循环迭代的过程。模型评估后若效果不理想,应返回前一步重新选择特征、调整模型或优化数据。通过这种闭环迭代,机器学习系统才能逐渐逼近真实世界的复杂规律,实现“数据—模型—反馈—改进”的智能演化。
5.3 过拟合与欠拟合
在机器学习与深度学习中,模型的表现常受到“过拟合(Overfitting)”与“欠拟合(Underfitting)”的影响。两者分别反映模型对训练数据学习不足或学习过度的情况,是影响泛化能力的关键问题。
欠拟合指模型过于简单,无法捕捉数据的潜在规律。例如使用线性模型去拟合非线性关系时,预测误差在训练集和测试集上都较大。此时模型的偏差(bias)较高,方差(variance)较低,表现为学习能力不足。数学上,欠拟合对应期望误差分解中的高偏差项: \[ \mathbb{E}[(y - \hat{f}(x))^2] = \text{Bias}^2 + \text{Variance} + \text{Noise} \] 而过拟合则是模型过于复杂,在训练集上表现极好,但在新样本上性能显著下降。此时模型不仅学习了真实规律,还记住了噪声。过拟合的特征是训练误差低、测试误差高,方差项较大。防止过拟合的关键是提升模型的泛化能力。
为应对这些问题,深度学习中提出了多种正则化与归一化技术。首先是权重正则化(Weight Regularization),又称参数惩罚。它通过在损失函数中增加一个权重约束项,使模型参数不会过大或过多依赖特定特征。常见的两种方式是 L1 和 L2 正则化: \[ \mathcal{L}_{reg} = \mathcal{L}_{orig} + \lambda \sum_i |w_i| \quad (\text{L1}) \] 其中 \(\lambda\) 为正则化系数,控制约束强度。L1 会产生稀疏参数,有助于特征选择;L2 则鼓励权重分布平滑,减少过拟合。
Dropout 正则化是深度学习中特有的防过拟合方法。其核心思想是在训练过程中随机“丢弃”部分神经元,即以概率 \(p\) 将某些节点的输出设为 0,从而避免神经元间的过度依赖。其数学形式为: \[ \tilde{h}^{(l)} = r^{(l)} \odot h^{(l)}, \quad r^{(l)} \sim \text{Bernoulli}(p) \] 其中 \(h^{(l)}\) 为第 \(l\) 层激活值,\(\odot\) 表示逐元素乘。Dropout 让网络在每次前向传播时相当于抽样出一个子网络,从而提升整体模型的鲁棒性。推理阶段会对输出按保留比例缩放,以保持数值一致性。
批量归一化(Batch Normalization, BN)通过在每个小批量(mini-batch)内规范化激活分布来加速训练并提高稳定性。具体操作是:对每个特征维度计算均值与方差,再将其标准化: \[ \hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} \] 之后再通过可学习的缩放与平移参数恢复表达能力: \[ y_i = \gamma \hat{x}_i + \beta \] 其中 \(\mu_B\) 与 \(\sigma_B^2\) 为批量均值与方差,\(\gamma,\beta\) 为可训练参数。BN 减少了“内部协变量偏移”(internal covariate shift),使网络对学习率和初始化更不敏感。
然而当各隐藏层输入均值靠近 0 时:
- 激活函数输出落入线性区或饱和区,网络非线性减弱;
- 梯度传播容易消失或趋于单一方向,优化难以继续;
- 层间输出缺乏多样性,深层结构退化为线性模型。
BN 保证输入均值接近 0、方差接近 1,但同时引入了可学习参数 \(\gamma\) 和 \(\beta\)。这让网络能动态调整输入分布,使其既不会过度集中于 0,也不会进入激活饱和区,从而保持非线性区间的有效利用。这就是为什么 BN 能显著加速收敛并提高深层网络稳定性的根本原因之一。
层归一化(Layer Normalization, LN)与 BN 类似,但它在每个样本的特征维度上进行标准化,而非在批次维度上。这使得 LN 更适合序列模型(如 Transformer),因为它不依赖 batch 大小。其计算方式为: \[ \hat{x}_i = \frac{x_i - \mu_L}{\sqrt{\sigma_L^2 + \epsilon}}, \quad \mu_L = \frac{1}{H}\sum_{j=1}^{H}x_j \] 其中 \(H\) 表示特征维度数。LN 提高了训练稳定性,尤其是在循环神经网络与自注意力结构中。
BN 是纵向计算,而 LN 是横向计算,BN 是对单个特征的一个批次进行计算,而 LN 是基于同义层的不同特征的一个样本进行计算。
权重初始化(Weight Initialization)是防止欠拟合和梯度消失的重要手段。若初始权重过大,梯度可能爆炸;若过小,梯度可能消失。经典方法包括 Xavier 初始化(适用于 Sigmoid/Tanh)和 He 初始化(适用于 ReLU): \[ \text{Xavier: } w \sim \mathcal{U}\left(-\sqrt{\frac{6}{n_{in}+n_{out}}}, \sqrt{\frac{6}{n_{in}+n_{out}}}\right) \] 其中 \(n_{in}\) 与 \(n_{out}\) 分别为输入与输出神经元数量。合理的初始化能保持前后层的方差平衡,促进网络稳定收敛。
综上,欠拟合需要增强模型复杂度或特征表达,而过拟合则需约束模型能力或改善数据分布。通过权重正则化、Dropout、归一化及恰当初始化,深度学习模型能在偏差与方差之间取得良好平衡,从而实现高效而稳定的泛化表现。
5.4 选择合适的激活函数
在神经网络中,激活函数(Activation Function)是赋予模型非线性表达能力的关键环节。没有激活函数的网络只是线性变换的叠加,无论堆多少层,本质上都相当于一个单层线性模型。因此,激活函数的设计与选择直接决定了网络能否捕捉复杂的模式、是否容易训练、以及梯度传播的稳定性。
一般来说,一个好的激活函数应当满足以下三个基本条件: ① 非线性:必须能引入非线性变换,使网络能够逼近任意复杂函数。如果激活函数是线性的,例如 \(f(x)=ax+b\),则无论叠加多少层,整个网络仍为线性映射,无法建模复杂的决策边界。 ② 可导性(或几乎处处可导):为了使用梯度下降法优化权重,激活函数需要在绝大多数点上可微。不可导点(如 ReLU 的 0 处)应是有限个、不影响整体梯度传播的。 ③ 输出有界或数值稳定:激活函数输出不应增长过快,否则会导致梯度爆炸或收敛困难。理想情况下,其输出范围应控制在有限区间或具备良好的归一化特性,从而保持梯度的稳定传播。
接下来,我们分析常见的几种激活函数及其特点。
Sigmoid 函数: \[ \sigma(x) = \frac{1}{1+e^{-x}} \] 其输出范围为 \((0,1)\),能将任意实数压缩到概率区间内,常用于二分类输出层。Sigmoid 的优点是平滑且单调递增,但存在两个显著问题:① 在 \(|x|\) 较大时进入饱和区,梯度趋近于 0,导致梯度消失;② 输出均值非零,导致下一层输入分布偏移,训练收敛慢。因此在深层网络中很少使用。
Tanh 函数: \[ \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} \] 输出范围为 \([-1,1]\),是 Sigmoid 的中心化版本,能让数据在正负区间均衡分布,有助于梯度更新方向更稳定。Tanh 的缺点同样是饱和问题:当输入绝对值较大时,梯度仍趋近于 0。因此在浅层网络(如 RNN)中使用较多,但在更深层结构中逐渐被 ReLU 系列取代。
ReLU(Rectified Linear Unit)函数: \[ f(x) = \max(0, x) \] ReLU 是目前最常用的激活函数之一。它简单高效,在 \(x>0\) 区间梯度恒为 1,不会饱和,从而有效缓解梯度消失问题。同时计算量小,收敛速度快。其主要缺陷是“神经元死亡”问题:当输入长期小于 0 时,梯度为 0,神经元可能永远不再激活,导致信息流失。
Leaky ReLU 函数: \[ f(x) = \begin{cases} x, & x > 0 \\ \alpha x, & x \le 0 \end{cases} \] 其中 \(\alpha\) 是一个很小的正数(如 0.01)。Leaky ReLU 为 ReLU 的改进版本,通过在负区间引入微小斜率来避免神经元死亡,使得梯度始终非零,从而保持学习能力。它在实践中比标准 ReLU 更稳定,尤其在输入分布不均衡的情况下。
Softmax 函数: \[ \text{softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}} \] Softmax 将实数向量转化为概率分布,所有输出之和为 1。它常用于多分类任务的输出层,使模型输出可解释为类别概率。尽管 Softmax 不是隐藏层的激活函数,但在分类网络中扮演着关键角色。其梯度形式良好,便于与交叉熵损失结合优化。
如何选择合适的激活函数:
- 对于隐藏层,在现代神经网络中 ReLU 及其变体(Leaky ReLU、ELU、GELU 等)几乎是默认选择。它们计算简单、收敛快、梯度传播稳定。若模型较浅或为循环结构(如 RNN),可考虑使用 Tanh。
- 对于输出层,选择需依据任务类型:回归任务使用线性输出层 \(f(x)=x\);二分类任务使用 Sigmoid;多分类任务使用 Softmax。
- 在Transformer 等预训练模型中,常见激活是 GELU(高斯误差线性单元),其形式
\[ \text{GELU}(x) = x \Phi(x) \]
(\(\Phi(x)\) 为标准高斯分布的累计函数),兼具 ReLU 的稀疏性与 Tanh 的平滑性,能更好地拟合复杂分布。 总结: 激活函数的选择并非随意,而是对梯度流、收敛性与表达能力的平衡。Sigmoid、Tanh 强调平滑性但易饱和;ReLU 系列强调稀疏性与高效性;Softmax 则用于概率输出。一个优秀的激活函数应让梯度既不过大也不过小,使神经元在有效区间内持续学习,从而保障整个深度网络的稳定、高效与非线性建模能力。
5.5 选择合适的损失函数
在机器学习与深度学习中,损失函数(Loss Function)是衡量模型预测结果与真实标签之间差距的核心指标,它直接决定了模型参数更新的方向与幅度。优化算法(如梯度下降)就是通过最小化损失函数,使模型不断逼近最优解。简单来说,损失函数定义了“模型做得有多好”,不同任务类型应选择不同的损失形式。 1. 回归任务常用损失函数 回归问题的目标是预测连续数值,例如房价、温度等。
- 均方误差(MSE, Mean Squared Error):
\[ \mathcal{L}_{MSE} = \frac{1}{N}\sum_{i=1}^{N}(y_i - \hat{y}_i)^2 \]
MSE 对偏差较大的样本惩罚更严,使模型倾向于减少大误差。它平滑可导、计算简单,是最常见的回归损失。但由于平方项放大了离群点的影响,当数据中存在异常值时可能导致训练不稳定。
- 平均绝对误差(MAE, Mean Absolute Error):
\[ \mathcal{L}_{MAE} = \frac{1}{N}\sum_{i=1}^{N}|y_i - \hat{y}_i| \]
MAE 对异常值更稳健,但其导数在 0 处不连续,收敛速度略慢。 在实际应用中,也可使用 Huber 损失作为两者折中:当误差较小时使用平方项,较大时使用绝对值项,从而兼顾稳定性与平滑性。 2. 分类任务常用损失函数 分类任务预测离散类别,关注概率分布匹配程度。
- 交叉熵损失(Cross-Entropy Loss): 对于二分类任务(标签 \(y \in \{0,1\}\)),交叉熵定义为:
\[ \mathcal{L}_{CE} = -[y\log(\hat{y}) + (1-y)\log(1-\hat{y})] \]
其中 \(\hat{y}\) 是模型预测为正类的概率。 对于多分类任务(类别数为 \(K\)),则为: \[ \mathcal{L}_{CE} = -\sum_{k=1}^{K} y_k \log(\hat{y}_k) \] 这里 \(y_k\) 是独热编码(one-hot)形式的真实分布,\(\hat{y}_k\) 来自 Softmax 输出。交叉熵度量真实分布与预测分布的距离,是最常用的分类损失。 3. 特殊任务的损失函数
- 对比损失(Contrastive Loss):用于度量学习与表征学习,鼓励相似样本靠近,不相似样本远离。
- Triplet Loss(三元组损失):在人脸识别等任务中常用,通过锚点样本 \(a\)、正样本 \(p\)、负样本 \(n\) 的距离差定义:
\[ \mathcal{L} = \max(0, d(a,p) - d(a,n) + \alpha) \]
使模型学习区分性更强的特征表示。
- KL 散度(Kullback–Leibler Divergence):用于分布拟合或生成模型中,度量两个概率分布 \(P\) 与 \(Q\) 的差异:
\[ D_{KL}(P\|Q) = \sum_i P(i)\log\frac{P(i)}{Q(i)} \]
在变分自编码器(VAE)等模型中非常常见。 4. 如何选择合适的损失函数
若预测目标是连续值 → 选用 MSE 或 MAE;
若任务是二分类或多分类 → 选用交叉熵;
若任务涉及相似度、表征学习或生成分布 → 使用对比损失或 KL 散度;
若样本分布极不平衡,可在交叉熵中引入权重或使用 Focal Loss,强化难样本学习。
总的来说,损失函数相当于模型的“方向盘”:它定义了优化目标,决定模型在参数空间中前进的方向。选择合适的损失函数应根据任务类型、数据特性和训练目标来权衡,从而让模型在拟合精度与泛化能力之间取得理想平衡。
5.6 选择合适的优化器
在神经网络训练中,优化器(Optimizer)是用于更新模型参数、最小化损失函数的重要算法。它决定了模型从初始状态到最优解的搜索路径与效率。优化器的本质是在高维非凸空间中寻找最优参数,不同优化方法在收敛速度、稳定性、泛化性能上都有差异。选择合适的优化器能显著加快训练、避免陷入局部极小值或震荡。 (1)梯度下降的基本思想 假设损失函数为 \(\mathcal{L}(\theta)\),参数为 \(\theta\)。梯度下降(Gradient Descent)通过沿负梯度方向更新参数,使损失逐步减小: \[ \theta_{t+1} = \theta_t - \eta \nabla_\theta \mathcal{L}(\theta_t) \] 其中 \(\eta\) 为学习率(learning rate),控制每次更新步长。学习率太大会震荡甚至发散,太小则收敛缓慢。根据使用样本数量不同,梯度下降可分为:
批量梯度下降(BGD):用全量样本计算梯度,收敛稳定但计算代价大;
随机梯度下降(SGD):每次仅使用一个样本,更新频繁但噪声大;
小批量梯度下降(Mini-batch SGD):综合两者优点,最常用形式。
(2)常见优化器及特点
① SGD(Stochastic Gradient Descent)带动量(Momentum) 基本 SGD 在复杂损失曲面上可能陷入局部极小值或震荡。引入动量项可使参数在梯度方向上“加速”: \[ v_t = \beta v_{t-1} + (1-\beta)\nabla_\theta \mathcal{L}(\theta_t), \quad \theta_{t+1} = \theta_t - \eta v_t \] 其中 \(\beta\in[0,1)\) 控制动量大小。动量机制类似物理惯性,可以在平滑方向加速收敛、在噪声方向抑制震荡,是深度学习中的经典优化方式。
② AdaGrad(Adaptive Gradient) AdaGrad 为每个参数设计独立的学习率,使频繁更新的参数学习率逐渐减小: \[ r_t = r_{t-1} + (\nabla_\theta \mathcal{L}(\theta_t))^2, \quad \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{r_t + \epsilon}} \nabla_\theta \mathcal{L}(\theta_t) \] 这种自适应调整使稀疏特征得到更快更新,但长期训练中学习率会过快衰减,容易停滞。
③ RMSProp(Root Mean Square Propagation) 为解决 AdaGrad 的过度衰减问题,RMSProp 引入指数加权移动平均: \[ r_t = \rho r_{t-1} + (1-\rho)(\nabla_\theta \mathcal{L}(\theta_t))^2, \quad \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{r_t + \epsilon}} \nabla_\theta \mathcal{L}(\theta_t) \] RMSProp 能动态平衡学习率,使训练更稳定,特别适合非平稳目标(如循环神经网络)。
④ Adam(Adaptive Moment Estimation) Adam 结合了 Momentum 与 RMSProp 的优点,既记录梯度的一阶动量(均值)又记录二阶动量(方差): \[ m_t = \beta_1 m_{t-1} + (1-\beta_1)\nabla_\theta \mathcal{L}(\theta_t) \] 经过偏差修正后更新参数: \[ \hat{m}_t = \frac{m_t}{1-\beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1-\beta_2^t}, \quad \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon}\hat{m}_t \] Adam 具有收敛快、调参简单、适应性强的优点,是目前深度学习中最常用的优化器之一。
⑤ AdamW(Weight Decay Adam) AdamW 是 Adam 的改进版本,将权重衰减项从梯度更新中解耦,使正则化更有效: \[ \theta_{t+1} = (1 - \eta \lambda)\theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon}\hat{m}_t \] 其中 \(\lambda\) 为权重衰减系数。AdamW 已成为 Transformer、BERT 等预训练模型的默认优化器,兼顾快速收敛与良好泛化。 (3)优化器的选择策略
- 若模型简单、数据规模中等,可用 SGD+Momentum,具有良好的泛化能力;
- 若任务复杂或梯度噪声大(如 NLP、CV 任务),推荐 Adam 或 AdamW,收敛快且稳定;
- 若数据稀疏或特征维度高,可尝试 AdaGrad;
- 若模型存在非平稳目标(如时序模型),可用 RMSProp;
- 若追求高精度与稳定性,可用 AdamW + 学习率调度器(如 Cosine Annealing 或 Warmup)。
- 也可以前期使用 Adam 训练到较好的参数后,再切换到 SGD + 动量优化。