深度学习中的训练损失与验证损失详解

训练损失衡量了模型在训练过程中从训练数据学习的程度。验证损失则展示了训练好的模型在未见过的数据上的表现,帮助我们检测过拟合。

训练损失是一个指标,用于衡量深度学习模型在训练数据集上的表现。在训练过程中,模型会进行预测,并将这些预测结果与实际的目标值进行比较。然后,损失函数会计算这些预测输出与真实标签之间的误差。

训练损失是在每次前向传播和反向传播之后计算的。训练损失可以表示为:

> \text{Loss} = \frac{1}{N} \sum{i=1}^{N} L(yi, \hat{y}_i)

其中:

  • N:训练样本的总数
  • y_i:真实标签
  • \hat{y}_i​:预测输出
  • L:所选的损失函数

较低的训练损失意味着模型学习得很好,而较高的训练损失通常表示欠拟合或难以学习模式。

验证损失是一个评估指标,用于衡量深度学习模型在验证数据集(模型在训练期间从未见过的数据集)上的性能。验证损失是在训练期间的每个 Epoch 之后计算的。

> \text{Validation Loss} = \frac{1}{M} \sum{i=1}^{M} L(yi^{\text{val}}, \hat{y}_i^{\text{val}})

其中:

  • M:验证样本的数量
  • y_i^{\text{val}}:第 i 个验证样本的真实标签
  • \hat{y}_i^{\text{val}}:第 i 个验证样本的预测输出

监控这两种损失的重要性

  • 检测过拟合: 如果训练损失下降但验证损失上升,这表明模型正在死记硬背训练数据。
  • 检测欠拟合: 如果两种损失都保持很高,说明模型太简单或者没有很好地学习到模式。
  • 超参数调整: 损失的变化趋势有助于我们调整学习率、批大小、架构和正则化。
  • 泛化能力: 验证损失反映了模型在未见过的现实世界数据上的表现。
  • 优化训练过程: 同时监控这两种损失有助于做出决策,例如早停和学习率调度。

分步实现

在这里,我们将在 Fashion MNIST 数据集上训练一个简单的 CNN,监控训练和验证损失,并绘制损失曲线。

步骤 1:导入库

在这里,我们将导入 TensorFlowKerasMatplotlib

Python


CODEBLOCK_512b4141

步骤 2:加载和预处理数据集

  • 将 Fashion MNIST 图像和标签加载到训练集和测试集中。
  • 重塑图像以供 CNN 输入。
  • 将像素值归一化到 [0, 1] 范围内。
  • 将整数标签转换为独热编码。

Python


CODEBLOCK_fe87113c

步骤 3:构建 CNN 模型

Python


CODEBLOCK_f9ea7bc1

步骤 4:编译模型

  • Adam 优化器 自适应优化器,调整学习率以实现更快、更高效的训练。
  • [分类交叉熵损失:](https://www.geeksforgeeks.org
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/29223.html
点赞
0.00 平均评分 (0% 分数) - 0