深度学习使用数据、目标函数、优化器和评测协议训练参数化函数。架构很重要,但数据切分、预处理、计算预算、复现记录和失败分析同样重要。不存在适用于所有任务的“最佳架构”。
一个实用的心智模型
给定输入 (x)、参数 (\theta) 和目标 (y),一次训练步骤通常会:
- 计算预测值 (\hat y = f_\theta(x));
- 计算损失 (L(\hat y, y));
- 通过自动微分得到 (\nabla_\theta L);
- 使用优化器更新参数;
- 在不更新参数的情况下评估留出样本。
模型不会自动“理解”数据,而是在数据和系统提供的归纳偏置下,最小化指定目标。
神经网络基础
全连接层可以表示为仿射变换加非线性函数:
def layer(x, weight, bias, activation):
return activation(x @ weight.T + bias)
没有非线性激活时,多层仿射变换仍可合并成一个仿射变换。激活函数、归一化、架构和损失共同决定哪些函数容易学习。
反向传播与优化
反向传播使用微积分链式法则,在计算图中复用中间导数。自动微分负责计算导数,但不会替你选择合理目标,也不会阻止数据泄漏。
对参数 (\theta) 的基本更新为:
[ \theta_{t+1} = \theta_t - \eta \nabla_\theta L(\theta_t) ]
其中 (\eta) 是学习率。小批量在梯度噪声和吞吐之间折中。SGD、Momentum、Adam 和 AdamW 的正则化与收敛行为不同,“自适应”不等于“总是更好”。
最小可复现的 PyTorch 步骤
import torch
model = torch.nn.Linear(4, 2)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1e-4)
loss_fn = torch.nn.CrossEntropyLoss()
features = torch.randn(8, 4)
labels = torch.randint(0, 2, (8,))
optimizer.zero_grad(set_to_none=True)
logits = model(features)
loss = loss_fn(logits, labels)
loss.backward()
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
optimizer.step()
这是训练步骤示意,不是完整生产配方。真实实验应记录框架和 GPU 版本、随机种子策略、数据修订、批次构造、学习率计划、检查点和评测代码。
架构家族
卷积网络
卷积共享局部滤波器,适合具有局部性和位移结构的图像、音频及空间信号任务。池化并非必需,它以空间分辨率换取计算量和不变性。现代视觉系统也会使用注意力与混合设计,因此“所有图像任务都用 CNN”不是规则。
循环网络
RNN 按序列更新隐藏状态。LSTM 和 GRU 的门控有助于优化长依赖,但串行执行可能限制吞吐。它们仍适合部分流式和资源受限任务;选择应依据延迟、内存、序列长度和数据条件。
Transformer
Transformer 使用注意力、前馈层和位置信息。并行训练与灵活的上下文混合使其常见于语言、视觉、音频和多模态系统,但注意力成本、上下文限制、分词、内存和数据质量仍是硬边界。
潜变量与生成模型
- 自编码器:为重建目标学习编码器/解码器;
- VAE:约束概率潜变量分布,通常在重建项和 KL 项之间权衡;
- GAN:优化生成器与判别器的对抗博弈,可能不稳定或偏向部分模式;
- 扩散模型:围绕噪声计划学习去噪或 Score 相关目标,采样成本与引导策略会影响质量和多样性。
模型名称不能证明“最先进”。任何比较都应注明带日期的模型版本、数据集、Prompt 或预处理、计算预算、指标定义,以及可行时的方差或不确定性。
数据与评测
数据集本身就是模型的一部分。需要定义:
- 分析单位和标签政策;
- 训练/验证/测试或按时间切分;
- 去重和近重复处理;
- 缺失值、增强和归一化;
- 许可证、同意、隐私和保留期限;
- 类别不平衡与子群覆盖。
不要在测试集上调参。对于时间或用户数据,如果随机切分会泄漏,应按时间或实体切分。报告基线、可行时的置信区间或重复运行,并分析失败切片,而不是只给一个总体分数。
数据增强必须保持标签语义。会改变类别的旋转、裁剪或亮度变化,不能被当作通用增强。
有限标签下的学习方式
目标标签稀缺时,先区分监督信号来自哪里。半监督学习在明确分布或不变性假设下,把有标签与无标签样本用于同一目标;自监督学习从数据自身构造预训练 Target;弱监督学习使用不完整、粗粒度或含噪来源,但仍需要独立 Gold Set 评测。
伪标签是半监督技术之一,把筛选后的模型预测用于训练,也可能放大 Confirmation Bias。课程学习则改变训练期间重点暴露的样本或任务。两者都不会创造新真值,必须在相同数据、计算预算与未触碰测试协议下,分别与纯有标签和随机顺序基线比较。
预测不确定性
点预测不会说明系统表示了哪些变异,也不能证明不确定性估计可信。不确定性量化首先要求声明目标、可用信息、估计器、验证性质与决策;偶然不确定性描述该观测契约下仍存在的结果变异,认知不确定性描述既定模型与证据尚未确定的部分。深度集成与蒙特卡洛 Dropout能提供实用但不完整的模型敏感性代理。严格适当评分、校准、区间或集合覆盖率、锐度、关键切片、偏移行为和下游决策成本需要分别验证。
贝叶斯神经网络会定义先验与似然,并在后验上边缘化预测,而不是只使用一组拟合权重。后验通常难以精确计算,因此变分推断优化一个可处理分布族,拉普拉斯近似则在众数附近拟合局部高斯;两者保留的不确定性和失败模式不同。得到的后验预测分布既要与复制数据比较,也要接受未参与建模的结果评测。标签昂贵时,主动学习可以把经验证的不确定性转成查询策略,但必须在固定评测集上与随机采集比较收益。
马尔可夫链蒙特卡洛改用相关 Draw 表示后验。Metropolis-Hastings通过接受率修正 Proposal,Gibbs 采样更新可直接抽样的 Full Conditional;面对连续可微参数,哈密顿蒙特卡洛使用梯度引导轨迹,无掉头采样器自适应轨迹长度。这些方法都不能替代多链、ESS、Monte Carlo Error、采样器特有告警、预测检查与模型假设敏感性分析。
其他 MCMC 设计针对不同的转移失效。切片采样用水平集探索替代显式 Proposal Scale;自适应 MCMC在有理论依据的调节日程下学习转移参数;并行回火沿温度阶梯交换状态,改善分离模态之间的信息传递;可逆跳跃 MCMC还能在不同维度的模型空间之间执行跳跃。这些机制解决的问题不同,任何一种都不能在缺少专属诊断时保证发现全部模态、完成收敛或获得高效估计。
模型具有显式潜在高斯先验时,椭圆切片采样可以保持该先验并搜索 Likelihood Slice;退火重要性采样则用带权温度路径估计归一化常数比。若似然不可计算但存在非负无偏估计器,伪边际 MCMC可在扩展状态上保持精确参数后验;粒子 MCMC把该构造或条件粒子 Kernel 用于状态空间模型。这些保证都依赖各自的分解、支持集、估计器与状态保留条件。
高斯过程分类则为潜在类别分数设置 GP 先验,并通过近似方法积分非高斯似然。样本规模较大时,稀疏高斯过程可通过诱导点传递协方差,用近似与位置误差换取更低的稠密计算成本。
深层高斯过程组合多个随机 GP 映射,必须让分布经过隐藏层传播;多输出高斯过程则在多个相关目标函数之间定义协方差。前者需要处理逐层变分误差与层坍缩,后者会在输出相关性假设错误时产生负迁移;二者都不是单输出 GP 的通用升级版。
核与表示假设仍决定方差的含义。Matérn 核通过 nu 显式表达有限平滑度,深度核学习则先学习神经特征,再应用 GP 核。二者都不保证不确定性已经校准,必须在相同数据划分下比较适当评分、适用时的覆盖率、分布变化切片、简单基线、延迟与内存。
泛化与优化失败
过拟合与欠拟合
训练损失不能证明泛化。应比较训练/验证曲线,使用固定评测协议,并检查预处理或超参搜索是否泄漏验证信息。正则化、早停、增强或更多数据可能有帮助,但都会改变偏差—方差权衡。
单次训练代价高时,贝叶斯优化可以通过高斯过程或其他概率代理模型与采集函数分配验证评估。期望改进衡量单步收益,汤普森采样则抽取一个可能目标函数。这些策略不会让反复复用验证集变得安全:应固定搜索预算和指标,记录全部试验,并只在模型选择完成后使用最终测试集。
贝叶斯求积可以复用相近的 GP 与采集机制,但目标是估计积分,而不是寻找最优点。评测应关注积分误差、可信区间覆盖、函数评估成本,以及相对经典求积或 Monte Carlo 的收益,不能用已观测最佳函数值代替。
梯度消失、爆炸与不稳定
可能的缓解手段包括初始化、归一化、残差路径、门控单元、降低学习率、混合精度损失缩放和梯度裁剪。先检查梯度范数与激活统计,再针对失败模式选择方法。
分布偏移
模型可能在历史测试集上得分良好,却在用户、传感器、政策、语言或标签定义变化后失效。总括性条件是分布偏移:协变量偏移假设 P(Y|X) 稳定,标签偏移假设 P(X|Y) 稳定,概念漂移表示 P(Y|X) 随时间改变;分布外检测则相对于明确的分布内参考做样本级决策。应分别监控输入与结果证据,用代表性标签验证偏移子类型假设,定义调查与响应策略,并保留可回滚模型和数据快照。
可复现性与生产边界
记录代码版本、锁文件、数据快照、特征预处理、模型配置、随机种子、硬件、训练时长、检查点和评测输出。种子只能减少一种变化来源,不能保证不同硬件和算子上逐位确定性。
生产质量还包括:
- 输入/输出 Schema 校验;
- 访问控制和租户隔离;
- 速率、内存和超时预算;
- 模型与数据血缘;
- 隐私安全日志;
- 灰度或 Shadow 评测;
- 回滚与事故响应。
训练模型不等于获得数据使用许可,高指标也不能证明模型对未测试人群安全或公平。
常见问题
需要多少训练数据?
没有通用样本数。它取决于任务熵、标签噪声、模型容量、迁移学习、部署场景覆盖和评测不确定性。应通过学习曲线和有记录的数据采集计划估计,而不是套用固定数字。
为什么需要激活函数?
没有非线性时,多层仿射层会退化为一个仿射映射。激活函数扩大可表示的函数族,但其数值行为也会影响优化和硬件效率。
模型越大越好吗?
不一定。数据和计算足够时大模型可能改善测量任务,也可能过拟合、增加延迟与成本,或放大伪相关。应在固定协议下比较,并纳入运维约束。
CNN、RNN 和 Transformer 哪个最好?
没有普遍答案。根据局部性、序列长度、流式需求、上下文、内存、延迟、数据量和工具链选择,并记录实际测试版本与权衡。
延伸阅读
总结
深度学习是一套由目标函数、数据管线、可微程序、优化器和评测契约组成的实验学科。理解机制只是起点;可信结果还需要防泄漏切分、可复现记录、失败切片、运维限制和回滚方案。