softmax回归遇到的训练集准确率小于测试集准确率的问题
在阅读李沐老师的动手学深度学习文章时发现了在softmax回归中,当epoch < 2
时训练集准确率可能低于测试集准确率
下面是几点原因:
-
参数初始化与学习率的影响
在训练初期(如前两个epoch),模型参数尚未充分更新,可能仍接近随机初始化的状态。若学习率较高(如代码中的lr=0.1
),参数的剧烈调整可能导致训练集预测结果波动较大,而测试集在某个中间参数状态下可能偶然表现更好。 -
评估方式的差异
训练集的准确率通常按每个batch的累积平均计算,而测试集是在整个数据集上一次评估的。在训练初期,模型可能在某些batch中表现较差(尤其是初始batch),导致训练集整体准确率被拉低。而测试集在epoch结束后评估,可能恰好处于参数调整后的较优状态。 -
数据分布的暂时优势
测试集可能包含更多简单样本或类别分布更均衡,在模型未充分训练时,这些样本的分类更容易,导致测试集准确率暂时高于训练集。 -
欠拟合阶段
模型在初始阶段可能对训练数据欠拟合,而测试集的数据特性(如某些类别的偏向性)可能与初始参数偶然匹配,从而在测试集上表现更好。
随着训练的进行(epoch ≥ 2
),模型逐渐适应训练数据,训练集准确率会稳步提升并超过测试集。这种现象在初期较为常见,尤其在参数更新剧烈或数据分布存在微小差异时。