深度学习概览¶
本页目标:建立统一术语与工程视角,避免“只会调包不会定位问题”。
1. 什么是深度学习¶
深度学习(Deep Learning)是机器学习的一个分支。核心是:
- 用参数化函数(通常是神经网络)近似复杂映射关系;
- 通过数据驱动学习参数;
- 使用梯度下降及其变体优化目标函数。
形式化地,给定输入 \(x\)、参数 \(\theta\)、模型 \(f_\theta\):
\[
y = f_\theta(x)
\]
训练过程是在数据集 \(\mathcal{D}\) 上最小化经验风险:
\[
\min_\theta \frac{1}{N}\sum_{i=1}^{N}\mathcal{L}(f_\theta(x_i), y_i)
\]
2. 深度学习工作流¶
- 问题定义:任务类型(分类/回归/生成/检索/多模态)。
- 数据准备:采集、清洗、标注、切分、版本化。
- 建模:基线模型、损失函数、优化器、评估指标。
- 训练:监控训练曲线、调参、正则化、早停。
- 评估:离线指标 + 误差分析 + 线上指标。
- 部署:模型导出、服务化、监控、回滚。
3. 最小可运行训练示例(PyTorch)¶
import torch
import torch.nn as nn
from torch.utils.data import DataLoader, TensorDataset
# 1) 造一个二分类玩具数据集
x = torch.randn(1000, 20)
true_w = torch.randn(20, 1)
logits = x @ true_w + 0.1 * torch.randn(1000, 1)
y = (torch.sigmoid(logits) > 0.5).float()
dataset = TensorDataset(x, y)
loader = DataLoader(dataset, batch_size=64, shuffle=True)
# 2) 定义模型
model = nn.Sequential(
nn.Linear(20, 64),
nn.ReLU(),
nn.Linear(64, 1)
)
criterion = nn.BCEWithLogitsLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)
# 3) 训练循环
for epoch in range(10):
model.train()
epoch_loss = 0.0
for xb, yb in loader:
optimizer.zero_grad()
pred = model(xb)
loss = criterion(pred, yb)
loss.backward()
optimizer.step()
epoch_loss += loss.item() * xb.size(0)
print(f"epoch={epoch:02d} loss={epoch_loss/len(dataset):.4f}")
4. 初学者最常见误区¶
- 把“训练集效果好”当成“模型有效”。
- 只看单一指标,不做分组误差分析。
- 数据泄漏(如把未来信息泄露到训练特征)。
- 不做可复现管理(随机种子、依赖版本、数据快照)。
5. Wiki 不应该有的内容(本项目约定)¶
- 营销文案式表述:只说“很强大”但没有定义与证据。
- 无来源的性能结论:必须标注实验设置或引用来源。
- 不可运行伪代码堆砌:示例代码应最小可运行。
- 只给结论不给边界条件:必须说明适用场景和限制。