NAS聪明如人? 如何自己寻找答案!道翰天琼认知智能机器人API平台接口为您揭秘。

NAS聪明如人? 如何自己寻找答案!道翰天琼认知智能机器人API平台接口为您揭秘。

近期,神经网络结构搜索 (NAS)引起了学界和工业界的高度关注。目前,NAS已在很多任务(尤其是CV相关任务)上得到应用,针对NAS的研究也逐渐深入。那么NAS未来的发展趋势会是怎样的呢?为此,VALSE Webinar 2020-17期邀请了王云鹤(华为诺亚方舟实验室)、欧阳万里(悉尼大学)、常晓军(蒙纳士大学)、纪荣嵘(厦门大学)、严骏驰(上海交通大学)等五位领域专家,王云鹤担任主持人,围绕主题“高精度+高效率:NAS的发展趋势” 开展了深入探讨。该论坛主要分为5个议题,本文是该次讨论的文字实录。
1

NAS 是否物超所值?王云鹤:NAS在很多任务上都得到了应用,尤其是计算机视觉相关的任务上。NAS搜索出来的模型都达到了业界最好的性能。但是,NAS所带来的性能提升与他的成本相比,是否是物超所值的呢?欧阳万里:目前可以看到,随着硬件综合成本的降低、运转速度更快的新算法的不断开发,综合考虑,我们相信NAS会越来越物超所值。这个技术刚开始是比较花钱的,例如刚开始去买的各种新潮的硬件设备一样,开始价格可能感觉还不够便宜,但再过五年以后就不一样了。目前NAS是类似这样的一个发展过程。对比几年以前的NAS和现在的NAS的准确率,在ImageNet上是有改善的,但是还没有到比人工设计要好很多的状态。回顾2012年发展的深度学习,做任务的时候,深度学习并不比人工设计的好多少,那么过了几年事情是怎么发展的,深度学习至少会证明它是有效的。NAS在里面是否会有效?我认为这应该是promising(前景非常乐观的)发展。常晓军:我对这个问题对于工业界上的影响,我思考也挺多的。如果我们花了两三天,但只是把效果从95%提升到97%,对于工业界,这个提升的好处到底有多少,比如视频搜索的话,95%和97%的准确率,这其中的差别用户是感受不到的。未来是否有必要提出一个新的评价指标,来综合考虑精度的提升以及搜索效率,这是我一直在思考的问题。王云鹤:我认为有的时候也不完全是这样,比如自动驾驶追求的就是最后那百分之几的精度提升。现在大多数的情况下看到的NAS在提升方面的效果并不是那么大,比如在ImageNet上,越来越多NAS算法追求更高的精度,但是看起来似乎没有特别大的提升。纪荣嵘:随着算力的提升,速率上的损失还是可以接受的。特别是像用CNN的任务太多了,不只是做research这种简单的分类任务,很多新任务重新设计模型要花太多的时间,我没有那么多程序员。所以NAS帮助我们做的自动化,这方面收益肯定是值得的。包括我们有一些NAS的工作,都在加速整个架构搜索的流程。所以我认为NAS肯定是有收益的。严骏驰:NAS研究并不只是为了得到一个更高精度、更高效的模型,也是帮助我们更好地去研究尝试探索神经网络内部的连接和运算单元之间的关系。这样可以更好地给我们的学者对理解神经网络内部的机理带来很多的帮助,如同下围棋,AlphaGo可以帮助围棋高手们对围棋有更好的理解,这也是值得我们推敲的一方面。
2

NAS能应用于其他数据集和任务吗?

王云鹤:NAS是在一个数据集、一个任务上尽可能地对网络结构进行优化,那么NAS搜索出来的模型可以被应用于其它数据集和其它任务吗?

严骏驰:我认为现在这是一个研究的趋势。我们去做NAS,一个方面是在一个数据集,另一方面现在的NAS研究考虑泛化性能。比如从CIFAR10的分类任务扩展到ImageNet的更大规模的分类,或者到MS-COCO的检测任务上,这些都是有一些尝试。目前很多的研究依然侧重搜索的空间,因为搜索空间要有一定的针对性,所以我认为在搜索的search space和search strategy这两方面都需要去考虑多个数据集和多个任务的方法和性能的问题。王云鹤:另外一个方面,目前NAS仍然是在全精度(FLOAT32)上进行搜索,我也关注到纪老师有关于binary network(二值网络,1bit参数)的架构搜索,您觉得1bit/低bit的NAS和全精度的NAS相比,二者有什么区别或者相同的地方?纪荣嵘:优化(低bit网络架构搜索)在概念上是没有问题,但实际上不是很容易进行优化的。如果大家能把优化理论算法解决的话,是很好的一个方向。因为现在做网络压缩的方法,大家都在往这方面尝试,binary network是典型网络压缩的算法,NAS网络压缩最近也做了很多的工作,这个大家肯定愿意去尝试。王云鹤:欧阳老师您对NAS在不同数据集和任务上,比如目标检测、行人重识别,与当前主流NAS比较,您有没有什么建议?欧阳万里:目前看到的是已经有一些网络在CIFAR10上去搜索,迁移到ImageNet数据集发现精度也还不错,当然如果直接在ImageNet上面搜效果应该会更好,我认为现在去做尝试应该是可能做好的。另一方面,个人感觉NAS的目的主要是针对特定任务,去找到针对特定任务更合适的架构。最开始我们是想人工设计一个特征可以应用于任何的数据库,接下来是对这些不同的数据库有了一个深度模型,我们要去学习它的参数。现在我们不只要学习模型的参数,还要找到适合对应数据库的架构(NAS),这样的类似于原来深度模型里面的微调在将来的应用过程中,仍然是需要的。

3

NAS需要更大的数据集吗?
王云鹤:由于Google开源了NASBench-101,最近开始有更多的工作在讨论利用精度预测器来构建NAS系统。虽然,这类算法可以解决性能评估的不准确性,但是预测器的训练需要大量的精细训练的深度神经网络作为样本,是否有必要构建更大的NAS数据集?
纪荣嵘:我们做了一系列的关于performance estimation(性能评估预测)的工作,其中有很多细节,包括如何加速性能估计的各种各样的方法。这(NAS)里面主要的实际开销中,得到performance占了很大一部分,所以这个步骤还是蛮重要的。这个议题是训练器的训练需要大量精细的网络作为样本,构建更大的NAS数据集。这个问题很像前一个问题(NAS的可迁移性),还有(涉及到)一个广义的NAS网络,不同的答案,可能都不一样。但是我们特别希望有一个像VGT这样的基础的东西,比如提供部分优化的中间状态,从中间状态再往下做那是最好的一个状态了。这部分我不认为一定是NAS,大家可以想想Meta-Learning(云学习),这是蛮有意思的。但是如果大家读过文章都知道,有一些NAS就是把模块拼在一起做组合,但是证明效果没有那么好,所以可能需要特殊人用这个方法pursue它的一个经典的工作。我们最近可能会发布一套跟NAS相关的一个平台,有点像NNI,做出来可以供大家使用。严骏驰:我们现在做的数据集背后限定了搜索空间,这与我们要做一个训练集有各自地的分布一样。如果测试体不在这个分布里,可能就会产生过拟合或预测产生一些困难,我认为过拟合分布的偏移是第一点。第二点,因为图网络本身是离散的东西,里面是离散的数据,在映射到一个连续的performance上面可能比一般的连续的数据映射更复杂。这两点是要比较小心的地方:一方面是搜索空间(对模型结构造成的限制),一方面是本身图是一个离散的结构,所以映射(从模型结构映射到performance)存在很多不连续性和不稳定性。王云鹤:当数据集太大的情况下,图也不是很好构建。常老师的工作里面提到了一些神经网络精度的评估,您提到的这种利用NAS的数据集去构建评估器的工作,是不是能帮助我们彻底解决NAS在执行过程中性能评估不准确的问题呢?常晓军:这个问题很有价值,彻底解决这个感觉有点难,但是肯定会起到辅助的作用,能够提高我们的评测效果。王云鹤:更早一点,商汤的一些工作也是关于精度预测的,欧阳老师在这个方向可以给出一些建议么?欧阳万里:我本身其实没有参与精度预测的这样一些工作。其实做NAS有很多挺有意思的方向,从精度角度研究也确实是挺有意思的。比较难一点的问题是要解决鸡生蛋、蛋生鸡的问题(模型搜索的目的是为了得到高精度模型,但是在搜索过程中又需要利用模型的精度来衡量搜索结果)。

4

NAS 未来架构和搜索空间设计思路王云鹤:对于给定的搜索空间,NAS产生了一系列具有更高精度的神经网络结构。这其中有一些与之前的结构是相似的也有不相似的,比如多分支的网络架构,这些结构对未来的架构设计和搜索空间的设计有什么启发呢?
常晓军:之前的工作都是别人给一个手工设计的网络,通过实验验证这个网络的效果比较好,但是如果我们由NAS跑出来一个神经网络,可以倒推网络结构设计成这样为什么会达到好的效果,这可能会给我们在后续的网络设计方面有一些不错的启发。王云鹤:您是指NAS的算法跟搜索空间的设计可能会迭代起来去做出更好地东西。刚才观众们在后台问了一个有意思的问题, NAS怎么能产生出像ResNet这样的一个东西呢?我们之前没有见过ResNet怎么产生它。常晓军:那肯定是针对我们蒸馏的神经网络提出来的吧。王云鹤:这个问题应该是指一个通用的问题。我们再请严老师回复一下,NAS现在有没有对图神经网络或者是有一些其他结构的设计?严骏驰:这个可以是一个比较开放性的问题,我们现在也想往这一方向、也在做一些探索,这里面比较重要的一个问题是关于图的网络的生成模型,因为做生成模型图是个离散的结构。另外一方面取决于数据集的丰富程度,因为(NAS)数据集由搜索空间决定的,手工设计什么样的搜索空间,怎样采样生成很多的样本,再去算它对应的performance。但我们总是会被限制在搜索空间里。如果当生成的图的结构不在这个搜索空间里,那么预测就会出现困难。那这个问题本质上是一个机器学习的问题,刚才纪老师说的Meta-Learning等等都是有它的关系的。包括这个跟强化学习,我们面临着样本不够的问题。在这些层面,很多是机器学习本质的问题。我们做NAS的学者同学们,也可以更多地去看一些这方面机器学习本身的发展,肯定对我们这方面的研究是有裨益的。王云鹤:谢谢严老师,下一个小问题是给欧阳老师。NAS虽然产生了很多很奇怪的模型,有的精度很好,有的精度不好,但是它基本上主要的算法还都是在分类任务上面去做的。我们在分类任务上得到的这些模型,对于其他的任务,比如说您在其他领域做的CV相关的工作,比如这种intecture上面会不会在这种手工设计的网络上面去产生相应的影响呢?欧阳万里:我想应该是会的,现在用NAS去做相关的任务,比如物体检测已经有不少工作在做了。因为检测包含几个部分,一个是backbone,一个是neck/head (例如FPN网络),这两个部分都有一些现有工作在考虑了。当然检测也有检测自己的问题,所以针对检测的问题去设定自己的合适的搜索空间和搜索算法,还是会有不少的研究者在这里(目标检测的NAS)关注的,包括像Person ReID(行人重识别)也是类似的。在各个不同的方向(任务),已经有不少的工作用NAS在做了。那么NAS应用在其他方面(任务),相信还会有一些工作去考虑,进一步地完善起来。王云鹤:谢谢欧阳老师。我们再请纪老师讨论一下,NAS产生的这些结构,跟我们去做模型裁剪、剪枝产生的结构,有没有一些相通的地方?纪荣嵘:目前来说还没有看到。王云鹤:之前我看到有讨论说NAS所产生的模型神经元多一些,还是中间的神经元多一些?剪枝可能也会产生一些不一样的结果,比如在ResNet上面我们去观测到,它可能会有一些浅层的剪枝比较少或者是其他的现象。纪荣嵘:这个问题和另一个问题是连在一起的,就是你的这个模型是否可以去理解它的搜索网络架构,当然我们很希望(机器搜索到的结构和人工设计的结构)一样的,但是即使机器找到了(人工设计的结构,例如ResNet)一定也要问为什么?是很凑巧,还是说他们都有什么相同的本质的结构。如果我们人工设计的网络,跟NAS跑出来的网络没有什么不同,那么机器证明了我们的设计是完美的,这是最好的,但是我们并没有看到这种的东西。我们目前看到(机器搜索出来的结构与人工设计的结构)是不一样的,所以要么机器错,要么人错,但是其实我们都没做,只是两者都不是最优解。

5

如何解决NAS的优化难题?
王云鹤:NAS的算法同时存在很多个优化问题,比如我们要同时优化权重和架构的参数,有些时候我们也会涉及到多个任务多个数据集一起搜索,比如检测任务。把所有问题都放在一起进行搜索肯定是最理想的求解方案,但是也带来了求解的不稳定性,各位老师针对NAS里面的这些优化难题有没有什么好的建议?纪荣嵘:因为NAS里面的操作很多,现在的方向不一样,比如进化算法有自己的优化难题,这种直接可以解的NAS(DARTS)也有自己优化难题,各自好像不大相同。NAS的算法可以分成很多类,都有自己的优化难题。这就回到最优化的问题里面去了,并不是NAS自己特定的问题,但是无论怎样,我觉得这块可以做,但是影响力不是很大。王云鹤:好的,谢谢纪老师。严老师我知道您在组合优化的领域内也做过很多比较深入的研究,您对这个问题怎么看?举个限定的例子,比如说DARTS里面同时有优化权重和架构的参数,您对这个问题有什么好的建议?严骏驰:如果从数学的角度上来看,主要是两方面,一方面是多目标优化,因为你可能又要模型的容量、performance、泛化性能、稳定性等等,这些抽象出来看都是一些优化目标。另外一方面是权重(DARTS中的结构参数),权重是个连续的值,结构往往是一个离散的值,这个是类似整数规划,我们叫混合整数,里面又有离散又有连续值。笼统地来说是这两个观点去看这个优化的问题。神经网络的独特的挑战就是它的权重、参数量规模非常大,传统的数学的做法,观点和理论用不上去。所以主要是那两种,一种是基于图微分、基于梯度的方法;一种是偏强化学习等更灵活的方法。我觉得梯度方法求解的更快一点,在短期内有一个比较好的解,再可以用这种更灵活的、更复杂的、更细粒度的方法在局部的空间里面做探索,这是一种思路。像数学里面做优化一样,先把它松弛到一个凸优化的问题,再慢慢地类似于一种continuation method(连续法)或者模拟退火一样,就可以把那个问题做的越来越细,它的解会越来越好,但是一开始的时候可能是一个比较快速的方案。王云鹤:好的,谢谢严老师。下一个小问题想请问欧阳老师,您刚才讲了一些算法理论,其实是把NAS的搜索速度提升的很明显。在NAS这个系统里面,同时加速了搜索想提升它的精度,这个问题怎么能保证?你搜索的速度很快,但是同时怎么能保持搜索算法的精度?欧阳万里:我们的方法搜索速度比较快而精度也好的的原因是有一个更加快速可靠的代理任务。当然通常的情况下,要设计一个算法,想要精度和速度都要变好其实是非常难的。我身边有人认为,对于基于differentiable(可微分)或者one-shot的NAS方法,是为了去达到像强化学习或进化算法那样的(性能)上限,当然强化学习或进化算法其实也并没有把整个的搜索空间的所有模型结构搜索到。目前NAS的大量算法本质上就是一个trade-off,基于one-shot或者基于可微分方法的NAS,其速度确实是会快得多的,但是其能达到的性能上限可能不见得会比强化学习要好。像这样的一个情况下,怎么去做好(精度和速度之间的)trade-off应该是要考虑的事情。要做好这个trade-off,我们认为存在一些更快速有效的,达到可靠性的一个东西。当然达到可靠性并不只是这样一条路要走,就算是在DARTS这种可微分方式,或者是像one-shot这样的一些方法,怎样去提高它的可靠性,这也是没有完全解决的问题,但是它的可靠性是不一样的,这些都是要去考虑的。

 

 

认知智能未来机器人接口API简介介绍

认知智能是计算机科学的一个分支科学,是智能科学发展的高级阶段,它以人类认知体系为基础,以模仿人类核心能力为目标,以信息的理解、存储、应用为研究方向,以感知信息的深度理解和自然语言信息的深度理解为突破口,以跨学科理论体系为指导,从而形成的新一代理论、技术及应用系统的技术科学。 认知智能的核心研究范畴包括:1.宇宙、信息、大脑三者关系;2.人类大脑结构、功能、机制;3.哲学体系、文科体系、理科体系;4.认知融通、智慧融通、双脑(人脑和电脑)融通等核心体系。 认知智能四步走:1.认知宇宙世界。支撑理论体系有三体(宇宙、信息、大脑)论、易道论、存在论、本体论、认知论、融智学、HNC 等理论体系;2.清楚人脑结构、功能、机制。支撑学科有脑科学、心理学、逻辑学、情感学、生物学、化学等学科。3.清楚信息内涵规律规则。支撑学科有符号学、语言学、认知语言学、形式语言学等学科。4.系统落地能力。支撑学科有计算机科学、数学等学科。

接口申请官网地址:www.citec.top 

  •  

接口地址(例子): 

  •  

http://a239p06512.zicp.vip/Web/BuAppJava.bujqrex?apikey="+apikey+"&msg="+msg+"&ip="+ip 

  •  

用户端消息内容。 

  •  

String msg ="你在干嘛呀?";  

  •  

apikey参数。这个apikey就是网站上申请的APIKEY 

  •  

apikey ="";  

  •  

//客户端ip,最终用户端的唯一标识(可以是用户端的IP,或者手机设备号,或者微信号或者,qq号码等能证明身份的唯一标识就可以)  

  •  

String ip ="";  

  •  

//这里一定要encode转换编码。转成GBK。 

  •  

msg = URLEncoder.encode(msg, "GBK"); 

  •  

三个参数全部小写 

  •  

msg参数就是传输过去的对话内容。 

  •  

msg参数要编码成gbk,不然会乱码。 

  •  

接口具体代码: 

  •  

package ai.nlp.jiekou.test;

  •  

import java.io.ByteArrayOutputStream;

  •  

import java.io.IOException;

  •  

import java.io.InputStream;

  •  

import java.io.UnsupportedEncodingException;

  •  

import java.net.HttpURLConnection;

  •  

import java.net.URL;

  •  

import java.net.URLEncoder;

  •  

import ai.nlp.util.changliang.ChangLiangZi;

  •  

public class ApiTest {

  •  

/**

  •  

* Get请求,获得返回数据

  •  

* @param urlStr

  •  

* @return

  •  

*/

  •  

private static String opUrl(String urlStr)

  •  

{

  •  

URL url = null;

  •  

HttpURLConnection conn = null;

  •  

InputStream is = null;

  •  

ByteArrayOutputStream baos = null;

  •  

try

  •  

{

  •  

url = new URL(urlStr);

  •  

conn = (HttpURLConnection) url.openConnection();

  •  

conn.setReadTimeout(5 * 10000);

  •  

conn.setConnectTimeout(5 * 10000);

  •  

conn.setRequestMethod("POST");

  •  

if (conn.getResponseCode() == 200)

  •  

{

  •  

is = conn.getInputStream();

  •  

baos = new ByteArrayOutputStream();

  •  

int len = -1;

  •  

byte[] buf = new byte[128];

  •  

while ((len = is.read(buf)) != -1)

  •  

{

  •  

baos.write(buf, 0, len);

  •  

}

  •  

baos.flush();

  •  

String result = baos.toString();

  •  

return result;

  •  

} else

  •  

{

  •  

throw new Exception("服务器连接错误!");

  •  

}

  •  

} catch (Exception e)

  •  

{

  •  

e.printStackTrace();

  •  

} finally

  •  

{

  •  

try

  •  

{

  •  

if (is != null)

  •  

is.close();

  •  

} catch (IOException e)

  •  

{

  •  

e.printStackTrace();

  •  

}

  •  

try

  •  

{

  •  

if (baos != null)

  •  

baos.close();

  •  

} catch (IOException e)

  •  

{

  •  

e.printStackTrace();

  •  

}

  •  

conn.disconnect();

  •  

}

  •  

return ChangLiangZi.WU;

  •  

}

  •  

public static void main(String args []){

  •  

//三个参数全部小写

  •  

//msg参数就是传输过去的对话内容。

  •  

//msg参数要编码成gbk,不然会乱码。

  •  

String msg ="你在干嘛呀?";

  •  

//apikey参数。

  •  

String apikey ="UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV";

  •  

//客户端ip,最终用户端的唯一标识(可以是用户端的IP,或者手机设备号,或者微信号或者,qq号码等能证明身份的唯一标识就可以)

  •  

String ip ="127.0.0.1";

  •  

//这里一定要encode转换编码。转成GBK。

  •  

try

  •  

{

  •  

msg = URLEncoder.encode(msg, "GBK");

  •  

} catch (UnsupportedEncodingException e)

  •  

{

  •  

e.printStackTrace();

  •  

}

  •  

System.out.println(opUrl("http://a239p06512.zicp.vip/Web/BuAppJava.bujqrex?apikey="+apikey+"&msg="+msg+"&ip="+ip));

  •  

}

  •  

}

  •  

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值