|||
最近在实验中遇到了调整参数的问题,咨询了很多研究者,在此做一个总结,如果有不对的地方,还请批评指正。
实验过程:
1 在训练集上找出使其rmse最小的参数
2.在验证集上测试
3. 调整参数,选择使验证集上结果最好的参数
4.在测试集上进行最后的测试,得到最终结果
先调整学习速率,使迭代次数在一个可以接受的范围内,因此学习速率过小,会导致迭代次数很大,初始lambda是不是应该设为0。
在现有学习速率的基础上,在验证集上调整正则化参数,主在是判断是不是出现了variant和bias的问题。
(1)如果lambda过小,则可能会出现variant问题,那就是训练误差很小,而验证集上的误差很大,增加labmda会使步长(学习速率与增量的乘积)变小,学习速率变慢。
(2)如果lambda过大,则可能会出现bias的问题,就是训练误差和验证误差都很大,并且相差很小,减少lambda会使步长变大,从而使得收敛速度变快。
最终的结果应该是使得训练误差和验证误差都比较小,而且很接近,并且训练误差在有限迭代次数内能达到最小值。
(1)增加学习速率,相当于增加步长,也相当于增加正则化参数
(2)减小学习速率,相当于减小步长,也相当于减小正则化参数。
3. 在现有基础上,由于增加lambda会使学习速率变慢,因此需要在轻度过拟合的时候增加学习速率的值,这样也可以进一步减轻过拟合问题(增加学习速率,会变相增加正则化参数)。也就是当存在轻度过拟合问题,并且学习过程过慢的情况下,应该增加学习速率的值,而不是正则化参数lambda的值。但是如果学习速率过大,会导致步长过大,导致训练误差比较大,进一步也会影响验证误差,也就是说增加学习速率会有可能会使验证误差变大。
4. 如果lambda过大,则会出现bias的问题,这时应该减少lambda的值,注意,这也相当于减小了步长,会使收敛速率加快。
需要注意的是:验证集上的误差会在迭代过程中,出现先小后大的情况,我们似乎只需要关注在训练集上收敛的情况。
由于限制了迭代的次数,所以在准确率上会有所损失(训练误差只是近似最优),但应该也在可以接受的范围之内。
在过拟合情况下,训练误差的最优值会比较小,而在正常情况下,训练误差会比较大,也验证误差相当。因此,在调参的过程中,会出现训练误差逐步增加的情况(从过学习到正常情况)。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-27 09:54
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社