写点什么

不用训练就能获得性能优越的神经网络模型?Google 提出探索权重不可知神经网络新方法

  • 2019-09-04
  • 本文字数:2615 字

    阅读完需:约 9 分钟

不用训练就能获得性能优越的神经网络模型?Google提出探索权重不可知神经网络新方法

在探索权重不可知网络过程中,Google 提出了一种无需学习权重参数就能在其环境中运行良好的“代理”:1.使用一个完善的拓扑搜索算法(NEAT),通过逐个添加单个连接和单个节点来演化神经网络架构;2.通过简单地找到最佳的单个共享权重参数,来训练 WANN,从而最大限度地提高其性能。


当训练神经网络去完成给定的图像分类或强化学习任务时,我们都会细化一组权重,这种权重往往是与网络中的各个连接相关联的。另一种已经取得实质性进展的神经网络创建方法是神经网络架构搜索,它利用人工调配组件(如卷积网络组件转换器块)构建神经网络。研究表明,利用这些组件构建的神经网络(如深度卷积网络),对图像处理任务具有很强的归纳偏置,甚至可以在权重随机初始化的情况下执行。虽然神经网络架构搜索提供了一些新的方法,可以为当前的任务域安排具有已知归纳偏置的人工调配组件,但在自动发现具有此类归纳偏置的新神经网络(用于不同的任务域)方面几乎没有进展。


就像某些从出生起就具有反捕食行为的早熟物种,无需学习就能完成复杂的运动和感观任务一样,也许我们也可以构建出不需要训练就能很好地完成任务的神经网络。当然,这些自然的(人工的)神经网络可以通过训练得到进一步的完善,但它们即使不学习也能执行任务的能力表明,对于任务的偏置,它们也可以很好的适用。


在“权重不可知神经网络”(WANN)中,我们提出了专门搜索这些带有归纳偏置网络的第一步:这些神经网络架构即使使用随机共享的权重,也可以执行各种任务。我们这项工作的目的是:了解这种神经网络在不学习任何权重参数的情况下,仅依靠其神经网络架构,对给定任务的完成度是多少。通过研究这样的神经网络架构,我们提出了一种无需学习权重参数就能在其环境中运行良好的代理。此外,为了促进该领域的进步,我们还开放了源代码,以便更广泛的研究社区重现我们的 WANN 实验。



左图:一个人工调配、完全连接的深度神经网络,具有 2760 个权重连接。使用学习算法,我们可以解出 2760 个权重参数的集合,使该网络能够执行BipedalWalker-v2任务。

右图:一种与权重无关的神经网络架构,具有 44 个连接,可以执行相同的 Bipedal Walker 任务。与全连接网络不同,此 WANN 无需训练每个连接的权重参数,仍然可以执行任务。实际上,为了简化训练,WANN 被设计成在每个权重连接的值相同或共享时执行,甚至在这个共享权重参数被随机采样时也会起作用。

寻找 WANN

我们从一组最小的神经网络架构候选对象开始,每个候选对象只有很少的连接,并使用一个完善的拓扑搜索算法(NEAT),通过逐个添加单个连接和单个节点来演化架构。WANN 背后的关键理念是通过降低权重来搜索架构。与传统的神经架构搜索方法不同,新架构的所有权重参数都需要使用学习算法进行训练,我们采用了一种更简单、更有效的方法。这里,在搜索过程中,所有候选架构首先在每次迭代时分配一个共享权重值,然后进行优化,以便在广泛的共享权重值范围内很好地执行任务。



用于搜索网络拓扑空间的操作符

:一个最小的网络拓扑结构,输入和输出仅部分连接。

中间:网络的三种更改方式:

(1)插入节点:通过拆分现有连接,插入新节点。

(2)添加连接:通过连接两个先前未连接的节点添加一个新连接。

(3)变更激活:重新分配隐藏节点的激活函数。

:可能的激活函数(线性、阶跃、sin、cos、高斯、tanh、sigmoid、逆、绝对值、ReLU)


除了探索一系列与权重无关的神经网络之外,重要的是还要寻找只有它们需要的复杂网络架构。我们利用多目标优化技术,同时对网络的性能和复杂度进行优化。



权重不可知神经网络搜索概述及其用于搜索网络拓扑空间的相应运算符。

训练 WANN 架构

与传统神经网络不同的是,我们可以通过简单地找到最佳的单个共享权重参数来训练 WANN,从而最大限度地提高其性能。在下面的例子中,我们可以看到权重不可知神经网络架构(在某种程度上)使用恒定的权重来完成一个摇摆式cartpole任务




WANN 以各种不同的权重参数执行 Cartpole Swing-up 任务,并且还使用微调的权重参数。


正如我们在上图中看到的,虽然 WANN 可以使用一系列共享权重参数来执行其任务,但是其性能仍然无法与学习每个单独连接权重的神经网络相比较。如果我们想进一步提高它的性能,我们可以使用 WANN 架构和最佳共享权作为起点,使用学习算法微调每个连接的权重,就像我们通常训练其他神经网络一样。以网络架构的权重无关属性为起点,并通过学习对其性能进行微调,可能有助于提供动物学习方式的深刻类比。




通过对性能和网络简单性的多目标优化,我们的方法找到了一个简单的 WANN,可以用于汽车比赛的像素任务,而无需明确训练神经网络的权重


神经网络架构仅使用随机权重的功能还提供了其他优势。例如,通过使用相同 WANN 架构的副本,但是其中 WANN 的每个副本都分配了不同的权重值,我们可以为相同的任务创建多个不同模型的集合。这种集合通常比单个模型获得更好的性能。我们通过一个MNIST分类器使用随机权重的演化过程说明这一点:



MNIST 分类器使用随机权重的演化过程。


传统的随机初始化神经网络在 MNIST 上的精度约为 10%,而这种使用随机权重的特殊神经网络架构在应用于 MNIST 上时,其精度远高于随机(> 80%)。当使用 WANN 集合,其中每个 WANN 分配有不同的共享权重时,精确度可以提高到> 90%。


即使没有集成方法,也可以将网络中的权重值压缩为一,从而使网络能够快速调整。快速调整权重的能力可能在持续、终生学习中很有用,在这种学习中,代理在整个生命周期内获得、适应和转移技能。这使得 WANN 特别适合利用Baldwin效应,Baldwin 效应是一种进化压力,它奖励那些倾向于学习有用行为的个体,而不会陷入“学习学习”这个代价高昂的计算陷阱。

结论

我们希望这项工作可以作为一个垫脚石,帮助发现新的基础神经网络组件,如卷积网络,其发现和应用已经在深度学习取得了令人难以置信的进展。自卷积神经网络被发现以来,研究领域可用的计算资源显著增加。如果我们将这些资源用于自动发现并希望在神经网络架构中实现更多的增量改进,那么我们同样相信,使用新的构建块(而不仅仅是它们的安排)来搜索也是值得的。


如果有兴趣了解更多,我们邀请你阅读互动文章(或离线阅读 pdf 版本的论文)。除了将这些实验开源给研究社区外,我们还发布了一个名为PrettyNEAT的通用 Python 实现,以帮助感兴趣的读者从基本原理出发探索令人兴奋的神经网络领域。


原文链接


http://ai.googleblog.com/2019/08/exploring-weight-agnostic-neural.html


2019-09-04 11:048971

评论

发布
暂无评论
发现更多内容

Java学习笔记——内部类,linux底层架构

Java 程序员 后端

Java实现文件切割拼接,MongoDB数据分布不均的解决方案

Java 程序员 后端

Java并发编程---Java多线程基本概念(1),java多线程下载视频

Java 程序员 后端

Java是动态语言吗?JavaCompiler实现动态编译,并通过反射赋值

Java 程序员 后端

Java开源生鲜电商平台-支付模块的设计与架构(源码可下载)

Java 程序员 后端

Java安全之反序列化回显与内存码,java面试个人规划

Java 程序员 后端

王者荣耀商城异地多活架构设计

Rabbit

Java开发必须要会!java微服务技术栈,菜鸟教程linux教程

Java 程序员 后端

文本前后空格去除工具

入门小站

工具

Java异常架构与异常关键字,java引用类型和基本类型的区别面试

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day14,mybatis常见面试题

Java 程序员 后端

Java常用类使用总结,linuxshell教程

Java 程序员 后端

Java并发编程---Java多线程基本概念,java高并发编程详解pdf百度网盘

Java 程序员 后端

JAVA多线程和并发基础面试问答,吊打面试官你也可以,看完这一篇你就懂了

Java 程序员 后端

Java学到什么程度才算精通?,springmvc原理图解

Java 程序员 后端

linux中删除特殊文件

入门小站

Linux

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day34,rabbitmq集群同步原理

Java 程序员 后端

Java并发系列终结篇:彻底搞懂Java线程池的工作原理(1)

Java 程序员 后端

Java应用日志如何与Jaeger的trace关联,mybatis多表查询原理

Java 程序员 后端

Java异常面试题(2020最新版),mongodb入门

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day20,从java后端到全栈百度云

Java 程序员 后端

Java并发系列终结篇:彻底搞懂Java线程池的工作原理,nginx性能优化面试题

Java 程序员 后端

java教程——泛型,java反射原理三种

Java 程序员 后端

JAVA数组,nginx教程从入门到精通

Java 程序员 后端

Java学习笔记——String,java程序开发实战教程在线

Java 程序员 后端

Java并发原理抽丝剥茧,读写锁ReadWriteLock实现深入剖析

Java 程序员 后端

Java是未来的第一编程语言吗?(1),java多线程常见面试题

Java 程序员 后端

[ CloudWeGo 微服务实践 - 03 ] 小项目尝试

baiyutang

golang 微服务 10月月更

Java异常处理的误区和经验总结,2021最新网易Java面试题目

Java 程序员 后端

Java性能优化的35个细节(珍藏版),文末有福利

Java 程序员 后端

java教程——注解,Java程序员校招蚂蚁金服

Java 程序员 后端

不用训练就能获得性能优越的神经网络模型?Google提出探索权重不可知神经网络新方法_AI&大模型_Google AI_InfoQ精选文章