神经网络训练中的问题
神经网络在数据之海中打捞规律,自成模型。这个过程全权由电脑完成,也因此我们担心它是否是一种泛化的模式,在其它「海域」继续工作时,它能否也能得到正确的结果?如何发现 可以泛化的模式 是机器学习的根本问题。
![image](https://img2023.cnblogs.com/blog/3306371/202401/3306371-20240114083618640-1806770786.png)
过拟合与欠拟合
我们的数据通常分成3份:
- 训练数据:用于神经网络训练的数据;
- 测试数据:神经网络训练完后,用于评估其准确度的数据;
- 验证数据:为了确定候选模型中的最佳模型所用的检验数据。
在实际训练中,会有 欠拟合 和 过拟合 的情况。我们将神经网络用训练数据计算时的误差称为「训练误差」,用测试数据计算时的误差称为「泛化误差」。那么:
- 当训练误差与泛化误差都很大时,称模型「欠拟合」。由于训练误差大,所以也称该模型有「高偏差」问题;
- 当训练误差很小,但泛化误差很大时,称模型「过拟合」。由于泛化误差大,所以也称该模型有「高方差」问题。
![image](https://img2023.cnblogs.com/blog/3306371/202401/3306371-20240114095602715-1403686068.png)
模型选取
在机器学习中,我们通常从几个候选模型后选择最终的模型。例如,训练多层感知机时,我们会⽐较有着不同隐藏层数、每层有着不同数量神经元以及使用不同激活函数的模型。
当神经网络「欠拟合」时,我们首先可以让它训练更长一段时间,如果仍无效,则会考虑使用更复杂的神经网络(更多隐藏层、增加层的神经元、换其它激活函数等)或者使用其它类型的神经网络。
数据集大小
在如今有大量数据(百万甚至更大)的情况下,训练数据的比重可以占得很大:训/测/验 = 98%/1%/1% 即便是1%的数据也有上万,足以用于检验了,我们可以将更多数据投入训练中。
训练数据集的大小对模型训练结果有什么影响?训练集样本过少,可能会导致严重的「过拟合」问题,反过来说,更多的训练数据能减小泛化误差,而且通常没有坏处(除了训练久一点),尤其是训练复杂的模型时。
在尝试了更多数据后,如果模型仍「过拟合」,则可以考虑 正则化 ,或者换用其它类型的神经网络。