谷歌大脑的“世界模型”(World Models)与基因学的一些思考,MDN-RNN与Evolution Strategies结合的初体验与源码

我们现在看到的智能算法都不是“可生长”的,遗传算法和ES只是强调了基因的“变异”,神经网络只是固定网络结构;而生物界的基因却可以指导蛋白质构成并且“生长”。— David 9

今年上半年谷歌大脑的“世界模型”(World Models)早已引起David 9的注意,今天终于有机会和大家叨叨。对于CarRacing-v0这个增强学习经典游戏:

来自:https://github.com/AdeelMufti/WorldModels

世界模型(World Models)与其他增强学习相比有一些明显优势:

来自:https://arxiv.org/abs/1803.10122

优势的来源David 9总结有两点:1. 模型拼接得足够巧妙,2. 抓住了一些“强视觉”游戏的“痛点”。

首先,模型拼接得足够巧妙,下面是世界模型的整体架构:

来自:https://arxiv.org/pdf/1803.10122.pdf

整个模型分为3个组件:视觉组件(V),记忆组件(M),控制组件(C)视觉组件V用来压缩图片信息到一个隐变量z上(其实只是一个VAE编码解码器):

来自:https://arxiv.org/pdf/1803.10122.pdf

记忆组件M的输入是一帧帧的游戏图片(论文中的一帧图像似乎叫一个rollout),输出是预测下一帧图像的可能分布,其实就是比一般LSTM更高级一些的MDN-RNN:

来自:https://arxiv.org/pdf/1803.10122.pdf

最后控制组件C的目标,就是把前面视觉组件V和记忆组件M的输出一起作为输入,并输出这个时刻智能体agent应该做出的动作(action)。

现在,你可以注意到所谓的“世界模型”,其中的组件模型几乎没有是谷歌大脑自己创新研制的。 所以David 9 佩服的是谷歌大脑的应用实现能力。那么这个巧妙的拼接模型是怎么做到所谓的世界想象能力的呢?

所谓世界想象能力,就是模型在学习时,自身对环境假想一个模拟的环境,甚至可以在没有环境训练的情况下,自己想象一个环境去训练。其实就是我们人类镜像神经元的功能。

世界模型是如何做到的呢?首先,刚才提到的记忆组件M中的RNN是生成序列的能手,所以根据之前游戏图像再“想象”一些图像帧应该不成问题(RNN生成一些隐变量z,再根据隐变量z,由视觉组件VAE的decode生成的图像帧即可)。所以对于“强视觉”的游戏,把RNN的记忆能力用在视觉预测上似乎是个好主意 。

而David 9想指出的是,直接用CMA-ES 或者说任何遗传算法都只是强调了基因的“变异”与空间搜索。而生物学中的基因可以做的绝不仅仅是这些,“基因”是可以指导蛋白质构成并且“生长”的:

来自:《基因传》悉达多

如果基因可以构造自身个体,外部环境和个体情况也可以反过来影响基因,而我们的模型都太固定呆板了,模型结构不能随内部隐变量改进,当然最佳的设计形式也许谁也不知道。

最后简单看一下世界模型的训练过程也是比较刻板,world models代码基于chainer计算框架,步骤如下:

1. 准备数据集,随机玩游戏生成训练帧(rollouts意思应该就是多少帧):

python random_rollouts.py --game CarRacing-v0 --num_rollouts 10000

2. 训练视觉组件V,即前面提到的VAE:

python vision.py --game CarRacing-v0 --z_dim 32 --epoch 1

3. 训练记忆组件M,即前面提到的RNN:

python model.py --game CarRacing-v0 --z_dim 32 --hidden_dim 256 --mixtures 5 --epoch 20

4. 训练控制组件C,即前面提到的CMA-ES算法(其实就是支持更复杂输入和更新的ES):

python controller.py --game CarRacing-v0 --lambda_ 64 --mu 0.25 --trials 16 --target_cumulative_reward 900 --z_dim 32 --hidden_dim 256 --mixtures 5 --temperature 1.0 --weights_type 1 [--cluster_mode]

5. 测试训练结果:

python test.py --game CarRacing-v0 --z_dim 32 --hidden_dim 256 --mixtures 5 --temperature 1.0 --weights_type 1 --rollouts 100 [--record]

详细步骤和源码:

https://github.com/AdeelMufti/WorldModels

 

参考文献:

  1. https://github.com/AdeelMufti/WorldModels
  2. World Models

本文采用署名 – 非商业性使用 – 禁止演绎 3.0 中国大陆许可协议进行许可。著作权属于“David 9的博客”原创,如需转载,请联系微信: david9ml,或邮箱:yanchao727@gmail.com

或直接扫二维码:

发布者

David 9

邮箱:yanchao727@gmail.com 微信: david9ml

《谷歌大脑的“世界模型”(World Models)与基因学的一些思考,MDN-RNN与Evolution Strategies结合的初体验与源码》上有2条评论

  1. 最近也开了个自己的个人博客,不过总觉得不知道写些什么哈哈,很佩服博主一直坚持更新~

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注