① 想成为网络工程师需要学习哪些知识
参考软考需要学习知识,展开学习。
② 网络工程专业怎么样
我是学习计算机专业的,其中我们的专业里就有网络工程专业的方向 网络工程专业主要是培养今后从事网络运营维护管理以及网络开发设计应用等相关领域的高级专门人才。
毕竟收入高就意味着今后的发展前途会更好,所以这也是为什么网络工程专业这几年高考的录取分数线这么高。
就是因为大家都看到了这个专业的学生收入水平高,所以才这么多人去报考。
③ 学习物联网架构,给我们带来了什么!
物联网的系统架构划分为三个层次。
1:是感知层,即利用 RFID、传感器、二维码等随时随地获取拆旅厅物体的信息;
2:网络层,通过各种电信网络与互联网的融合,将物体的信息实时准确地传递出去;
3:应用层,把感知层的得到镇粗的信息进行处理,实现智能化识别、定位、跟踪、监控和管理等实际应用。
物联网三大关键技术
1、传感器技术:这也是计算机应用中的关键技术。自从有计算机以来就需要传感器把模拟信号转换成数字信号计算机才能处理。
2、无线组网技术:像RFID技术,低功耗BLE,ZigBee,NB-IOT等局域网和广域网的技术得到发展和应用。
3、嵌入式系统技术:是综合了计算机软硬件、传感器技术、集成电路技术、电子应用技术为一体的复杂技术。
如果把物联网用人体做一个简单比喻,传感器相当于人的眼睛、鼻子、皮肤等感官,网络就是神经系旅隐统用来传递信息,嵌入式系统则是人的大脑,在接收到信息后要进行分类处理。这个例子很形象的描述了传感器、嵌入式系统在物联网中的位置与作用。
希望上述回答对您有所帮助,谢谢!
④ 一文看懂四种基本的神经网络架构
原文链接:
http://blackblog.tech/2018/02/23/Eight-Neural-Network/
更多干货就在我的个人博客 http://blackblog.tech 欢迎关注
刚刚入门神经网络,往往会对众多的神经网络架构感到困惑,神经网络看起来复杂多样,但是这么多架构无非也就是三类,前馈神经网络,循环网络,对称连接网络,本文将介绍四种常见的神经网络,分别是CNN,RNN,DBN,GAN。通过这四种基本的神经网络架构,我们来对神经网络进行一定的了解。
神经网络是机器学习中的一种模型,是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
一般来说,神经网络的架构可以分为三类:
前馈神经网络:
这是实际应用中最常见的神经网络类型。第一层是输入,最后一层是输出。如果有多个隐藏层,我们称之为“深度”神经网络。他们计算出一系列改变样本相似性的变换。各层神经元的活动是前一层活动的非线性函数。
循环网络:
循环网络在他们的连接图中定向了循环,这意味着你可以按照箭头回到你开始的地方。他们可以有复杂的动态,使其很难训练。他们更具有生物真实性。
循环网络的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。
循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。
对称连接网络:
对称连接网络有点像循环网络,但是单元之间的连接是对称的(它们在两个方向上权重相同)。比起循环网络,对称连接网络更容易分析。这个网络中有更多的限制,因为它们遵守能量函数定律。没有隐藏单元的对称连接网络被称为“Hopfield 网络”。有隐藏单元的对称连接的网络被称为玻尔兹曼机。
其实之前的帖子讲过一些关于感知机的内容,这里再复述一下。
首先还是这张图
这是一个M-P神经元
一个神经元有n个输入,每一个输入对应一个权值w,神经元内会对输入与权重做乘法后求和,求和的结果与偏置做差,最终将结果放入激活函数中,由激活函数给出最后的输出,输出往往是二进制的,0 状态代表抑制,1 状态代表激活。
可以把感知机看作是 n 维实例空间中的超平面决策面,对于超平面一侧的样本,感知器输出 1,对于另一侧的实例输出 0,这个决策超平面方程是 w⋅x=0。 那些可以被某一个超平面分割的正反样例集合称为线性可分(linearly separable)样例集合,它们就可以使用图中的感知机表示。
与、或、非问题都是线性可分的问题,使用一个有两输入的感知机能容易地表示,而异或并不是一个线性可分的问题,所以使用单层感知机是不行的,这时候就要使用多层感知机来解决疑惑问题了。
如果我们要训练一个感知机,应该怎么办呢?
我们会从随机的权值开始,反复地应用这个感知机到每个训练样例,只要它误分类样例就修改感知机的权值。重复这个过程,直到感知机正确分类所有的样例。每一步根据感知机训练法则来修改权值,也就是修改与输入 xi 对应的权 wi,法则如下:
这里 t 是当前训练样例的目标输出,o 是感知机的输出,η 是一个正的常数称为学习速率。学习速率的作用是缓和每一步调整权的程度,它通常被设为一个小的数值(例如 0.1),而且有时会使其随着权调整次数的增加而衰减。
多层感知机,或者说是多层神经网络无非就是在输入层与输出层之间加了多个隐藏层而已,后续的CNN,DBN等神经网络只不过是将重新设计了每一层的类型。感知机可以说是神经网络的基础,后续更为复杂的神经网络都离不开最简单的感知机的模型,
谈到机器学习,我们往往还会跟上一个词语,叫做模式识别,但是真实环境中的模式识别往往会出现各种问题。比如:
图像分割:真实场景中总是掺杂着其它物体。很难判断哪些部分属于同一个对象。对象的某些部分可以隐藏在其他对象的后面。
物体光照:像素的强度被光照强烈影响。
图像变形:物体可以以各种非仿射方式变形。例如,手写也可以有一个大的圆圈或只是一个尖头。
情景支持:物体所属类别通常由它们的使用方式来定义。例如,椅子是为了让人们坐在上面而设计的,因此它们具有各种各样的物理形状。
卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。在CNN的一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。
卷积神经网络由三部分构成。第一部分是输入层。第二部分由n个卷积层和池化层的组合组成。第三部分由一个全连结的多层感知机分类器构成。
这里举AlexNet为例:
·输入:224×224大小的图片,3通道
·第一层卷积:11×11大小的卷积核96个,每个GPU上48个。
·第一层max-pooling:2×2的核。
·第二层卷积:5×5卷积核256个,每个GPU上128个。
·第二层max-pooling:2×2的核。
·第三层卷积:与上一层是全连接,3*3的卷积核384个。分到两个GPU上个192个。
·第四层卷积:3×3的卷积核384个,两个GPU各192个。该层与上一层连接没有经过pooling层。
·第五层卷积:3×3的卷积核256个,两个GPU上个128个。
·第五层max-pooling:2×2的核。
·第一层全连接:4096维,将第五层max-pooling的输出连接成为一个一维向量,作为该层的输入。
·第二层全连接:4096维
·Softmax层:输出为1000,输出的每一维都是图片属于该类别的概率。
卷积神经网络在模式识别领域有着重要应用,当然这里只是对卷积神经网络做了最简单的讲解,卷积神经网络中仍然有很多知识,比如局部感受野,权值共享,多卷积核等内容,后续有机会再进行讲解。
传统的神经网络对于很多问题难以处理,比如你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNN能够对任何长度的序列数据进行处理。
这是一个简单的RNN的结构,可以看到隐藏层自己是可以跟自己进行连接的。
那么RNN为什么隐藏层能够看到上一刻的隐藏层的输出呢,其实我们把这个网络展开来开就很清晰了。
从上面的公式我们可以看出,循环层和全连接层的区别就是循环层多了一个权重矩阵 W。
如果反复把式2带入到式1,我们将得到:
在讲DBN之前,我们需要对DBN的基本组成单位有一定的了解,那就是RBM,受限玻尔兹曼机。
首先什么是玻尔兹曼机?
[图片上传失败...(image-d36b31-1519636788074)]
如图所示为一个玻尔兹曼机,其蓝色节点为隐层,白色节点为输入层。
玻尔兹曼机和递归神经网络相比,区别体现在以下几点:
1、递归神经网络本质是学习一个函数,因此有输入和输出层的概念,而玻尔兹曼机的用处在于学习一组数据的“内在表示”,因此其没有输出层的概念。
2、递归神经网络各节点链接为有向环,而玻尔兹曼机各节点连接成无向完全图。
而受限玻尔兹曼机是什么呢?
最简单的来说就是加入了限制,这个限制就是将完全图变成了二分图。即由一个显层和一个隐层构成,显层与隐层的神经元之间为双向全连接。
h表示隐藏层,v表示显层
在RBM中,任意两个相连的神经元之间有一个权值w表示其连接强度,每个神经元自身有一个偏置系数b(对显层神经元)和c(对隐层神经元)来表示其自身权重。
具体的公式推导在这里就不展示了
DBN是一个概率生成模型,与传统的判别模型的神经网络相对,生成模型是建立一个观察数据和标签之间的联合分布,对P(Observation|Label)和 P(Label|Observation)都做了评估,而判别模型仅仅而已评估了后者,也就是P(Label|Observation)。
DBN由多个限制玻尔兹曼机(Restricted Boltzmann Machines)层组成,一个典型的神经网络类型如图所示。这些网络被“限制”为一个可视层和一个隐层,层间存在连接,但层内的单元间不存在连接。隐层单元被训练去捕捉在可视层表现出来的高阶数据的相关性。
生成对抗网络其实在之前的帖子中做过讲解,这里在说明一下。
生成对抗网络的目标在于生成,我们传统的网络结构往往都是判别模型,即判断一个样本的真实性。而生成模型能够根据所提供的样本生成类似的新样本,注意这些样本是由计算机学习而来的。
GAN一般由两个网络组成,生成模型网络,判别模型网络。
生成模型 G 捕捉样本数据的分布,用服从某一分布(均匀分布,高斯分布等)的噪声 z 生成一个类似真实训练数据的样本,追求效果是越像真实样本越好;判别模型 D 是一个二分类器,估计一个样本来自于训练数据(而非生成数据)的概率,如果样本来自于真实的训练数据,D 输出大概率,否则,D 输出小概率。
举个例子:生成网络 G 好比假币制造团伙,专门制造假币,判别网络 D 好比警察,专门检测使用的货币是真币还是假币,G 的目标是想方设法生成和真币一样的货币,使得 D 判别不出来,D 的目标是想方设法检测出来 G 生成的假币。
传统的判别网络:
生成对抗网络:
下面展示一个cDCGAN的例子(前面帖子中写过的)
生成网络
判别网络
最终结果,使用MNIST作为初始样本,通过学习后生成的数字,可以看到学习的效果还是不错的。
本文非常简单的介绍了四种神经网络的架构,CNN,RNN,DBN,GAN。当然也仅仅是简单的介绍,并没有深层次讲解其内涵。这四种神经网络的架构十分常见,应用也十分广泛。当然关于神经网络的知识,不可能几篇帖子就讲解完,这里知识讲解一些基础知识,帮助大家快速入(zhuang)门(bi)。后面的帖子将对深度自动编码器,Hopfield 网络长短期记忆网络(LSTM)进行讲解。
⑤ 什么是网络架构师 待遇怎样
互联网架构师是在Java全栈的基础上,重点学习分布式、微服务等当前行业内前沿且紧缺的架构技术,就业岗位是系统架构师。
架构师主要是组织各个模块关系,满足客户需求等,这是一个对能力要求很高的职位,福利待遇还是很好,基本薪资在10K以上,如果要掌握还是建议多学习,比如南京课工场就有相关课程。
架构师的三个层次
一级:详细设计,基于开发架构视角
一般是基于现有系统或者框架,做升级改造,满足客户需求;初级架构和高级开发人员。
二级:概要设计,基于系统架构视角
一般是从头开始设计单一复杂的大型系统,需要考虑系统的方方面面;有经验的架构师。
三级:顶层设计,基于企业架构视角
一般是从企业角度,整体考虑整体的解决方案与各个业务系统的拆分。如城市规划,偏甲方,大型系统架构师。
⑥ 网站的基本架构是什么
网站架构按照制作步骤分为硬架构和软架构。
一、硬架构
1、机房:在选择机房的时候,根据网站用户的地域分布,可以选择网通、电信等单机房或双机房。
2、带宽:预估网站每天的访问量,根据访问量选择合适的带宽,计算带宽大小主要涉及峰值流量和页面大小两个指标。
3、服务器:选择需要的服务器,如图片服务器,页面服务器,数据库服务器,应用服务器,日志服务器,对于访问量大点的网站而言,分离单独的图片服务器和页面服务器相当必要。
二、软架构
1、网站的框架:现在的PHP框架有很多选择,比如:CakePHP,Symfony,Zend Framework,根据创作团队对各个框架熟悉程度选择。
2、逻辑的分层
1)表现层:所有和表现相关的逻辑都应该被纳入表现层的范畴。
2)应用层:主要作用是定义用户可以做什么,并把操作结果反馈给表现层。
3)领域层:包含领域逻辑的层,就是告诉用户具体的操作流程的。
4)持久层:即数据库,保存领域模型保存到数据库,包含网站的架构和逻辑关系等。
(6)为什么要学习网络架构扩展阅读
网站的分类
1、根据网站所用编程语言分类:例如asp网站、php网站、jsp网站、Asp. net网站等;
2、根据网站的用途分类:例如门户网站(综合网站)、行业网站、娱乐网站等;
3、根据网站的功能分类:例如单一网站(企业网站)、多功能网站(网络商城)等等。
4、根据网站的持有者分类:例如个人网站、商业网站、政府网站、教育网站等。
5、根据网站的商业目的分类:营利型网站(行业网站、论坛)、非营利性型网站(企业网站、政府网站、教育网站)。
⑦ 网络架构搜索
作为计算智能方法的代表,起源于上个世纪四十年代的人工神经网络经历了五六十年代的繁荣,七十年代的低潮,八十年代的再次复苏,到近十年的广泛关注,如今已经成为理论日趋完善,应用逐步发展的前沿方向。Hinton 等人2006 年在《Science》上发表的文章引发了深度神经网络研究的热潮。面对大数据的诸多挑战,以深度信念网络、卷积神经网络和递归神经网络为代表的深度神经网络模型在很多应用领域展示出明显的优势和潜力,特别是随着数据量和数据维数的增加,深度学习的优势愈加突出。例如,Google 借助深度学习开发的AlphaGo 能从海量的对弈中学习正确的决策,微软语音识别采用深度学习使识别错误率显着降低,网络基于深度学习开发的机器人“小度”在跨年龄人脸识别上超越了人类。
经过多年的研究和发展,基于人工神经网络的识别方法也逐渐取代传统的模式识别方法。神经网络已成为当前比较先进的技术,用来解决许多具有挑战性的识别任务如文字识别、语音识别、指纹识别、遥感图像识别、人脸识别、手写体字符的识别等。其中主流的神经网络模型有卷积网络和递归神经网络,卷积神经网络由 Yann LeCun 在 1998 年提出,自从 AlexNe 在 2012 年的 ImageNet 比赛中使用了这一架构拔得头筹,卷积神经网络迅速流行起来并广泛应用到视觉任务。如今,最先进的卷积神经网络算法在进行图像识别时,甚至可以超过人类肉眼识别的准确率。递归神经网络网络提出于 1990 年,被视为循环神经网络的推广,递归神经网络可以引入门控机制以学习长距离依赖,适用于包含结构关系的机器学习任务,在序列识别方面有重要应用。
深度神经网络和深度学习算法因为在科研工作与工程任务中都取得了显着的效果从而大受欢迎。它取代了传统的手动提取特征方法,够端到端地自动提取和学习特征。而其中取得显着成功的深度神经网络通常是由于它们成功的架构设计,研究的工作重心从提取特征转移到了寻找最优架构上。通常来说,模型的容量越大网络的性能就越好,能够拟合任意函数。因此为了提升网络性能,网络结构被设计的越来越复杂。例如,VGG-16 约有1.4亿浮点数参数,整个网络占用超过500兆存储空间,需要153亿次浮点操作来处理一个$224\times224$大小的图像。虽然更深的网络层次和复杂的拓扑结构能够更有效地学习特征,但是网络规模的增大意味着人工设计网络时需要花费更多时间来反复试验,即使是专家也需要大量的资源和时间来创建性能良好的模型。
神经网络架构搜索(NAS)是一种自动化学习网络结构的新方法,用于减少繁重的网络设计成本。目前为止,NAS方法设计的网络在识别任务上的表现已经超过了人工设计的架构。NAS可以视作自动机器学习(AutoML)的子领域,与超参数优化和元学习有明显的重叠。不同的NAS方法的区别主要在于三个维度:搜索空间、搜索策略和性能评估,我们对此分别进行了调研。
搜索空间:搜索空间定义了网络的所有可选结构和操作,通常指数级大,甚至无界。在设计搜索空间时结合先验知识,即参考现有的针对当前任务的先进结构设计知识,能够有效减小搜索空间并简化搜索。但这也会引入偏好,从而限制网络学习到超越当前人类知识的结构。
搜索策略:定义搜索空间后,搜索策略引导寻找高性能的模型架构,其中的难点是保证探索和利用的平衡。一方面,希望快速找到性能良好的架构,另一方面,需要避免过早收敛到次优的架构。
性能评估:NSA的目的是找到一个在未知数据上具有良好泛化性能的架构,一旦模型生成,就需要对其性能进行评估。直观的方法是在训练集上训练收敛,并在验证集上得到其性能,但是这种方法会耗费巨大的算力,从而限制了可探索的网络结构。一些先进的方法关注于减小性能评估时的计算代价,但会引入误差。因此,平衡评价的效率和效果是一个需要研究的问题。
从计算的角度来看,神经网络代表了一个通过一系列操作将输入变量 x 转换为输出变量 y 的函数。基于计算图语言,神经网络可以表示为一个有向无环图(DAG),其中每个节点表示一个张量 z ,通过边连接其父节点 I(k),每条边表示从候选操作集O中选择的一个操作 o 。节点 k 的计算公式为:
其中候选操作集合$O$主要包括卷积、池化、激活函数、跳跃连接、拼接、加法等基本操作。此外,为了进一步提高模型的性能,一些先进的人工设计模块也可以作为候选操作,如深度可分离卷积、膨胀卷积、组卷积。基于操作的类型可以选择不同的超参数,例如输入节点选取、卷积核数量、尺寸、步长等。不同的搜索空间设计,选择和组合操作的方法也不同所以参数化的形式也不一样。一般来说,一个好的搜索空间应该能够排除人类的偏见,并且足够灵活,能够覆盖更广泛的模型架构。
全局搜索空间搜索一个完整的网络结构,具有很高的自由度。最简单的例子是链式搜索空间,见图1左。固定的数量的节点按顺序堆叠,只有前一个节点的输出提供给后一个节点作为输入,每个节点代表一个层,并具有指定的操作。右图引入更复杂的跳跃链接和多支路结构,此时当前节点可以结合前面所有节点的输出作为输入,使得搜索的自由度显着增大。许多网络都是多分支网络的特例,比如
1)链式网络: ;
2)残差网络: ;
3)DenseNets:
虽然整体结构搜索很容易实现,但它也有一些缺点。首先,搜索空间的大小与网络深度是指数级关系,寻找泛化性能好的深度网络计算成本高。此外,生成的架构缺乏可迁移性和灵活性,在小型数据集上生成的模型可能不适合较大的数据集。有研究提出,初始架构的选择在搜索全局结构时十分重要。在适当的初始条件下,可以获得与单元搜索空间性能相当的架构,但是初始架构选择的指导原则仍然不明确。
基于单元的搜索空间受启发于人工设计知识,许多有效的网络结构都会重复使用固定结构,例如在RNNs中重复LSTM块或堆叠残差模块。因此可以只搜索这样的重复单元(cells),整个神经结构的搜索问题被简化为在单元搜索空间中搜索最优的单元结构,从而极大的减小搜索空间。大多数研究对比了基于全局搜索空间和单元搜索空间的实验结果,证明在基于单元的搜索空间中可以获得良好的性能。单元搜索空间的另一个优势是能方便地在数据集和任务之间进行泛化,因为通过增减卷积核和单元的数量,架构的复杂性几乎可以任意改变。
NASNet是最早提出的单元搜索空间之一,也是当前最热门的选择,之后的大部分改进只是在此基础上对操作选择和单元组合策略进行了少量修改。如图2所示,它由两种单元组成,分别为保持输入特征维度的标准单元(normal cell),和减小空间维度的简化单元(rection cell)。每个单元由b个块组成,每个块由它的两个输入和相应的操作定义。可选的输入包括前两个单元的输出和单元中先前定义的块的输出,所以它支持跨单元的跳跃连接。未使用的块被连接起来并作为单元格的输出,最终通过预定义好的规则级联这些单元。
不同于上面将单元结构按照人工定义的宏结构进行连接,层次结构是将前一步骤生成的单元结构作为下一步单元结构的基本组成部件,通过迭代的思想得到最终的网络结构。Hier提出的层次搜索空间,通过合并低层单元生成高级单元实现单元级别和网络级别的同时优化。此方法具体分为3层。第一层包含一系列的基础操作;第二层通过有向无环图连接第一层的基础操作,构建不同的单元,图结构用邻接矩阵编码;第三层是网络级的编码,决定如何连接第二层的单元,组合成一个完整的网络。基于单元的搜索空间可以看作是这种层次搜索空间的一个特殊情况。
强化学习方法(RL)能够有效建模一个顺序决策的过程,其中代理与环境相互作用,代理学会改善其行为从而使目标回报最大化。(图3)给出了一个基于强化的NAS算法的概述。代理通常是一个递归神经网络(RNN),它在每一步t执行一个动作 来从搜索空间采样一个新的样本,同时接收状态 的观察值和环境中的奖励 ,以更新代理的采样策略。这种方法非常适合于神经结构搜索,代理的行为是生成神经结构,行为空间是搜索空间,环境是指对代理生成的网络进行训练和评估,奖励是训练后的网络结构对未知数据的预测性能,在最后一个行为之后获得。
4.2进化算法
进化算法(EA)是一种成熟的全局优化方法,具有较高的鲁棒性和广泛的适用性。许多研究使用进化算法来优化神经网络结构。进化算法演化了一组模型,即一组网络;在每个世代中,至少从这组模型中选择一个模型,作为亲本在突变后作为生成子代。在对子代进行训练之后,评估它们的适应度并将它们添加到种群中。
典型的进化算法包括选择、交叉、变异和更新等步骤。选择时一般使用联赛选择算法对父类进行采样,其中适应性最好的一个作为亲本。Lemonade对适应度使用核密度估计,使网络被选择的概率与密度成反比。交叉方式因编码方案的不同而不同。突变针对的是亲本的部分操作,例如添加或移除层,改变层的超参数,添加跳跃连接,以及改变训练超参数。对于产生的后代,大多数方法随机初始化子网络权重,而Lemonade把父网络学习到的权重通过使用网络态射传递给其子网络。Real等人让后代继承其父母的所有不受突变影响的参数,虽然这种继承不是严格意义上的功能保留,它可以加速学习。生成新的网络的同时需要从种群中移除一些个体。Real等人从群体中移除最差的个体,AmoebaNet移除最老的个体。也有一些方法定期丢弃所有个体,或者完全不移除个体。EENA通过一个变量调节最坏模型和最老模型的删除概率。
基于代理模型的优化方法(SMBO)用一个代理模型来近似目标函数。即不需要训练采样到的网络结构,只需要训练一个代理模型,使用代理模型预测网络的性能。通常在实践中只需要得到架构的性能排序,而不一定要计算出具体的损失值,因此代理模型只需要预测相对得分并选出有前途的候选架构。然后只对预测性能好的架构进行评估,用它们的验证精度更新代理模型,这样只需要完全训练少量候选架构,大大减少搜索时间。代理模型通常训练为最小化平方误差:
贝叶斯优化(BO)是用于超参数优化的最流行的方法之一。最经典的是基于高斯过程的BO,生成的神经结构的验证结果可以建模为高斯过程,然而,基于高斯的BO方法在观察次数上的推理时间尺度是立方的,并且不擅长处理变长神经网络。有些工作使用基于树或者随机森林的方法来在非常高维的空间中高效的搜索,并且在很多问题上取得了优异的效果。Negrinho利用其搜索空间的树形结构,并使用蒙特卡洛树搜索。虽然没有完整的比较,但初步的证据表明这些方法可以超越进化算法。
上面的搜索策略搜是从一个离散的搜索空间提取神经结构样本。DARTS提出搜索空间的连续松弛,在连续可微的搜索空间上搜索神经架构如图4所示,并使用如下softmax函数来松弛离散空间:
松弛后,架构搜索的任务转化为网络架构与神经权值的联合优化。这两类参数分别在训练集和验证集上交替优化,表示为一个双层优化问题。
为了对搜索过程进行引导,必须对产生的神经网络性能进行评估。一种直观的方法是训练网络至收敛,然后评估其性能。但是,这种方法需要大量的时间和计算资源。因此提出了几种加速模型评估的方法。
为了减少计算负担,可以用实际性能的低质近似来估测性能。实现方法包括: 缩短训练时间、选择数据集的子集、在低分辨率的图像上训练、每层使用更少的通道数、堆叠更少的单元结构。在低质条件下搜索到的最优网络或单元,构建出最终结构在数据集上重新训练,得到目标网络。虽然这些低精度的近似能够减少训练花费,但性能被低估的同时不可避免地引入了误差。最近的研究表明,当这种低质评价与完全评价之间的差异较大时,网络性能的相对排名可能变化很大,并强调这种误差会逐渐增加。
早停技术最初用于防止过拟合。一些研究通过在训练初期预测网络性能,在验证集上预计表现不佳的模型被强制停止训练,以此来加速模型评估。一种在早期估计网络性能的方法是学习曲线外推法。Domhan 等提出训练初期对学习曲线进行插值,并终止那些预测性能不好的网络结构的训练。Swersky等在评估学习曲线的好坏时,把网络架构的超参数作为参考因素。另一种方法根据梯度的局部统计信息实现早期停止,它不再依赖验证集,允许优化器充分利用所有的训练数据。
代理模型可以被训练用预测网络性能。PNAS提出训练一个代理网络(LSTM)来预测网络结构的性能,他不考虑学习曲线而是基于结构的特点来预测性能,并在训练时推断更大的网络结构。SemiNAS是一种半监督NAS方法,利用大量的未标记架构进一步提高搜索效率。不需要在对模型进行训练,只使用代理模型来预测模型精度。预测网络性能的主要难点是:为加快搜索过程,需要在对较大的搜索空间进行较少的评估的基础上进行良好的预测。当优化空间过大且难以量化,且对每个结构的评估成本极高时,基于代理的方法就不适用。
代理模型还可以用来预测网络权重。超网络(Hypernetworks)是一种神经网络,被训练来为各种架构生成网络权值。超网络在搜索过程中节省了候选体系结构的训练时间,因为它们的权值是通过超网络的预测得到的。Zhang等人提出了一种计算图表示,并使用图超网络(GHN)比常规超网络(SMASH)更快更准确地预测所有可能架构的权值。
权重继承是让新网络结构继承之前训练完成的其他网络结构的权值。其中一种方法是网络态射,一般的网络设计方法是首先设计出一个网络结构,然后训练它并在验证集上查看它的性能表现,如果表现较差,则重新设计一个网络。可以很明显地发现这种设计方法会做很多无用功,因此耗费大量时间。而基于网络态射结构方法能够在原有的网络结构基础上做修改,修改后的网络可以重用之前训练好的权重。其特殊的变换方式能够保证新的网络结构还原成原网络,因此子网络的表现至少不会差于原网络,并且能在较短的训练时间内继续成长为一个更健壮的网络。具体地,网络射态能够处理任意非线性激活函数,可以添加跳跃连接,并且支持添加层或通道得到更深或更宽的等效模型。经典的网络态射只能使网络变大,这可能导致网络过于复杂,之后提出的近似网络态射通过知识蒸馏允许网络结构减小。进化算法经常使用基于网络态射的变异,或者直接让孩子继承亲本的权重,再执行一般变异操作,这样产生的网络具有一个更好的初始值,而不用重头开始训练。