深度学习总结(八)——训练、开发和测试集及偏差和方差

本文介绍了深度学习中数据集的划分,包括小数据时代和大数据时代的划分比例。强调了验证集和测试集的作用,确保它们与训练集分布一致以优化模型性能。同时,讨论了偏差和方差的概念,如何通过训练集和验证集来调整模型以平衡两者。深度学习的一大优势在于,它允许我们在不牺牲泛化能力的情况下减少对偏差和方差平衡的关注。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述


1. 数据集的划分

小数据时代: 70%(训练集)/30%(测试集)或者60%(训练集)/20%(验证集)/20%(测试集)
大数据时代: 验证集和测试集的比例要逐渐减小,比如:
980000/10000/10000

2. 验证集和测试集的作用

深度学习需要大量的数据,我们可能会采用网上爬取的方式获得训练集,容易出现训练集和验证集、测试集分布不一致的情况,由于验证集的目的就是为了验证不同的算法,选取效果好的。所以确保验证集和测试集的数据来自同一分布可以加快训练速度,模型在测试集上也会获得较好的效果。

测试集的目的是对最终选定的神经网络系统做出无偏评估。(测试集可以不要)

没有测试集时,验证集也会被称为测试集,但是人们是把这里的测试集当成简单交叉验证集使用。

搭建训练验证集和测试集能够加速神经网络的集成,也可以更有效地衡量算法的偏差和方差。从而帮助我们更高效地选择合适的方法来优化算法。

训练集误差 1% 15% 15% 0.5%
### 深度学习中过拟合欠拟合的概念 在机器学习领域,尤其是深度学习中,模型的表现可以分为三类:过拟合、欠拟合以及适度拟合。这些概念对于理解模型性能至关重要。 #### 欠拟合 (Underfitting) 当一个模型既无法很好地捕捉到训练数据中的模式,在训练集上的误差较大,也无法泛化到新的未见过的数据时,则认为该模型发生了欠拟合现象[^1]。这种情况通常表现为: - **偏差高**:即预测值与实际目标之间的差异大; - **方差低**:不同样本间的变化影响较小; 这表明模型过于简单,未能充分表达输入特征与输出标签间的映射关系。因此,即使是在已知的训练集中也难以取得较好的成绩。 #### 过拟合 (Overfitting) 相反地,如果一个模型能够完美甚至超常地记忆住训练集里的每一个细节以至于它不仅学会了有用的信息还记住了噪声部分,那么就出现了过拟合的情况[^2]。具体特点如下: - **偏差低**:因为几乎完全匹配了训练数据; - **方差高**:对新数据非常敏感,容易受到微小扰动的影响而产生巨大波动; 这意味着虽然模型可以在训练集上获得极高的准确性,但在面对未知测试集或其他真实世界场景下的表现却很差劲。 #### 适度拟合 (Good Fit) 理想的状况是找到两者之间的一个平衡点——既能较好地适应现有数据又具备一定的泛化能力去应对未来可能出现的新情况。此时模型具有适中的偏差方差水平,能够在保持一定灵活性的同时有效地概括出潜在规律。 ### 图像表示区别解释 为了更直观地区分上述三种状态,可以通过绘制损失函数随迭代次数变化曲线来展示它们各自的特点: - 对于**欠拟合**而言,无论是训练还是验证阶段,其损失都会维持在一个较高的位置不变,显示出明显的收敛失败迹象。 - 而到了**过拟合**这边,可以看到随着轮次增多,尽管训练错误率持续下降直至趋近零点附近,但是交叉验证/测试集合上的得分反而会逐渐恶化上升形成剪刀差形态。 - 至于**适度拟合**的理想情形下,两条线应该趋于平稳并尽可能靠近彼此但不相交,代表着稳定且良好的学习效果。 ```python import matplotlib.pyplot as plt import numpy as np # 假设数据 epochs = range(1, 101) train_loss_underfit = [np.random.uniform(0.8, 1.2) for _ in epochs] val_loss_underfit = train_loss_underfit.copy() train_loss_overfit = [-0.05 * i + 1.5 for i in epochs] val_loss_overfit = [min(train_loss_overfit[i], val_loss_underfit[i]) + 0.7 for i in range(len(epochs))] good_fit_train = [max(-0.01*i+1, 0.3) for i in epochs] good_fit_val = good_fit_train[:] plt.figure(figsize=(14, 4)) plt.subplot(131) plt.plot(epochs, train_loss_underfit, label='Training Loss') plt.plot(epochs, val_loss_underfit, '--', label='Validation Loss') plt.title('Underfitting') plt.legend() plt.ylim([0, 2]) plt.subplot(132) plt.plot(epochs, train_loss_overfit, label='Training Loss') plt.plot(epochs, val_loss_overfit, '--', label='Validation Loss') plt.title('Overfitting') plt.legend() plt.ylim([0, 2]) plt.subplot(133) plt.plot(epochs, good_fit_train, label='Training Loss') plt.plot(epochs, good_fit_val, '--', label='Validation Loss') plt.title('Good Fit') plt.legend() plt.ylim([0, 2]); plt.tight_layout() plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值