如何在算法比赛中获得出色的表现 :改善模型的5个重要技巧( 二 )


贝叶斯搜索:基本上是随机搜索 , 但在迭代方面有所改进 , 因此成本更低 。 它基于当前模型迭代评估有前途的超参数配置 , 然后对其进行更新 。 这是三者中表现最好的 。
其他方法(包括基于梯度的搜索或进化优化)更具危害性 , 通常不适用 。 在某些特殊情况下可以推荐使用它们 。
有许多AutoML工具可以很好地为您完成这项工作 。 但是耗费资源 , 如果计算资源充沛的话可以试试 。
简单的做法可以改变游戏规则我发现有一些模型包装器可以用来获得更好的结果 。 它们在不同级别上工作:
在优化过程中 , 请不要忘记添加学习速率调度程序 , 以帮助获得更精确的训练(从小开始 , 当模型学习良好时逐渐增加 , 例如减少平稳的步伐) 。
仍然在优化过程中 , 您可以将Lookahead包裹在优化器中;先行算法包括前进k个优化步骤 , 找到最佳性能的位置 , 然后朝该最佳方向退后一步并从此处重新开始训练 。 从理论上讲 , 您可以获得更好的性能 , 尽管我从未发现这是真的 。 但是它可以稳定训练 , 这在数据非常嘈杂时很有用 。
在开始训练之前 , 为权重找到一个很好的初始化方法:如果您使用的是流行的体系结构 , 请从基线权重(例如图像识别中的ImageNet)开始 , 如果不是 , 请尝试分层顺序单位方差初始化(LSUV , 最好的初始化方法-理论上) 。 它包括将权重初始化为正交 , 并在所有可训练层上初始化单位方差 。
最后 , 我经常发现从神经网络的最后一层权重训练LGBM , 而不是添加softmax作为输出层 , 效果会非常好 。
Bagging集成!除了数据扩充之外 , 没有什么技术比混合(也称为装袋)来提高性能更有效 。
我的个人建议是 , 我总是将自己的分袋后的最终模型中保存的每一个模型预测保存下来 , 然后将它们平均化(只是基本平均 , 我从未发现过任何"巧妙"整合的证据 , 例如权重)模特的独奏表现会在最终得分中添加任何内容) 。 别忘了混合公共内核 。
集成策略中拥有的模型越多 , 您越有可能幸免于私人排行榜的变化 。 确实 , 使模型多样化可以使最终结果更加可靠 。 这与金融中的一项基础投资组合多元化的想法相同:代替具有给定收益和给定方差的一项资产 , 而是选择具有相同收益和方差的许多不同资产 , 因为它们都不太可能全部同时提款 , 一个人的损失将由另一个人的胜利来补偿 。 以同样的想法 , 而不是仅仅依靠一个模型 , 而是进行许多不同的模型投票:大多数模型预测的目标(分类)或每个模型预测的目标均值(回归)很可能是更接近真实答案 。
希望您喜欢这篇文章 , 希望你在比赛中获得更好的成绩 。


推荐阅读