摘要: 从NeurIPS 2018看AI发展路线!
去年9月份的时候,我发表过一份技术报告,阐述了我认为人工智能最重要的挑战,大概有如下四个方面:git
在2018年NeurIPS会议期间,我调查了目前其余研究人员关于这些问题的方法和观点,如下是报告的具体内容:github
很明显,若是咱们用人工神经网络来实现人类大脑中所发现的1000亿个神经元,标准的二维矩阵乘积并无多大的用处。算法
模块层由一个模块池和一个控制器组成,控制器根据输入来选择要执行的模块缓存
为了解决这个问题,我在2018年的NeurIPS上发表了研究性论文《模块化网络:学习分解神经计算》。不评估对于每一个输入元素的整个ANN,而是将网络分解为一组模块,其中只使用一个子集,这要取决于输入。这个过程是受人脑结构的启发,在其中咱们使用了模块化,这也是为了改善对环境变化的适应能力和减轻灾难性的遗忘。在这个方法中,咱们学习到了这些模块的参数,以及决定哪些模块要一块儿使用。以往有关条件计算的文献都记载着许多模块崩溃的问题,即优化过程忽略了大部分可用的模块,从而致使没有用最优的解决办法。咱们基于指望最大化的方法能够防止这类问题的发生。网络
遗憾的是,强行将这种分离划分到模块有其自身的问题,咱们在《模块化网络:学习分解神经计算》中相继讨论了这些问题。相反地,咱们可能会像我在关于稀疏性的技术报告中讨论的那样,设法在权重和激活中利用稀疏性和局部性。简而言之,咱们只想对少数非零的激活执行操做,丢弃权重矩阵中的整行。此外,若是连通性是高度稀疏的,那么咱们实际上能够将二次方成本降到一个很小的常数。这种的条件计算和未合并的权值访问在当前的GPU上实现的成本很是的高,一般来讲不太值得操做。less
NVIDIA一个软件工程师说,目前尚未计划建造可以以激活稀疏性的形式而利用条件计算的硬件。主要缘由彷佛是通用性与计算速度之间的权衡。为这个用例搭建专用硬件所花费的成本过高了,由于它有可能会限制其它机器学习的应用。相反,NVIDIA目前从软件的角度更加关注权重的稀疏性。机器学习
GraphCore搭建的硬件容许在靠近处理单元的缓存中向前迁移期间存储激活,而不是在GPU上的全局存储内存中。它还能够利用稀疏性和特定的图形结构,在设备上编译并创建一个计算图形。遗憾的是,因为编译成本过高,这个结构是固定的,不容许条件计算。分布式
做为一个总体的判断,对于范围内的条件计算彷佛没有对应的硬件解决方案,目前来讲咱们在很大程度上必须坚持多机器并行的方式。在这方面,NeurIPS发布了一种全新的分配梯度计算方法—Mesh-Tensorflow,该方法不只能够横跨多机进行计算,还能够跨模型计算,甚至容许更大的模型以分布式的方式进行训练。ide
长期以来,我一直主张基于深度学习的持续学习系统,即它们可以不断地从经验中学习并积累知识,当新任务出现的时候,这些系统能够提供以前积累的知识以帮助学习。自己,它们须要可以向前迁移,以及防止灾难性的遗忘。NeurIPS的持续学习研讨会正是讨论这些问题的。虽然这两个标准也许是不完整的,可是多个研究者(Mark Ring,Raia Hadsell)提出了一个更大的列表:模块化
在我看来,解决这个问题的方法有六种:
以上这些方法的任何一个都不能处理上述持续学习列表里的全部问题。遗憾的是,这在实践中也是不可能的。在迁移和内存或计算之间老是有一个权衡,在灾难性遗忘和迁移或者内存或者计算之间也老是有一个权衡。所以,很难彻底地、定量地衡量一个代理的成功与否。相反,咱们应该创建基准环境,要求持续学习代理具有咱们所须要的能力,例如,在研讨会上展现的基于星际争霸(Starcraft)的环境。
此外,Raia Hadsell认为,持续学习涉及到从依赖i.i.d.(Independent and Identically distributed)数据的学习算法转向从非平稳性分布中学习。尤为是,人类擅长逐步地学习而不是IID。所以,当远离IID需求时,咱们有可能可以解锁一个更强大的机器学习范式。
论文《经过最大限度地迁移和最小化干扰的持续学习(Continual Learning by Maximizing Transfer and Minimizing Interference)》代表REPTILE(MAML继承者)和减小灾难性遗忘之间有着一个有趣的联系。从重放缓冲区中提取的数据点的梯度(显示在REPTILE)之间的点积致使梯度更新,从而最小化干扰并减小灾难性遗忘。
讨论小组内有人认为,咱们应该在控制设置环境中进行终身学习实验,而不是监督学习和无监督学习,以防止算法的开发与实际应用领域之间的任何不匹配。折现系数虽然对基于贝尔曼方程(Bellman Equation)的学习是有帮助的,但对于更现实的加强学习环境设置来讲可能存在问题。此外,任何学习,特别是元学习,都会因为学分分配而受到固有的限制。所以,开发具备低成本学分分配的算法是智能代理的关键。
元学习就是关于改变学习算法其自己。这多是改变一个内部优化循环的外部优化循环,一个能够改变自身的自引用算法。许多研究人员还关注着快速适应性,即正向迁移,到新的任务或者环境等等。若是咱们将一个学习算法的初始参数看做它本身的一部分,则能够将其视为迁移学习或者元学习。Chelsea Finn的一个最新算法—MAML(未知模型元学习法),他对这种快速适应性算法产生了极大的兴趣。例如,MAML能够用于基于模型的强化学习,其中的模型能够快速地进行动态改变。
在进化策略梯度(Evolved Policy Gradients ,EPG)中,损失函数使用随机梯度降低法优化策略的参数,同时损失函数的参数也改进了。
一个有趣的想法是代理轨迹和策略输出的可区分损失函数的学习。这容许在使用SGD来训练策略时,对损失函数的几个参数进行改进。与此同时,进化策略梯度的做者们代表了,学习到的损失函数经过回报函数进行了泛化,并容许有快速适应性。它的一个主要问题是学分分配很是缓慢:代理必须使用损失函数进行彻底地训练,以得到元学习者的平均回报(适合度)。
对于学习过的优化器的损失状况变得更加难以控制
我在元学习研讨会上的另外一个有趣发现是元学习者损失状况的结构。Luke Metz在一篇关于学习优化器的论文中指出,随着更新步骤的展示,优化器参数的损失函数变得更加复杂。我怀疑这是元学习算法的广泛行为,参数值的微小改变能够关系到最终表现中的巨大变化。我对这种分析很是感兴趣。在学习优化的案例中,Luke经过变分优化(Variational Optimization)—进化策略的一种原则性解释,以此缓和损失状况来解决这个问题。
目前大多数强化学习算法都是以游戏或模拟器为基准环境的,好比ATARI 或者是Mujoco。这些是简单的环境,与现实世界中的复杂性几乎没什么类似之处。研究人员常常唠叨的一个主要问题是,咱们的算法来自低效的样本。经过非策略优化和基于模型的强化学习,能够更有效地利用现有数据,从而部分解决这一问题。然而,一个很大的因素是咱们的算法没有以前在这些基准中使用过的经验。咱们能够经过在算法中手工概括误差来避开这一问题,这些算法反映了某些先验知识,可是搭建容许在将来能够利用知识积累的环境有可能更有趣。据我所知,直到如今尚未这种基准环境。雷艇(Minecraft)模拟器多是最接近这些要求的了。
持续学习星际争霸(Starcraft)环境是一个以很是简单的任务开始的课程。对于如此丰富的环境,另一种选择是创建明确的课程,如前面提到的星际争霸环境,它是由任务课程组成的。这在必定程度上也是Shagun Sodhani在他的论文《Environments for Lifelong Reinforcement Learning》。他在清单上列出了:
游戏引擎开发商Unity3D发布了一个ML-Agents工具包,用于在使用Unity的环境搭建中进行训练和评估代理。通常来讲,现实环境搭建的一个主要问题是需求与游戏实际设计有本质的不一样:为了防止过拟合,重要的是,在一个广阔的世界里,物体看起来都是不同的,所以不能像在电脑游戏中常常作的那样被复制。这意味着为了真正的泛化,咱们须要生成的或精心设计的环境。
最后,我相信可使用计算来生成非平稳环境,而不是经过手动来搭建。例如,这有多是一个具备与现实世界相似环境的物理模拟器。为了节省计算资源,咱们也能够从基于三维像素的简化工做开始。若是这个模拟过程呈现了正确的特性,咱们有可能能够模拟一个相似于进化的过程,来引导一个非平稳的环境,开发出许多相互影响的生命形式。这个想法很好地拟合了模拟假设(simulation hypothesis)理论,而且与Conway’s Game of Life有必定的联系。这种方法的主要问题是产生的复杂性与人类已知的概念没有类似点。与此同时,由此产生的智能代理将没法迁移到现实世界中。最近,我发现Stanley和Clune的团队在他们的论文《假想:不断地生成愈来愈复杂和多样化的学习环境(POET: Endlessly Generating Increasingly Complex and Diverse Learning Environments)》中已经部分地实现了这个想法。环境是非平稳性的,能够被看做是一个用于最大化复杂性和代理学习进程的代理。他们将这一观点称为开放式学习,我建议你阅读一下这篇文章。
本文为云栖社区原创内容,未经容许不得转载。