请问c++语言中的全局优化算法如何掌握?

c++语言中的全局优化算法如何掌握


开满天机
浏览 665回答 1
1回答

慕神8447489

所有机器学习开发者都会遇到同样一个问题:你有一些想要使用的机器学习算法,但其中填满了超参数——这些数字包括权重衰减率、高斯核函数宽度等等。算法本身并不会设置它们,你必须自己决定它们的数值。如果你调的参数不够好,那么算法是不会工作的。那么该如何是好?在调参时,绝大多数人只会凭经验进行猜测。这不是个好现象,我们需要更合理的方法。所有人都希望一些黑箱优化策略如贝叶斯优化变得实用化,但在我看来,如果你不把贝叶斯优化的超参数调对,它就无法展现专家级的调参能力。事实上,我认识的每个使用贝叶斯优化的人都有着相同的经验。最终,如果我认为手调参数更加方便,我就会转回到传统方法上去,这也是所有使用类似工具的人都会遇到的事。所以结果就是我们一般不会使用自动超参数选择工具——令人沮丧的结论。我们都希望出现一个无参数的全局优化器,其中的超参数选择是我们可以信任的。我们不需要想象上界是如何帮助我们评估最优点的。例如,如果你选择最大上界作为下一次迭代,你就已经非常接近全局极大值了。论文作者随后继续证明了这种方法的一些不错的属性。值得一提的是,他们是用数学方法证明的,同时也实践展示了这种方法在很多非常规情形下要比随机搜索要好——考虑到随机超参数搜索(Random Search for Hyper-Parameter Optimization,James Bergstra & Yoshua Bengio)的效果非常强大,这是一个强有力的声明。在论文中,研究人员也对贝叶斯优化等算法进行了比较,并展示了 LIPO 的竞争力。此时此刻你或许会说:「等一下,我们并不知道 Lipschitz 常数 k 的值!」这不是一个大问题,因为它非常容易估计,例如,可以将 k 设置为每次迭代前观察到的 f(x) 的最大斜率。这相当于解决如下问题:Malherbe 等人测试了这种估算 k 的方法,并展示了它的优秀性能。
打开App,查看更多内容
随时随地看视频慕课网APP