为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
开满天机 2018-07-09 18:10:43
c++语言中的全局优化算法如何掌握
查看完整描述

1 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

所有机器学习开发者都会遇到同样一个问题:你有一些想要使用的机器学习算法,但其中填满了超参数——这些数字包括权重衰减率、高斯核函数宽度等等。算法本身并不会设置它们,你必须自己决定它们的数值。如果你调的参数不够好,那么算法是不会工作的。那么该如何是好?

在调参时,绝大多数人只会凭经验进行猜测。这不是个好现象,我们需要更合理的方法。所有人都希望一些黑箱优化策略如贝叶斯优化变得实用化,但在我看来,如果你不把贝叶斯优化的超参数调对,它就无法展现专家级的调参能力。事实上,我认识的每个使用贝叶斯优化的人都有着相同的经验。最终,如果我认为手调参数更加方便,我就会转回到传统方法上去,这也是所有使用类似工具的人都会遇到的事。所以结果就是我们一般不会使用自动超参数选择工具——令人沮丧的结论。我们都希望出现一个无参数的全局优化器,其中的超参数选择是我们可以信任的。

我们不需要想象上界是如何帮助我们评估最优点的。例如,如果你选择最大上界作为下一次迭代,你就已经非常接近全局极大值了。论文作者随后继续证明了这种方法的一些不错的属性。值得一提的是,他们是用数学方法证明的,同时也实践展示了这种方法在很多非常规情形下要比随机搜索要好——考虑到随机超参数搜索(Random Search for Hyper-Parameter Optimization,James Bergstra & Yoshua Bengio)的效果非常强大,这是一个强有力的声明。在论文中,研究人员也对贝叶斯优化等算法进行了比较,并展示了 LIPO 的竞争力。

此时此刻你或许会说:「等一下,我们并不知道 Lipschitz 常数 k 的值!」这不是一个大问题,因为它非常容易估计,例如,可以将 k 设置为每次迭代前观察到的 f(x) 的最大斜率。这相当于解决如下问题:

Malherbe 等人测试了这种估算 k 的方法,并展示了它的优秀性能。


查看完整回答
反对 回复 2018-08-05
  • 1 回答
  • 0 关注
  • 685 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信