我正在使用网格调整神经网络的正则化参数(L2 正则化)。从价值观开始0.0005, 0.005, 0.05, 0.5, 5。然后,如果0.005获得最佳验证结果,我将继续使用这样的网格0.0015, 0.0025, 0.0035, 0.0045, 0.0055, 0.0065, 0.0075, 0.0085, 0.0095:而且还在继续。。
我想知道是否有更智能的方法来调整这个参数。
我正在使用网格调整神经网络的正则化参数(L2 正则化)。从价值观开始0.0005, 0.005, 0.05, 0.5, 5。然后,如果0.005获得最佳验证结果,我将继续使用这样的网格0.0015, 0.0025, 0.0035, 0.0045, 0.0055, 0.0065, 0.0075, 0.0085, 0.0095:而且还在继续。。
我想知道是否有更智能的方法来调整这个参数。
维基百科列出了一些众所周知的超参数搜索方法。
蛮力扫描/搜索,或跨多个参数的网格搜索,仍然是一种非常常见且可行的方法。与随机搜索一样,只需自动尝试一些参数变化并从交叉验证中选择最佳结果。
尽管被描述为“研究生血统的优化”(双关语基于高级研究人员将调优工作交给他们聪明的初级研究人员这一事实,但通过对什么可能最有效的直观感觉进行引导式搜索仍然是相当普遍的方法谁对超参数值做出有根据的猜测)-对于正则化参数,您可以查看训练曲线以及训练损失与 cv 损失之间的差异,以帮助决定查看位置。如果差异很大,您通常希望增加正则化,如果值变得接近但不是很好,则减少正则化。重要的是“差异很大”和“不是很好”是主观的,
有一些声称应用贝叶斯优化或类似的“智能”方案,甚至一些自动化服务或付费工具试图使这些可用于自动调整模型。但是,我认为这些在实践中使用得并不多。
除非你试图赢得 Kaggle 比赛,否则你很快就会在尝试微调参数时遇到收益递减。我很少发现调整像 L2 loss 这样的元参数的第二个有效数字值得关注。可能除了在 1.0 和 1.5 之间进行测试之外——通常在几何级数方面很有用,而不是线性的,即使在微调时也是如此。
您还必须注意,您不是简单地调整交叉验证集,对测试用例或生产环境没有任何有意义或合理的改进。您可以通过使用 k 折交叉验证来部分缓解这种情况(这可以通过使用更多数据来有效地减少指标估计的错误),尽管这当然会增加时间/CPU 成本。