万微科技2016|贝叶斯优化之美:精妙算法背后的直觉

全文共2913字 , 预计学习时长8分钟
万微科技2016|贝叶斯优化之美:精妙算法背后的直觉
文章图片
图源:unsplash
有一个函数f(x) , 它的计算成本很高 , 甚至不一定是解析表达式 , 而且导数未知 。 你的任务是 , 找出全局最小值 。 当然 , 这个任务挺难的 , 比机器学习中的其他优化问题要难得多 。 例如 , 梯度下降可以获得函数的导数 , 并利用数学捷径来更快地计算表达式 。
另外 , 在某些优化场景中 , 函数的计算成本很低 。 如果可以在几秒钟内得到数百个输入值x的变量结果 , 简单的网格搜索效果会更好 。 另外 , 还可以使用大量非传统的非梯度优化方法 , 如粒子群算法或模拟退火算法(simulatedannealing) 。
但是 , 当前的任务没有还没这么高级 。 优化层面有限 , 主要包括:
·计算成本高 。 理想情况下 , 我们能够对函数进行足够的查询 , 从而从本质上复制它 , 但是采用的优化方法必须在有限的输入采样中才能起作用 。
·导数未知 。 梯度下降及其风格仍然是最流行的深度学习方法 , 甚至有时在其他机器学习算法中也备受欢迎的原因所在 。 导数给了优化器方向感 , 不过我们没有导数 。
·需要找出全局最小值 , 即使对于梯度下降这样精细的方法 , 这也是一项困难的任务 。 模型需要某种机制来避免陷入局部最小值 。
我们的解决方案是贝叶斯优化 , 它提供了一个简洁的框架来处理类似于场景描述的问题 , 以最精简的步骤数找到全局最小值 。
构造一个函数c(x)的假设例子 , 或者给定输入值x的模型的成本 。 当然 , 这个函数看起来是什么样子对优化器是隐藏的——这就是c(x)的真实形状 , 行话中被称为“目标函数” 。
万微科技2016|贝叶斯优化之美:精妙算法背后的直觉
文章图片
贝叶斯优化通过代理优化方法来完成这项任务 。 代理函数(surrogatefunction)是指目标函数的近似函数 , 是基于采样点形成的 。
万微科技2016|贝叶斯优化之美:精妙算法背后的直觉
文章图片
代理函数可以帮助确定哪些点是可能的最小值 。 我们决定从这些有希望的区域中抽取更多样本 , 并相应地更新代理函数 。
万微科技2016|贝叶斯优化之美:精妙算法背后的直觉
文章图片
在每次迭代中继续查看当前的代理函数 , 通过抽样了解相关感兴趣领域的更多信息并更新函数 。 注意 , 代理函数的计算成本要低得多 。 例如 , y=x即是近似函数 , 计算成本更高 , 即在一定范围内的y=arcsin((1-cosconverx)/sinx)) 。
经过一定次数的迭代 , 最终一定会得到一个全局最小值 , 除非函数的形状非常奇怪(因为它有大幅度且不稳定的波动) , 这时出现了一个比优化更有意义的问题:你的数据出了什么问题?
让我们来欣赏一下贝叶斯优化之美 。 它不做任何关于函数的假设(除了首先假设它本身是可优化的) , 不需要关于导数的信息 , 并且能够巧妙地使用一个不断更新的近似函数来使用常识推理 , 对原始目标函数的高成本评估根本不是问题 。 这是一种基于替代的优化方法 。
所以 , 贝叶斯理论到底是什么呢?贝叶斯统计和建模的本质是根据新信息更新之前的函数(先验函数) , 产生一个更新后的函数(后验函数) 。 这正是代理优化在本例中的作用 , 可以通过贝叶斯理论、公式和含义来进行最佳表达 。
仔细看看代理函数 , 它通常由高斯过程表示 , 可以被视为一个骰子 , 返回适合给定数据点(例如sin、log)的函数 , 而不是数字1到6 。 这个过程返回几个函数 , 这些函数都带有概率 。
万微科技2016|贝叶斯优化之美:精妙算法背后的直觉


推荐阅读