之前有讲过一篇论文,今天来讲讲它的代码:
论文解析的链接是:以图片为目标的视觉强化学习
这篇研究以及这篇研究的后续研究,源代码都有公开,我们的目标是把这个库都解析一遍,感兴趣的话,关注吧。下面是相关源代码的链接:
现在要说的这个工作我们称呼它RIG,RIG适用的rlkit版本和最新的两个工作适用的rlkit版本不一样,我们先看RIG适用的rlkit。
论文开发者直接开发了一个工具,里面有众多强化学习的算法,方便做相关研究的渣渣们,比如我,直接拿来用,但前提你得看得懂。那么看懂就交给我了。
我们先来安装和解析一下这个工具,首先看安装指引:
然后我们看看config.py里面都做了些什么:
关于config.py文件,不用doodad的话,要把下面两行改一下,不然之后跑程序会报错:
改为(其实就是把注释去掉,再补个冒号),我的环境里它不会被用到,只是调试起来方便一些:
接下来创建一个虚拟代码环境,他提供了三个虚拟环境配置文件:linux-cpu-env.yml,linux-gpu-env.yml,mac-env.yml。一般是linux-gpu:
在跑之前我们看里面写了点啥,name是虚拟环境的名称,channels是虚拟环境安装软件的源,下面的dependencies是虚拟环境依赖的软件,这里就不列全了:
我自己不习惯用别人写好的脚本建立环境,喜欢一边看代码一边解决依赖问题。
首先我们要解决最重要的一个依赖,MuJoCo,强化学习的环境模拟常用的软件,以前是个付费软件,现在免费了,可能是有大佬买了,现在似乎属于DeepMind,DeepMind属于Google:
代码里用的MuJoCo版本是1.5,我喜欢用最新的,我们试试2.1,不行再回来换1.5,MuJoCo安装起来还是挺费劲的,遇到问题耐心些,多搜一搜:
如果可以import mujoco_py执行成功,且可以跑一些示例代码,就表示安装成功了。
再回过头看rlkit,他除了提供虚拟环境的方案,还提供了Docker文件,Docker我不喜欢用,当然,主要是因为没下功夫,用不好,所以只能不喜欢,对这些比较擅长的可以试着用Docker。
rlkit调用GPU的方式:
如果用doodad来执行方法,则直接用下面的方式调用gpu,然而我测试发现,不用doodad,下面这种方式也可以成功调用gpu:
他们会建议用doodad来执行python程序,这里我们更想偏向于原理性代码的讨论,doodad部分的代码就不涉及了。
接下来我们看RIG的代码,在examples/rig/目录下,有两个目录,四个文件,我们一个一个开始,首先看examples/rig/pointmass/rig.py:
要安装一下multiworld,这个工具也是该团队开发的:
关于安装rlkit,rlkit依赖版本较低的python和tensorflow,再加上跑不同程序要用到的rlkit版本还不太一样,我们反正要解析源代码,这里就不安装rlkit了,直接把rlkit的源码包放在主程序的目录下。如果想安装rlkit,可以按照他们给的方法操作,之后直接pip install rlkit就行。亲测不安装是可以的。
接着看main函数,先定义了一个字典,里面都是参数,字典里还嵌套字典,层层叠叠,难怪AI工程师会被调侃调参大师,这里暂时不一一看,之后用到了会提:
配置完参数之后,就是跑训练代码了:
在这样的配置下,我们看代码是怎么跑的(会略过不太重要的代码),下面是run_experiment里比较重要的代码:
接下来是run_experiment_here函数,依然是只看重要一点的代码:
接下来到这里:
这篇先到这里吧,我累了。下篇会讲具体模型算法还有训练测试代码,希望一个下篇就解决,不需要再分个中下
。
感兴趣的小伙伴们就关注吧。觉得有用右下角帮忙点个赞哦。
Comments