深度学习包括定义问题、构造模型、实现模型和模型评估四个部分。
原始目标树
图:DeepLearningTree 知识树,点击查看 SVG 大图。
定义问题
任务输入指预测时能够获得的信息。图像分类可以接收一张图像,语言模型接收已有文本,交互中的智能体接收当前观测。训练时能够获得的标签或未来信息,未必在预测时也能获得;输入约定决定后续的数据整理和评价方式。
输出可以是类别、数值、生成的序列或动作。类别通常由各类分数或概率得到,连续预测直接产生数值,生成可以连续做多次条件预测,动作则会影响下一步的观测。原图中的分类、生成、决策和预测由这些输出要求引出,具体表示见问题与输出和输出张量、分数与概率。
学习方式按训练信号区分。监督学习使用样本附带的目标,自监督学习从数据内部构造目标,无监督学习拟合数据结构,强化学习利用交互中的奖励。
构造模型
原始信息先变成数值张量。表格特征需要固定的列顺序,图像需要解释高度、宽度和通道,文本需要从 token 编号查到嵌入向量。batch 轴把多条样本组织成一次计算。对应的数据表示包括特征向量、像素张量和嵌入向量。
给定输入 ,网络用参数 定义输出 。线性层计算 ,激活函数再改变结果;多层复合得到 MLP。
单层结构的计算方式:
| 原图分支 | 计算方式 | 章节 |
|---|---|---|
| 全连接 | 输出单元读取输入特征的加权组合 | MLP |
| 卷积 | 在局部窗口中运算,并在不同位置共享参数 | 卷积与 CNN |
| 循环 | 每一步用当前输入和上一隐藏状态计算新状态 | RNN、LSTM、GRU |
| 注意力 | 根据查询与键的匹配程度,对值做加权汇聚 | 注意力、Transformer |
“组织多层”把这些运算接成完整网络。堆叠把上一层输出交给下一层;跳跃连接让输入沿另一条路径参与后面的计算;融合通过相加、拼接或门控合并信息。CNN、Transformer 和生成网络会复用这些连接方式。
生成模型包括自回归模型、自编码器、变分自编码器、生成对抗网络和扩散模型,各自定义训练目标与采样过程。
实现模型
训练集参与参数更新,验证集用于选择模型和训练设置,测试集用于最终报告。训练循环包括:
- 前向传播:把一个 batch 输入网络,得到数值、分数或概率。
- 计算损失:用与任务匹配的损失比较输出和目标,得到一个标量。
- 反向传播:沿计算图应用链式法则,求出损失对各参数的梯度。
- 更新参数:优化器根据梯度及其保存的状态改变参数。
- 检查停止条件:继续训练就读取后续 batch;达到预定条件后,用选定的模型进入评价。
例如,设一批数据为 ,平均损失为
是批量大小, 是单条样本的损失, 汇总该批次的误差。最基本的梯度下降更新为
其中 为学习率。负梯度给出当前点局部减小损失的方向,更新后的损失还取决于步长和函数形状。单样本损失 的定义见损失函数,梯度计算和更新规则见反向传播与优化。
原图的 End?在代码中对应训练轮数、更新步数或验证表现等停止条件。最终评价使用选定的 checkpoint;测试集不参与反复调参。预训练与微调进一步解释参数从哪里开始、冻结哪些层,以及 LoRA 怎样改变可训练参数的形式。
模型评估
“正确性”要落到具体任务上:分类检查类别和概率,回归检查预测误差,生成检查目标分布及样本质量,决策检查回报与任务完成情况。指标的定义决定它能够发现哪些错误,见评价与泛化。
“泛化性”追问模型能否处理未参与训练的数据。训练误差很低而验证误差很高时,需要检查过拟合、划分方式和分布差异,再考虑数据增强、正则化或调整模型。评价结果因此会返回前面三个主干:重新检查任务约定、表示和结构,或改变训练设置。
