训练误差与泛化误差的说明

1. 训练误差与泛化误差的定义

在机器学习中,评价一个模型“优劣”的最直观的数据就是模型的误差,其中误差又分为以下两种误差:

- 训练误差(training error):模型在训练数据集上表现出的误差;

- 泛化误差(generalization error):模型在任意测试数据上表现出的误差。

讲定义太无聊了,下面直接通过实例说明。

2. 通过实例说明训练误差与泛化误差

假设我们要构建一个网络模型来拟合下面的训练数据:

- 输入:trianset_x = [1, 2, 3, 4, 5]

- 输出:trainset_y = [1, 4, 9, 16, 25]

然后我们构建了一个网络模型A进行训练,经过训练后测试,输入trainset_x输出为:

- A_output = [1.1, 4.3, 8.9, 15.6, 26.1]

这里网络模型A训练误差即为loss(trainset_y, A_output), 其中loss为损失函数。

这里,我们可以看到网络模型A的效果并不太好,它的训练误差还是比较大的。于是我们又构建一个网络模型B

网络模型B训练后输入trainset_x输出为:

- B_output = [1.00001, 4.00001, 9.00001, 16.00001, 25.00001]

可见,网络模型B的训练误差已经远远小于网络模型A。

那么网络模型B就一定比网络模型A好吗?

肯定不是!!

要知道,我们构建网络模型的目的是实现输入到输出的预测,是要“泛化”到所有的输入数据都能有准确的输出,而不是仅仅关注在训练数据上。

回到上面的例子,如果再输入一个测试数据testset_x = [10, 20],真实的期望输出testset_y = [100, 400],而此时

网络模型A的输出为:A_test_output = [93.7, 412.8]

网络模型B的输出为:B_test_output = [-12.89, 1023,432]

此时的误差loss(A_test_output, testset_y)loss(B_test_output, testset_y)即为泛化误差。可见网络模型A的泛化误差明显小于网络模型B的泛化误差。

可以直观看出网络模型A是更好的模型,所以机器学习模型应该更加关注泛化误差的降低

实际应用中,类似网络模型B这种离谱输出的情况很有可能是因为过拟合导致的。

猜你喜欢

转载自blog.csdn.net/m0_49963403/article/details/129972848