优化算法一点心得

    优化算法,例如梯度,启发式,贝叶斯优化等等,当然很多地方叫的不一样。比如在工科领域,我们叫启发式算法,Kriging代理模型,在机器学习中,我们可能叫随机搜索,基于高斯过程的贝叶斯优化,反正都是一类东西,没有明显界限,可能有稍微不同,但是可以认为是一样的。

    那么这么多优化算法有什么优缺点呢?我们通常都是想找到一个全局最优解,不管是最大值还是最小值,而不是找到一个极点。通常叫EGO,全局优化算法。最常用,最常听说的就是遗传算法(GA),然后粒子群优化,模拟退火算法等等等等,甚至还看见过灰太狼 优化算法。这些东西本质思想都差不多(我也不是特别了解),都是从自然界中找到某种思想用在优化中,他们强调的是全局性,即不管多么复杂,不管由多少极值,我们都能找到最值。对于大部分图像来说,其实已经够用了,但是我们要知道,他们不是一定能够找到的,对于哪些变态的函数,我们只能说sorry,打扰了,但是对于平常的东西,绝对是遗传算法效果刚刚的,当然里面参数要设置好。具体用哪个看情况。

    然后就是贝叶斯优化算法了。我们通常要找全局最优解,但是除了精度,还有时间。我们不可能优化一个问题,给你一年时间,不现实。比如气动优化,或者大规模机器学习,一个参数算一次要几天,你要用遗传算法,算个几万次,那还得了。这时候贝叶斯优化登场了,它可以让你快速找到最优解,使用尽可能少的迭代次数。这就是说当目标函数很昂贵时,使用这个很好。但是也有缺点,一个是本身需要建模,样本多了,自己建模都算不下去了。二是维度灾难,就是对于变量特别多的问题,也无能为力。然后为了加快速度,有时候会并行运算,一次加多个点。

    对于简单问题,就是目标函数算一次很快,当然这个快是相对的,具体问题具体分析,但是至少10秒以下吧,用启发式算法还是挺快的,但是如果算一次几分钟,那可能贝叶斯优化就更好了。

    这些都是一种折中,时间和精度,你想要哪个?

你可能感兴趣的:(贝叶斯优化)