发表时间:2020(NeurIPS 2020)
文章要点:我们知道贝叶斯优化做到高维的时候计算量很大,根本算不出来。这篇文章是把MCTS和贝叶斯优化结合起来,做高维的优化问题。主要思路是先用MCTS分割搜索空间,然后在子空间上再用贝叶斯优化去采样。假设我们的优化问题是找一个函数\(f(x)\)的最大值,具体迭代过程是,比如我采样了一些样本\((x_i,f(x_i))\),先用这些样本去建树,根据这些样本的值\(f(x_i)\)把他们分成值大的和值小的两类,具体方式就是用kmeans根据样本值\(f(x_i)\)去聚类。聚成两类之后用SVM去拟合这两类样本,然后就可以得到样本\(x_i\)的分割线,相当于我的搜索空间就被分成两个了,就表示成两个树节点了。然后分开的空间还要统计一下样本个数和\(f(x_i)\)的均值,作为这个树节点的visit次数和value值。这个分割的过程设置了一个阈值θ,如果当前节点包含的样本数超过了这个阈值,就继续往下建树,一直这样分下去到整个树建完。树建完的过程其实就是空间划分完的过程。接下来就根据UCB选择下一个探索的节点,也就是下一次采样的子空间\(Ω_{selected}\)。拿到这个子空间之后,就在这个子空间上做贝叶斯优化,采样得到新的一批数据。然后再重复迭代这个过程。
总结:很有意思的工作啊,树搜索原来还可以这么用。
疑问:从Figure 5(a)看起来,total splits有增有减,有减就肯定说明重新建树了,什么时候重新建树,换一个方式说就是怎么算一次iteration?每次在select的区域做完采样就重新建吗?感觉有点像。(The structure of our search tree dynamically changes across iterations. At the beginning of an iteration, starting from the root that contains all the samples, we recursively split leaves using latent actions if the sample size of any leaves exceeds the splitting threshold , e.g. creating node D and node E for node B in Fig.2(a). We stop the tree splitting until no more leaves satisfy the splitting criterion. Then, the tree is ready to use in this iteration.)
另外,每次在\(Ω_{selected}\)上做贝叶斯优化的时候,采样多少个点呢?