智能体能否在梦中学习?yes!
白日梦是人类的专属?no!
这是谷歌大脑的又一篇pr文章吗?难说~
雷锋网 ai科技评论按:继前段时间在arxiv上贴出《one big net》之后,近日jurgen schmidhuber和来自谷歌大脑的david ha又放了一篇大标题论文:世界模型(world models)。但和上次一致的批评之声不同,这次几乎所有人都认为内容很赞。例如在reddit上大家的声音类似这种:
这项工作看起来非常有趣。但认真点儿好不好,别再搞这种uc标题了?真的怕明天媒体曝出一个“ google做出了一个能够模拟整个世界的ai ”。(注:第一作者为来自 google brain 的 david ha)
或者也有这种:
我觉得这个标题似乎很平淡,描述的也很准确。如果新闻记者撇开标题来不用「世界」这个词,那么这绝对是一篇误导性的文章。
那么这篇文章到底在谈论什么呢?简单来说就是:给agent构建一个内部世界模型,让它能够在没有外界输入的情况下在自己的内部世界里面进行自学习(形象来说就是能够通过做梦来学习)。
不得不说,这又是一个模仿人类学习的案例。我们人类基于有限的感觉(视觉、听觉、嗅觉等),在自己的头脑中构建了一个心智世界模型,这个世界是我们赖以做出判断和决策的基础。当醒着的时候,我们通过视觉、听觉等感觉系统不断地输入信息,并基于我们的心智世界模型来做出决策和行动;当睡着的时候,我们关闭了感觉系统,但是我们仍然能够在梦中来「学习」。
为了处理日常生活中流经我们的大量信息,我们的大脑会将这些信息的空间和时间维度进行抽象表示。我们能够观察一个场景并记住其中的抽象描述。另一方面,我们在任何时刻所感知到的其实是由我们大脑内部的心智模型对未来的预测所决定的。
那么如何来理解我们大脑的预测模型呢?事实上它并不仅仅是去预测未来,而是在给定当前运动行为的情况下去预测未来的感觉数据。当我们面临危险时,我们能够本能地采取这种预测模型并进行快速反射行为,而不需要有意识地制定行动方案。
以棒球为例。一个棒球击球手只有几毫秒的时间来决定他们应该如何摆动球棒,这事实上比眼睛的视觉信号到达我们大脑所需要的时间还要短;击球手能够击中球的原因是,我们能够本能地预测出球在什么时候出现在什么地方。对于职业球员来说,这一切都是在潜意识中发生的,他们的肌肉在适当的时间和地点按照他们内部的心智模型预测的结果摆动了球棒。这一切不需要意识来进行规划。
对于人类认知的这一特性,事实上很早(从1995年到2015年间)就有人尝试在搭建类似的模型。本文的意义则在于,它用一个简化的框架,通过实验展示了这些研究的一些关键概念,提出进一步改进的见解,并有效地应用到了增强学习环境中。
说起增强学习,rl算法常常受到信用分配问题的瓶颈,因此传统的rl算法难以学习数百万个权重的大型神经网络。因此在实践中为了在训练期间更快地迭代出良好的策略,一般都使用小型的网络。
在这项工作中,作者则着眼于训练一个大型神经网络来处理rl任务,将智能体分为大的世界模型和小的控制器模型。作者首先以无监督的方式训练大的神经网络,让它学习出一个智能体的世界模型;然后再训练较小的控制器模型,让它学习使用前面的世界模型来执行任务。这样的方法保证了控制器模型的训练算法可以专注于小型搜索空间上的信用分配问题,同时不会通过较大的世界模型牺牲容量和表现力。此外,作者构建的这种模型甚至可以完全在自己的世界模型所产生的「梦境」中训练agent,并将训练效果转移回实际环境中。智能体模型结构如下:
详细来讲,其视觉模型选择了变分自动编码(vae):
其记忆rnn选择了混合密度网络与rnn结合(mdn-rnn):
sketchrnn是mdn-rnn的一个例子,它可以预测素描画的下一笔划。作者使用了一个类似的模型用来预测下一个隐向量z。
控制器(c)模型负责确定采取的行动过程,以便在环境中最大化智能体的预期回报。 作者在实验中故意选择了最简单的c:
其中m和b分别为权重矩阵和偏置向量。将上面这三个模型组合在一起就是这样了:
作者首先用赛车实验来检测这个模型。实验过程大致如下:
1. 从随机策略中收集 10000 个 转出(rollouts);
2. 训练 vae(v)将视频帧编码为 32 维的隐向量 z;
3. 训练 mdn-rnn(m)建模概率分布 p(z_{t 1} | a_t, z_t, h_t);
4. 定义控制器(c)为 a_t = w_c [z_t, h_t] b_c;
5. 使用 cma-es 求解 w_c 和 b_c 来最大化预期累积奖励。
在这个赛车比赛中,智能体可以控制做三个动作:转向左/右,加速和制动。实验结果如下:
如果只使用视觉模型(v)——
如果同时使用视觉模型(v)和记忆模型(m)——
在100次测试中,这个模型的平均得分显著高于之前的一些模型。
当然还不止于此。由于这个世界模型能够对未来进行建模(也即给定当前状态,它可以产生下一个时刻的概率分布),因此如果将这个作为真实观测值,那么这就意味着智能体能够自行「幻化」出假想的赛车场景,并在这个幻境中进行学习。
那么在梦境中学习到的经验,能否转移到实际的环境中呢?我们需要看下一个实验。
在这个游戏中,房间另一端的怪物会射出火球,智能体所要学习的就是如何避开这些火球以防被杀死。
vizdoom实验的过程整体上和赛车实验一样,不过也有一些不同。首先v除了开始时编码一些视频外,在整个「幻想」期间,不再编码外界真实的视频帧,而是将由m预测的下一时刻特征向量转化为可见的图像。其次,m不仅要预测下一时刻的特征向量,还需要预测智能体死/活的状态。实验过程大致如下:
从随机策略中收集 10000 个 转出(rollouts);
训练 vae(v)将视频帧编码为 64 维的隐向量 z;同时用v将(1)中收集的图片转化为特征空间中的表示;
训练mdn-rnn(m)建模概率分布 p(z_{t 1}, done_{t 1} | a_t, z_t, h_t);其中done_{t 1}表示智能体的死/活状态;
定义控制器(c)为 a_t = w_c [z_t, h_t];
使用 cma-es 求解 w_c 和 b_c 来最大化在虚拟环境中的预期存活时间;
用从(5)中学到的策略作用到真实的环境中。
需要强调的是,在这里,智能体除了收集的原始图像数据外,别得什么都没有,它将在自己的梦境中学习如何模拟游戏的基本规律,例如游戏的逻辑、敌人的行为、物理特性等。举例来说,如果智能体在自己幻想出的游戏中向左侧移动太远,它必须自己学会阻止自己移动到两侧墙壁之外。
与真实的游戏幻境不同的是,在幻境中有许多不确定性,例如你可能会看到火球沿着随机的路径移动,或者智能体莫名其妙的就死了,无法解释原因。下面这是在梦境中训练的比较好的一个结果:
将这个在梦境中的智能体应用到实际的游戏环境中,我们发现竟然神奇的好,在100轮的随机测试中,平均存活帧率为1100,远远超过750胜出的要求。
但是,作者在实验中也发现一个bug。我们知道当我们小时候虽然知道抛出的物体会落下来,我们仍然会去想象一些不切实际的能够在空中飞翔的超级英雄,原因在于我们拥有我们心智世界的完整控制权,我们可以随意地创造我们想要的任何事物。
类似的,在这个模型中,由于控制器能够访问m的所有隐藏状态,这实质上时授予了智能体访问所有内部状态的权限,因此它可以直接操纵这些隐藏状态来实现期望的奖励最大化。例如,在梦境学习中,这些虚拟怪物不再发射火球,所以无论智能体怎么运动都会获得极高的分值。但是,当把这些训练结果拿到实际环境中测试时就会发现,智能体很快就死掉了。这就类似白日梦做得再多,在现实生活中也不会成功。
在以上的实验中,任务都是相对简单的,因此可以使用随机策略来收集数据集训练世界模型。但是如果环境较为复杂怎么办?这种情况下,智能体只能看到部分世界。因此我们就需要多次迭代,也即让我们的智能体去探索世界,并不断收集新的观察结果,以便随着时间的推移可以改变和完善其世界模型。操作过程大致如下:
用随机模型参数初始化m、c;
探索世界n次,智能体在每次探索中学习,并将所有的行为a_t和观测结果x_t保存到内存;
训练m建模p(x_{t 1},r_{t 1},a_{t 1},done_{t 1}∣x_t,a_t,h_t);
如果任务没有完成,返回到(2)。
上面的实验证明,对于简单的任务循环一次迭代就足够了。对于负责的任务可能需要多次迭代。在这里一个令人激动的研究方向就是,如何给智能体加入好奇心和内在动机来股利它去做更多的探索。
上面的过程已经验证了在完全虚拟的梦境空间训练智能体的可能性。这种方法的好处不言而喻。例如,在计算密集型游戏引擎中,可能需要大量的计算资源来渲染游戏的图像帧,或者一些与游戏本身不相关的内容;这大大浪费了计算资源,也增大了训练智能体的训练周期;而在梦境环境中则可以使用较少的资源、较短的周期来实现类似的训练结果。
此外,我们完全可以利用深度学习框架来这个世界模型的搭建,我们将世界模型设计成一个完全可以区分的通用性的计算图,其好处就在于我们可以直接使用反向传播算法来训练我们的智能体,微调策略以最大化目标函数。
模型本身还有需要有待改进的地方。例如v模型中使用的vae,其作为独立模型进行训练事实上也有自身的局限性,因为它可能对任务无关的部分也进行了编码,毕竟无监督学习不知道什么对于任务是有用的。举例来说,在doom环境中它详细地再现了侧壁上不重要的砖瓦图案;而在赛车环境中它却没有再现与任务相关的砖。通过将v与m一起训练,vae可能会更加专注于图像的任务相关领域。但弊端是,我们可能也无法有效地重复使用vae而无需再次进行新任务。
学习任务相关的功能与神经科学有很大关联,初级感觉神经元在收到奖励时,从抑制状态中释放出来,这表明它们通常至少在成年后才学习与任务相关的特征,而不是任何特征。作者任务未来的工作可能会探索如何进一步改进v模型,来专注于任务相关的特征。
另一个可能比较严重的问题是,这个世界模型的能力有限。尽管现代存储设备可以存储使用迭代训练过程中生成的大量历史数据,但是基于lstm的世界模型无法将所有记录信息存储到其权重连接中。人脑可以持续数十年的记忆,但反向传播训练的神经网络在记忆方面能力有限,经常遭受灾难性遗忘问题。如果想让智能体学习探索更为复杂的世界,作者认为未来的工作可能会探索如何使用更高容量的模型来代替容量较小的mdn-rnn网络,或者合并外部存储模块。
在reddit上似乎永远不乏「领域内人士」,他们往往能够对一项工作给出恰当的评价。例如雷锋网发现网名为 sieisteinmodel 评价如下:
我想表达一下更广泛的(但当然是主观的)观点。这篇文章的意义只是在于对现代(即2005年后)机器的jürgen旧观点的验证:变分推理,md-rnns,3d射击环境等。
学习一个模型,然后在做控制,这种方法事实上已经有很长一段时间了。jürgen和其他人几十年来一直在倡导这一点,这也是这篇文章能够出现的原因:
这个模型有自己的名字,它被称为「基于模型的强化学习」;
它有自己的子领域,如政策搜索;
它已经非常成熟,以至于目前的研究已经将它作为一种工具,而不仅仅是作为研究的内容;
它已经非常成熟,已经有人在用硬件实现,而不仅仅是模拟;
它在样本效率方面颇具竞争力;
eric horvitz在他的一个演讲中曾使用过更广泛的原则。
所以如果你对这篇文章感到兴奋,那么你也可查看一下以前这个领域中的工作。jürgen的旧论文以及marc peter deisenroth关于机器人技术政策搜索的调查是一个很好的切入点。另外你也应当考虑研究最佳控制,这是一个非常古老的控制理论分支,其中除了学习模型之外,基本思想早已被开发出来。
关于标题,我认为没有必要将这个模型称为「世界模型」,如果这样的话,它也适用于之前的所有研究。不过现在人们爱玩pr游戏,这也不是他们的错。
via ,雷锋网ai科技评论编译。