谷歌工程师、W3C的联合主席 Ilya Grigorik 也开发了一个开源版本的 bug 预测工具,目前已被下载近 3 万次。开源地址:https://github.com/igrigorik/bugspots 让代理自己设计神经网络 差不多同一时间,MIT 媒体实验室的研究人员则提出了自动生成神经网络架构的方法。在论文《Designing Neural Network Architectures using Reinforcement Learning》当中,Bowen Baker 等人提出,目前设计卷积神经网络(CNN)架构需要人的专业知识和劳动,设计新的架构需要经过大量实验手工编码,或者从个别现有的网络架构修改得到。 为此,他们提出一种基于强化学习的元建模方法,以针对给定的学习任务自动生成高性能 CNN 体系结构。代理(agent)遍历可能存在的架构,并且迭代发现在学习任务上具有改进性能的设计。在图像分类基准上,代理所设计的网络(仅由标准卷积层、池化层和完全连接层组成)比使用相同层类型设计的现有网络表现更好,与使用更多复杂层类型的结构相比,结果也不相上下。 将学习算法表示为递归神经网络 再说一下 OpenAI 在这方面的努力。 在前不久提交的论文《RL2: Reinforcement Learning via Slow Reinforcement Learning》中,OpenAI 的 Yan Duan 等人提出,将学习算法表示为一个递归神经网络(RNN),并从数据中学习。这种方法称为 RL2,研究人员让算法被编码在 RNN 的权重中,通过通用的“慢”(“slow”)RL 算法慢慢学习(而没有从开始就设计一个“快的” RL 算法)。 RNN 接收典型的RL算法所能接收的所有信息,包括观察、动作、奖励和终止标志,RNN在给定的马尔科夫决策过程(MDP)中保持其状态。RNN的激活存储“快”RL算法的状态于当前的MDP中。OpenAI 的研究负责人 Ilya Sutskever 和伯克利的 Pieter Abbeel 也是论文作者。 深度增强学习(deep RL)已经在自动学习复杂行为方面取得成功。然而,该学习过程需要大量的试验。相比之下,得益于对世界的先有知识,动物仅仅需要几个试验就能学会新的任务。本论文试图弥合这一差距。 研究人员用实验评估了RL2在小规模和大规模问题上的表现。“在小规模问题上,我们训练它来解决随机生成的多臂赌博机问题(multi-armed bandit problems)和有限MDP。RL2被训练好后,它在新的MDP问题上的表现接近人类设计的最优算法。在大规模问题上,我们用基于视觉的导航任务测试RL2,并扩展到高维问题。” DeepMind 一直在努力:利用强化学习,打造能学习和推理的机器 神经程序解释器(NPI) 2015 年,DeepMind 团队开发了一个“神经编程解释器”(NPI),能自己学习并且编辑简单的程序,排序的泛化能力也比序列到序列的 LSTM 更高。描述这项研究的论文《神经程序解释器》(Neural Programmer-Interpreters),被评选为 ICLR'16 最佳论文。 NPI 是一种递归性的合成神经网络,能学习对程序进行表征和执行。NPI 的核心模块是一个基于 LSTM 的序列模型,这个模型的输入包括一个可学习的程序嵌入、由调用程序传递的程序参数和对环境的特征表征。这个核心模块的输出包括,一个能指示接下来将调用哪个程序的键、一个经典算法程序的参数,以及一个能指示该程序是否该停止的标记。除了递归性内核外,NPI 构架还包括一个内嵌的可学习程序的键值内存。这种程序-内存的结构对于程序的持续学习和重用是极其重要的。
NPI 与 序列到序列 LSTM 对不同长度的序列进行排序的准确率对比,最长序列含有20个数组。 NPI 有三个拥有学习能力的部件:一是任务未知的递归内核,二是持续键值程序内存,三是基于特定领域的编码器,这个编码器能在多个感知上有差异的环境中让单一的 NPI 提供截然不同的功能。通过合成低层程序表达高层程序,NPI 减少了样本复杂性,同时比序列到序列的 LSTM 更容易泛化。通过在既有程序的基础上进行建构,程序内存能高效学习额外的任务。NPI 也可以利用环境缓存计算的中间结果,从而减轻递归隐藏单元的长期存储负担。 (责任编辑:本港台直播) |