核物理与粒子物理领域的新生力量
使用GP而不是其他曲线拟合方法来建模代理函数,是因为它本质上是贝叶斯的。GP是一个概率分布,类似一个事件的最终结果的分布(例如,1/2的概率抛硬币),但是覆盖了所有可能的函数。 例如,将当前数据点集定义为40%可由函数a(x)表示,10%可由函数b(x)表示。通过将代理函数表示为概率分布,可以通过固有的概率贝叶斯过程更新信息。当引入新信息时,可能只有20%的数据可用函数a(x)表示。这些变化是由贝叶斯公式控制的。如果使用多项式回归来拟合新的数据点,难度就加大了,甚至不可能实现。 代理函数表示为概率分布,先验函数被更新为“采集函数”。该函数负责权衡探索和利用问题驱动新点的命题进行测试: · “利用函数”试图进行取样以便代理函数预测最合适的最小值,这是利用已知的可能的点。然而,如果我们已经对某一区域进行了足够的探索,那么继续利用已知的信息将不会有什么收获。 · “探索函数”试图在不确定性高的地方取样。这就确保了空间中没有什么主要区域是未知的——全局最小值可能恰好就在那里。 一个鼓励多利用和少探索的采集函数将导致模型只停留在它首先找到的最小值(通常是局部的——“只去有光的地方”)。反之,模型则首先不会停留在局部或全局的最小值上,而是在微妙的平衡中寻求最佳结果。
用a(x)表示采集函数,必须同时考虑探索和利用。常见的采集函数包括预期改进和最大改进概率,所有这些函数都度量了给定的先验信息(高斯过程)下,特定输入值在未来获得成功的概率。 代理函数可以帮助确定哪些点是可能的最小值。我们决定从这些有希望的区域中抽取更多样本,并相应地更新代理函数。 在每次迭代中继续查看当前的代理函数,通过抽样了解相关感兴趣领域的更多信息并更新函数。注意,代理函数的计算成本要低得多。例如,y=x即是近似函数,计算成本更高,即在一定范围内的y=arcsin((1-cos converx)/sin x))。 经过一定次数的迭代,最终一定会得到一个全局最小值,除非函数的形状非常奇怪(因为它有大幅度且不稳定的波动),这时出现了一个比优化更有意义的问题:你的数据出了什么问题? 让我们来欣赏一下贝叶斯优化之美。它不做任何关于函数的假设(除了首先假设它本身是可优化的),不需要关于导数的信息,并且能够巧妙地使用一个不断更新的近似函数来使用常识推理,对原始目标函数的高成本评估根本不是问题。这是一种基于替代的优化方法。 所以,贝叶斯理论到底是什么呢?贝叶斯统计和建模的本质是根据新信息更新之前的函数(先验函数),产生一个更新后的函数(后验函数)。这正是代理优化在本例中的作用,可以通过贝叶斯理论、公式和含义来进行最佳表达。
仔细看看代理函数,它通常由高斯过程表示,可以被视为一个骰子,返回适合给定数据点(例如sin、log)的函数,而不是数字1到6。这个过程返回几个函数,这些函数都带有概率。 总结 Recoil 推崇的是分散式的状态管理,这个模式很类似于 Mobx,使用起来也感觉有点像 observable + computed 的模式,但是其 API 以及核心思想设计的又没有 Mobx 一样简洁易懂,反而有点复杂,对于新手上手起来会有一定成本。 在使用方式上完全拥抱了函数式的 Hooks 使用方式,并没有提供 Componnent 的使用方式,目前使用原生的 Hooks API 我们也能实现状态管理,我们也可以使用 useMemo 创造出派生状态,Recoil 的 useRecoilState 以及 selector 也比较像是对 useContext、useMemo 的封装。 但是毕竟是 Facebook 官方推出的状态管理框架,其主打的是高性能以及可以利用 React 内部的调度机制,包括其承诺即将会支持的并发模式,这一点还是非常值得期待的。
另外,其本身的分散管理原子状态的模式、读写分离、按需渲染、派生缓存等思想还是非常值得一学的。 (编辑:阿坝站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |