当前位置: 首页 > 编程日记 > 正文

可构建AI的「AI」诞生:几分之一秒内,就能预测新网络的参数

‍‍

50cba3fd162462f8836978d0acc70c1d.gif

来源 | 学术头条

b53460eee3cb9a2b7f82ff063ef9e133.png

人工智能在很大程度上是一场数字游戏。当深度神经网络在 10 年前开始超越传统算法,是因为我们终于有了足够的数据和处理能力来充分利用它们。

今天的神经网络更依赖于数据和算力。训练网络时,需要仔细调整表征网络的数百万甚至数十亿参数值,这些参数代表人工神经元之间连接的强度。目标是为它们找到接近理想的值,这个过程称为优化。但训练网络要达到这一点并不容易。伦敦 DeepMind 的研究科学家 Petar Veličković 说:“训练可能需要花费几天、几周甚至几个月的时间”。

但上述这种情况可能很快就会改变。安大略省圭尔夫大学的 Boris Knyazev 和他的同事设计并训练了一个“超网络”——一种其他神经网络的“霸主”,该网络可以加快训练过程。给定一个为某些任务设计的新的、未经训练的深度神经网络,超网络可以在几分之一秒内预测新网络的参数,理论上可以使训练变得不必要。由于超网络学习了深度神经网络设计中极其复杂的模式,因此这项工作也可能具有更深层次的理论意义。这项研究题为 Parameter Prediction for Unseen Deep Architectures。

目前,超网络在某些环境中表现的出人意料地好,但仍有增长空间。Veličković 说:“如果他们能解决相应问题,这将对机器学习产生很大的影响”。

17a9c4ddd5a204780690f999e3b7257a.png获得“超能力”

目前,训练和优化深度神经网络的最佳方法是一种称为随机梯度下降技术(SGD)的变体。训练涉及在给定任务中(例如:图像识别)最小化网络误差。SGD 算法通过大量标记数据来调整网络参数,并减少误差或损失。梯度下降是损失函数从高值向下降到某个最小值的迭代过程,它代表了足够好的(有时甚至时最好的)参数值。

但是这种技术只有在网络需要优化时才有效。为了构建最初的神经网络(一般由从输入到输出的多层人工神经元组成),工程师必须依靠直觉和经验法则。这些架构在神经元层数、每层神经元数等方面可能有所不同。

cc181530fc54e224b6e3760cdfb2a402.png图1 梯度下降算法用来降低网络的“损失函数”,其中较高的值表示较大的损失。该算法试图找到全局最小值以最小化损失。

理论上,一个人可以从很多架构开始,然后优化每个架构并选择最好的。但现任 Google Brain 的访问研究员 MengYe Ren 说:“训练需要花费相当多的时间,训练和测试每个候选网络架构是不可能的。它不能很好地扩展,尤其是考虑到数百万种可能的设计。”

所以在 2018 年,Ren 和他在多伦多大学的前同事 Chris Zhang 及他们的顾问 Raquel Urtasun 尝试了一种不同的方法。他们设计了所谓的图超网络(Graph Hypernetwork: GHN),可以在给定一组候选架构的情况下,找到解决某些任务的最佳深度神经网络架构。

该名称概述了他们的方法。“图”指的是深度神经网络的架构,可以被认为是一个数学图——由线或边连接的点或节点的集合。这里的节点代表计算单元(通常是神经网络的整个层),边代表这些单元互连的方式。

图超网络的工作原理是首先对于任何需要优化的架构(称其为候选架构),它尽最大努力预测候选者的理想参数。然后将实际神经网络的参数设置为预测值,并在给定任务上对其进行测试。Ren 的团队表明,这种方法可用于对候选架构进行排名,并选择表现最佳的架构。

当 Knyazev 和他的同事看到图超网络的想法时,他们意识到可以在此基础上进行构建。在他们的新论文中,该团队展示了如何使用 GHN,不仅从一组样本中找到最佳架构,还可以预测最佳网络的参数,使其在绝对意义上表现良好。在还没有达到最好的情况下,其可以使用梯度下降进一步训练网络。

Ren 说:“这是一篇非常扎实的论文,它包含了更多我们所做的实验。看到图超网络在非常努力地提升绝对性能,我们大家都很高兴。”

1b2d8dd82213cd02c0c4623b18d7841a.png训练“教练”

Knyazev 和他的团队将他们的超网络命名为 GHN-2,它改进了Ren及其同事构建的图超网络的两个重要方面。

首先,他们依赖 Ren 等人将神经网络架构描绘为图的技术。图中的每个节点都是关于执行某种特定类型计算的神经元子集的编码信息。图的边缘描绘了信息如何从一个节点到另一个节点,从输入到输出。

第二,他们借鉴了训练超网络预测新的候选架构的方法。这需要另外两个神经网络。第一个启用对原始候选图的计算,从而更新与每个节点相关的信息,第二个将更新的节点作为输入,并预测候选神经网络的相应计算单元的参数。这两个网络也有自己的参数,必须在超网络正确预测参数值之前对其进行优化。

具体流程如下,首先你需要训练数据——候选人工神经网络(Artifical Neural Network: ANN)架构的随机样本。对于示例中的每一个架构,先从一个图开始,之后使用图超神经网络预测参数,并使用预测的参数初始化候选 ANN。使用 ANN 来执行一些特定的任务,如图像识别。通过计算 ANN 的损失函数,来更新做出预测的超网络参数,而不是更新 ANN 的参数做出预测。这样可以使超网络在每一次迭代后做的更好;然后,通过迭代标记过的训练数据集中的每一个图像和架构的随机样本中的每一个 ANN,来减少每一步的损失,直到达到最优。一般这个情况下,你就可以得到一个训练有素的超网络。

因为 Ren 的团队没有公开源代码,所以 Knyazev 的团队采纳了这些想法,从头开始编写了自己的软件,并对其进行了改进。首先,他们确定了 15 种类型的节点,通过混合、匹配可以构建任何现代深度神经网络。他们还在提高预测的准确性上取得了一些进步。

最重要的是,为了确保 GHN-2 学会预测各种目标神经网络架构的参数,Knyazev 及其同事创建了一个包含 100 万个可能架构的独特数据集。Knyazev 说:“为了训练我们的模型,我们创建了尽可能多样化的随机架构”。

因此,GHN-2 的预测能力更有可能被很好地推广到看不见的目标架构。谷歌研究院大脑团队的研究科学家 Thomas Kipf 说:“例如,它们可以解释人们使用的所有典型的最先进的架构,这是一个重大贡献。”

ecc9633601bc67323aa27fec2c60961a.png图2 图神经网络

8dfbaa8d1d6af8957b98872d9fc1bdc9.png令人印象深刻的结果

当然,真正的考验是让 GHN-2 发挥作用。一旦 Knyazev 和他的团队训练它预测给定任务的参数,例如,对特定数据集中的图像进行分类,他们就测试了它为任何随机候选架构预测参数的能力。这个新的候选者可能具有与训练数据集中的百万架构相似的属性,或者可能不同——有点离群值。在前一种情况下,目标架构被认为是在分发中;在后者中,它已无法分发。深度神经网络在对后者进行预测时经常会失败,因此在此类数据上测试 GHN-2 非常重要。

借助经过全面训练的 GHN-2 模型,该团队预测了 500 个以前看不见的随机目标网络架构的参数。然后将这 500 个网络(其参数设置为预测值)与使用随机梯度下降训练的相同网络进行对比。尽管有些结果更加复杂,但新的超网络通常可以抵御数千次 SGD 迭代,有时甚至做得更好。

0578e4fdf474e3b0f571dde828ca96ee.png图3 安大略省圭尔夫大学的 Boris Knyazev ,帮助建立了一个超网络,旨在预测未经训练的神经网络的参数。

对于图像数据集 CIFAR-10 ,GHN-2 在分布式架构上的平均准确率为 66.9%,而使用接近 2,500 次 SGD 迭代训练的网络,所达到的平均准确率为 69.2%。对于非分布式架构,GHN-2 的表现出人意料地好,达到了大约 60% 的准确率。特别是,它对一种特定知名深度神经网络架构 ResNet-50 实现了 58.6% 的可观准确率。Knyazev 在该领域的旗舰会议 NeurIPS 2021 上说:“鉴于 ResNet-50 比我们的平均训练架构大大约 20 倍,所以 ResNet-50 的泛化效果出奇地好,”。

GHN-2 在 ImageNet 上表现不佳,ImageNet 是一个相当大的数据集。平均而言,它的准确率只有 27.2% 左右。尽管如此,这与使用 5,000 步 SGD 训练的相同网络的 25.6% 的平均准确度相比也是有利的。 (当然,如果你继续使用 SGD,你最终可以以相当大的成本获得 95% 的准确率。)最关键的是,GHN-2 在不到一秒的时间内做出了 ImageNet 预测,而使用 SGD 在图形处理单元上预测参数,来获得相同的性能,平均花费时间比 GHN-2 要长 10,000 倍。

Veličković 说:“结果绝对令人印象深刻,他们基本上大大降低了能源成本。”

当 GHN-2 从架构样本中为一项任务找到最佳神经网络,而该最佳选择还不够好时,至少模型已经得到了部分训练并且可以进一步优化。与其在使用随机参数初始化的网络上释放 SGD,不如使用 GHN-2 的预测作为起点。Knyazev 说:“基本上我们模仿的是预训练”。

e68b120d91d91bae8332bdd8ba9575fd.png超越 GHN-2

尽管取得了这些成功,Knyazev 认为机器学习社区一开始会抵制使用图超网络。他将其比作 2012 年之前深度神经网络面临的阻力。当时,机器学习从业者更喜欢手工设计的算法,而不是神秘的深度网络。但是,当对大量数据进行训练的大型深度网络开始超越传统算法时,这种情况发生了变化。Knyazev :“这可以走同样的路。”

与此同时,Knyazev 看到了很多改进的机会。例如,GHN-2 只能被训练来预测参数以解决给定的任务,例如对 CIFAR-10 或 ImageNet 图像进行分类,但不能同时进行。在未来,他设想在更多样化的架构和不同类型的任务(例如图像识别、语音识别和自然语言处理)上训练图超网络。然后根据目标架构和手头的特定任务来进行预测。

如果这些超网络真的成功,新的深度神经网络的设计和开发,将不再局限于财力雄厚和能够访问大数据的公司。任何人都可以参与其中。Knyazev 非常清楚这种“使深度学习民主化”的潜力,称其为长期愿景。

然而,如果像 GHN-2 这样的超网络真的成为优化神经网络的标准方法,Veličković 强调了一个潜在的大问题。他说:“你有一个神经网络——本质上是一个黑盒子,再使用图超网络去预测另一个神经网络的参数。当它出错时,你无法解释[它]。”

当然,在很大程度上这已经是神经网络的特点了。Veličković 说:“我不会称之为弱点,而称之为警告信号。”

然而,Kipf 看到了一线希望。“一些其他的事物让我对此感到最兴奋,即 GHN-2 展示了图神经网络在复杂数据中寻找模式的能力。”

通常,深度神经网络会在图像、文本或音频信号中找到模式,这些是相当结构化的信息类型。而 GHN-2 在完全随机的神经网络架构图中找到模式。这是非常复杂的数据。

然而,GHN-2 可以泛化——这意味着它可以对看不见的、甚至分布式网络架构以外的参数做出合理的预测。Kipf 说:“这项工作向我们展示了许多模式在不同的架构中以某种方式相似,并且模型可以学习如何将知识从一种架构转移到不同的架构,这可能会激发一些神经网络的新理论。”

如果是这样的话,它可能会让我们对这些黑匣子产生新的、更深入的理解。

3b0f5fc2d4b76a5d682825b6d701219a.gif

资讯

谷歌使出禁用2G大招

资讯

大型模型语言能够理解吗?

技术

创意十足的Python命令行工具

资讯

游戏圈地震级消息,微软收购动视暴雪

78f100d126b558ee7a4ba407598b36e0.png

分享

503c013debf2de309ac65fddf831ec03.png

点收藏

fd1ce08b8e9ef65313fc6e84292c6f48.png

点点赞

b009d0e488b9a2ca0c9bb1954d935008.png

点在看

相关文章:

It is not safe to rely on the system's timezone settings

在写php程序中有时会出现这样的警告: PHP Warning: date(): It is not safe to rely on the systems timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those metho…

.NET MVC+ EF+LINQ 多表联查VIEW显示列表

1.VIEW 页面显示代码 <link href"~/Content/bootstrap.css" rel"stylesheet" /><div class"well"><table class"table"><tr><th>用户名</th><th>地址</th><th>订单编号</th…

从奥运订票系统说起——谈FastCGI 与IT 架构

2008年&#xff0c;对于首都人民来说&#xff0c;没有什么比奥运会更大的事情了。如何买到一张称心如意的比赛门票&#xff0c;也成了很多人的一个梦想。然而&#xff0c;在奥运官网抢票购买的时候&#xff0c;这个梦想却轻易地被网上购票系统的当机击成碎片&#xff0c;很多充…

【哲学百科】文艺复兴及唯理主义时期(公元1500~公元1750)

我为达目的&#xff0c;不择手段-尼古拉.马基雅维利要令习惯于君主统治的民众保有自由是一件多么困难的事情。马基雅维利的观点之一是君主不应受到道德标准的束缚&#xff0c;而应竭尽所能保全自身的荣耀以及所统治的城邦的胜利与繁荣&#xff0c;这种做法随后被人们归为现实主…

如何用 OpenGL 绘制雪花?

作者 | 许向武 责编 | 张红月出品 | CSDN博客看冬奥才知道&#xff0c;阿勒泰不但是中国的“雪都”&#xff0c;还是“人类滑雪起源地”。这个说法是否成立&#xff0c;姑且不论&#xff0c;阿勒泰的雪的确很漂亮。冬奥会有一个宣传片&#xff0c;就是借用一朵阿勒泰雪花…

面试之Hashtable和ConcurrentHashMap

那么要如何保证HashMap的线程安全呢&#xff1f; 方法有很多&#xff0c;比如使用Hashtable或者Collections.synchronizedMap&#xff0c;但是这两位选手都有一个共同的问题&#xff1a;性能。因为不管是读还是写操作&#xff0c;他们都会给整个集合上锁&#xff0c;导致同一时…

PHP动态编译出现Cannot find autoconf

在安装完PHP后,想动态编译PHP的memcache扩展库 cd memcache-2.2.5//usr/local/webserver/php/bin/phpize./configure --with-php-config/usr/local/webserver/php/bin/php-config 但是执行/usr/local/webserver/php/bin/phpize时出现错误:Configuring for:PHP Api Version: …

AnimeGANv2 实现动漫风格迁移,简单操作

作者 | Yunlord出品 | CSDN博客前言之前一直在研究如何将图像动漫化&#xff0c;尝试了阿里云api和百度api&#xff0c;效果都不尽如人意。结果发现了一个宝藏github项目——AnimeGANv2&#xff0c;能够将现实世界场景照片进行动漫风格化。可以看出AnimeGAN的效果非常好&#x…

C#调用win32 api程序实例

1、声明static extern 方法&#xff0c;使用DllImport特性 class MyClass{[DllImport("kernel32", SetLastError true)]public static extern int GetCurrentDirectory(int a, StringBuilder b);} 2、调用 StringBuilder sbnew StringBuilder {Length 250}; MyClas…

Python 之 pip拒绝访问

起因 在我使用pip安装第三方库的时候&#xff0c;控制台提示我升级pip版本 You are using pip version 9.0.1, however version 10.0.1 is available. You should consider upgrading via the python -m pip install --upgrade pip command. 很显然&#xff0c;需要使用这样的指…

Unix / 类 Unix shell 中有哪些很酷很冷门很少用很有用的命令?(转)

著作权归作者所有。 商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 作者&#xff1a;孙立伟 链接&#xff1a;http://www.zhihu.com/question/20140085/answer/14107336 来源&#xff1a;知乎 这个问题quora上有人提过 What are some lesser known but useful…

干货满满的 Python 实战项目,点赞收藏

作者 | 俊欣来源 | 关于数据分析与可视化今天小编来给大家介绍3个干货满满的计算机视觉方向的Python实战项目&#xff0c;主要用到的库有opencv-pythonnumpypillow要是大家所配置的环境当中没有这几个模块的话&#xff0c;就需要先用pip命令下载安装pip install opencv-python …

php安装完成以后要复制php.ini文件

直接 #find / -name "php.ini" 找不到&#xff0c;是因为安装php的时候没有复制配置文件 php版本变化以后ini文件名有变 php.ini-production对应于php.ini-recommended php.ini-development对应于php.ini-dist二者差异&#xff1f; 由于版本更新,这些文件有了新的命…

MASQUERADE --random 端口不随机

iptables -t nat -A POSTROUTING -o xxxx -j MASQUERADE --random发现源端口并不是随机的而是有规律递增&#xff0c;经过Google的搜索查找&#xff0c;发现新的版本有--random-full 这个参数iptables -t nat -A POSTROUTING -o xxxx -j MASQUERADE --random-full经过测试端口随…

PHP安装与使用VLD查看opcode代码【PHP安装第三方扩展的方法】

需要分析PHP代码的性能&#xff0c;或者说实现同样功能的代码到底哪个更好呢&#xff1f;或者说想知道底层的实现可以使用VLD查看opcode 下载与安装VLD # wget http://pecl.php.net/get/vld-0.11.2.tgz# tar zxvf vld-0.11.2.tgz# cd ./vld-0.11.2# /usr/local/php/bin/phpize …

实现数组字符串翻转的两种方法

//第一种方法&#xff1a;递归法 #include <stdio.h> int reverse_string(char * string) {if (*string ! \0){reverse_string(string1);printf("%c", *string);} } int main() {char *string "abcde";printf("源字符串为&#xff1a;%s\n&quo…

详解 Python 如何将爬取到的数据分别存储到 txt、excel、mysql 中!

作者 | 黄伟呢来源 | 数据分析与统计学之美1. 页面分析我爬取的页面是腾讯体育&#xff0c;链接如下&#xff1a;https://nba.stats.qq.com/player/list.htm观察上图&#xff1a;左边展示的分别是NBA的30支球队&#xff0c;右边就是每只球队对应球员的详细信息。此时思路就很清…

蹭了BCH热度,还来诋毁BCH,这些跳梁小丑到底在玩什么阴谋?

最近一些分叉币为了博眼球简直什么招数都用。有的某分叉币对主链暂停10天的问题闭口不提&#xff0c;靠微博撕逼来吸引关注&#xff0c;有的则自导自演了一出51%***的大戏。而奇怪的是当别人开始谈论他们这些错误的时候&#xff0c;他们却把矛头指向了火热的比特币现金。这些跳…

比 GPT-3 更擅长理解用户意图,OpenAI发布 InstructGPT

作者 | 青苹果来源 | 数据实战派近日&#xff0c;OpenAI 发布了一项令人瞩目的研究—— InstructGPT。在这项研究中&#xff0c;相比 GPT-3 而言&#xff0c;OpenAI 采用对齐研究&#xff08;alignment research&#xff09;&#xff0c;训练出更真实、更无害&#xff0c;而且更…

The C10K problem原文翻译

原文地址&#xff1a;http://www.cnblogs.com/fll/archive/2008/05/17/1201540.htmlThe C10K problem如今的web服务器需要同时处理一万个以上的客户端了&#xff0c;难道不是吗&#xff1f;毕竟如今的网络是个big place了。 现在的计算机也很强大了&#xff0c;你只需要花大概$…

mysql中模糊查询的四种用法介绍

下面介绍mysql中模糊查询的四种用法&#xff1a; 1&#xff0c;%&#xff1a;表示任意0个或多个字符。可匹配任意类型和长度的字符&#xff0c;有些情况下若是中文&#xff0c;请使用两个百分号&#xff08;%%&#xff09;表示。 比如 SELECT * FROM [user] WHERE u_name LIKE …

spring data jpa 详解

2019独角兽企业重金招聘Python工程师标准>>> 本篇进行Spring-data-jpa的介绍&#xff0c;几乎涵盖该框架的所有方面&#xff0c;在日常的开发当中&#xff0c;基本上能满足所有需求。这里不讲解JPA和Spring-data-jpa单独使用&#xff0c;所有的内容都是在和Spring整…

php使用curl可以get 模拟post

本机windows测试需要打开curl php.ini extensionphp_curl.dll重启apacheinclude (Curl.php);$cunew QP_Curl_Curl();$s$cu->get(http://www.baidu.com);echo $s;Curl.php可以使用http://www.myquickphp.com/的框架中的组件Curl.php/*** CURL 工具* * category QuickPHP(II…

为什么使用模块?

# -*- coding: utf-8 -*- #python 27 #xiaodeng #模块01#每个文件都是一个模块&#xff0c;并且模块导入之后就可以导入模块定义的变量名。#为什么使用模块&#xff1f; #命名空间提供了将部件组织为系统的简单的方法。 #在一个模块文件的顶层定义的所有变量名都成了被导入的模…

报告!插件×元宵来啦

欢欢喜喜 闹元宵迈过新年&#xff0c;开工大吉&#xff0c;元宵节的脚步悄悄靠近&#xff0c;在大家努力搬砖得同时&#xff0c;CSDN插件带着它的元宵活动走来啦~元宵喜乐汇虎年的第一个月圆之夜&#xff0c;除了吃汤圆还能干啥呢&#xff1f;当然是猜灯谜咯&#xff01;CSDN插…

%f%g%e区别

%f 表示按浮点数的格式输出 %e 表示按指数形式的浮点数的格式输出 %g 表示自动选择合适的表示法输出&#xff0c;可以去小数末尾多余的0转载于:https://www.cnblogs.com/holyday/p/9111777.html

Cassandra安装测试

说明&#xff0c;本人成功安装过程记录 只要看解压目录的readme.txt即可&#xff0c;其他网上教程由于版本不对会执行报错&#xff0c;例如遇到编码问题 #wget http://www.apache.org/dyn/closer.cgi?path/cassandra/1.0.3/apache-cassandra-1.0.3-bin.tar.gz #tar -zxvf a…

如何使用 Python 隐藏图像中的数据

作者 | 小白来源 | 小白学视觉隐写术是在任何文件中隐藏秘密数据的艺术。秘密数据可以是任何格式的数据&#xff0c;如文本甚至文件。简而言之&#xff0c;隐写术的主要目的是隐藏任何文件&#xff08;通常是图像、音频或视频&#xff09;中的预期信息&#xff0c;而不实际改变…

php 的 危 险 参 数

hpinfo() 功能描述&#xff1a;输出 PHP 环境信息以及相关的模块、WEB 环境等信息。 危险等级&#xff1a;中 passthru() 功能描述&#xff1a;允许执行一个外部程序并回显输出&#xff0c;类似于 exec()。 危险等级&#xff1a;高 exec() 功能描述&#xff1a;允许执行一个外部…

开源 | 蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系

小蚂蚁说&#xff1a; 数据、消息、微服务是蚂蚁金服自主研发的金融级分布式中间件 SOFA &#xff08;Scalable Open Financial Architecture&#xff09;的三大方向。 一个多月前&#xff0c;蚂蚁金服开源了 SOFABoot 和 SOFARPC 两个组件&#xff0c;受到了社区的热烈欢迎&am…