一步步学习黑盒优化算法,借助达摩院MindOpt的RABBO榜单【系列1/4】

1 黑盒优化的概念

什么是黑盒优化?「黑盒优化问题」泛指目标函数难以从数学上解析表达,缺少可直接利用的梯度信息,仅可利用目标函数输入和对应输出函数值进行最优解搜索的优化问题。

太抽象,不懂,根据达摩院优化求解器MindOpt团队的教程,它“通过获取不同控制参数(输入变量)对应的系统表现,来推断和搜寻优化解"、“可用于强化学习策略搜索、工业冶炼方案设计、计算资源额度预算优化等”。

云栖大会上王孟昌博士有讲解: https://yunqi.aliyun.com/2021/agenda/session170 在这个直播回放大约20分钟的时候,截图如下:image.png
其中的黑盒优化的架构就像下面的图这样,我们假设我们要求解的问题不好描述,就把这个问题做成一个仿真系统,这个系统可以根据输入的变量值(“候选解”)来给出对应的评价(“观测值”),然后黑盒优化算法,就是接上这个仿真系统,通过不断地去提供候选解和得到观测值,来搜索可能的最优表现的候选解。
image.png

2 黑盒优化benchmark:RABBO

这次达摩院MindOpt优化求解器团队出的「开发者福利」RABBO V1.0看起来挺有意思的,题目集包含4种问题:
image.png

从这儿可以看到他们的网页介绍:https://tianchi.aliyun.com/specials/promotion/BlackBox
在这里插入图片描述

2.1 瞄一眼长长的文档

点击“查看文档”,会进入个长长的文档,供了解细节。提交评测实际是进的同一个页面,上面有一排tab不要错过,有“排行榜”和“提交结果”。太长,瞄一眼文档结构就行。
image.png

2.2 看git项目

image.png
点击首页的“下载数据”按钮,和数据列表的“guide.html.zip”文件,都会引导到阿里云家的git(code.aliyun.com),用阿里云的账号登录,第一次用需要根据指引把自己的账号设置好,账号折腾好后,在https://code.aliyun.com/mindopt001/RABBO 可以看到文件截图如下图。
image.png
点击“3.27MB”的图标,可以看到文件如下图:
image.png

2.3 下载它

然后根据自己的喜好下载它。考虑到官方好像在不停更新的样子,我们fork这个项目,在页面上点击“派生”,等待系统完成
image.png
image.png
这个页面会转很久很久,好像有bug的样纸。 点击左侧导航栏的“项目”就可以看到项目已经有了,地址是
https://code.aliyun.com/你的Username/RABBO,比如我的名字是wuyoy520。可以进项目设置将“可见等级”改成Private。
image.png
然后clone克隆到本地自己喜欢的文件夹内。

git clone git@code.aliyun.com:你的Username/RABBO.git

clone完了后,根据git指导来安装它,“Note: RABBO supports Python3.6 or newer.” 由于我的python3是分开的指令所以我是这样做的:

cd RABBO
pip3 install -r requirements.txt
python3 setup.py install
pip3 install -e .

运行看结果的主程序示例程序在这儿:

python3 examples/experiment_example.py

image.png
最后的运行结果好像是不OK的,没解出来:
image.png

2.3.1 偷懒的换git账号方法

这里分享一个我切换git账号的偷懒方法:建立一个空的empty项目,然后里面会有Git全局设置参数,复制这两句到终端命令行运行。
image.png

3 参考文档,学习RABBO

3.1 RABBO V1.0 问题集

4个问题分别对应文件夹中的不同文件。在目录 blackbox_starter_kit -> problems文件夹下面。
image.png
只有4个文件夹,是因为里面的2 金属冶炼配比优化并没有开放直接下载,参与公开测评,也就是评分的分数里会有它。

3.2 步骤1,实现一个自己的算法,嗯,姑且先copy一个

前面说运行看结果的主程序示例程序examples/experiment_example.py,内容是:
image.png

直接不改的运行结果好像是不OK的,没解出来:
image.png

我们要改的文件在blackbox_starter_kit/algorithms/submission/submission_algorithm.py
image.png

里面有一些指导,我们先copy一份示例算法过来,示例算法在blackbox_starter_kit/algoriths/文件夹下的cmaes/cma_algorithm.pyrandom_search/random_search_algorithm.py
将cma的算法代码“有技巧”地拷贝至submission/submission_algorithm.py,不要动函数名,其他的copy进去。然后将examples/experiment_example.py中的算法改成选手算法:
image.png
运行,可以看到有类似的输出了,后续就在这个submission_algorithm.py改造自己的算法就行。

3.3 步骤2,额,上1步运行过了,改算法后面再研究,先跳过

3.4 步骤3,打包算法提交测评

文档写的很轻松的几句话,但是前面需要安装docker,点击进入标的链接,根据这个页面的内容来安装、开通容器镜像服务,打镜像,和推仓库。
image.png
首先,先安装docker;
然后,从https://www.aliyun.com/product/acr容器镜像服务ACR的产品页,开通进入“管理控制台”,如下图,创建个人版(免费)实例。根据文档指引,在页面上操作,创建一个私有的命名空间,然后再创建一个本地镜像仓库。
image.png

然后,回到rabbo的目录,运行sh build.sh来打包仓库:

cd RABBO
sh build.sh

由于我电脑多个Python版本,因此要进build.sh把python改成python3
image.png
然后我家的龟速网络就要漫长地等待了。。。
image.png
镜像打结束后,注意,最后一行显示:
naming to docker.io/library/mind-blackbox-bench:20211218,
复制mind-blackbox-bench:20211218,后面要这个ImageId。

然后,推镜像到仓库。从推镜像的指令在仓库里面复制更方便:
image.png
image.png
第一次推不晓得啥米原因它卡住了,然后取消了后重新推又很快就上去了。这时候刷新镜像版本就能看到多了个镜像啦。
image.png

最后,提交评测。提交结果的tab页。镜像的地址从奖项的基本信息里面拷贝公网的地址,并在后面加上刚刚提交的版本,如:0.1
image.png

提交了后,等待一会后,出现结果。
image.png
注意,如果前面一个没结束的时候重复提交,上一个任务会被停掉,之前提交的任务会获得一个“task terminated”的已经失败提示。
点击模型的超链接,会弹出日志先是各个分数。排行榜不是实时更新的,需要等待。
image.png
至此,整个流程走通了。

4 其他文

后面我会发如何去读官方参考算法代码,和如何研发自己的算法。
先立个flag:

借助阿里达摩院的MindOpt的RABBO榜单系列:
1.(本篇)《新手一步步学习黑盒优化算法,借助达摩院MindOpt的RABBO榜单【系列1/4】
2. 《学习一下黑盒优化榜单RABBO提供的两个参考算法
3. todo:《改编一个自己的黑盒优化算法或开源算法》
4. todo:《将我要解决的业务问题建模成RABBO的问题格式,然后去求解》

image.png

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值