2.5=1.15^T+(1-0.73^T),求T

这是用户提出的一个数学问题,具體问题为:用MATLAB计算—最小二乘法及均方误差

这两个题用MATLAB怎么做,并作图?

}

编者按:近年来神经网络借鉴叻生物学策略的相关理论知识,实现了大飞跃完成了之前无法完成的任务。神经进化作为人工智能的一个研究领域试图通过进化算法洏非随机梯度下降来设计和构建神经网络。本文作者Paul Pauls作为机器学习GDE和开源爱好者,他在Medium上写了一篇关于神经进化算法的文章详细介绍叻神经进化算法的基本概念,以及这几年重要的研究成果AI科技评论作了有删改的编译,请欣赏~

神经进化是人工智能和机器学习领域的一個分支它能够改进了人工神经网络,并且试图通过进化算法去寻找最优神经网络具体而言,就像大自然通过突变、交叉或移除一些潜茬的遗传密码来提高大脑的功能一样人工神经网络通过进化算法能够产生越来越好的拓扑、权重和超参数。

简单的说就是将进化的思想使用到神经网络参数优化的更迭中

神经进化是一种机器学习技术,它使用基于群体的优化方法能够不断提高群体中每个神经网络的质量从而根据其要解决的问题生成越来越好的神经网络。该种群中的每个个体的存储方式并不是复杂的神经网络而是存储为基因组。基因組是一种简化的遗传表示可以映射到神经网络。

神经进化首先需要初始化一组上述基因组然后将它们应用于具体的问题环境中,然后根据神经网络解决应用问题的能力为每个基因组分配一个适应度分数例如,该适应度分数可以是图像识别任务中实现的准确度以及机械臂移动实际轨迹和预期轨迹的差别等等

一旦初始种群被创建,优化循环开始种群不断地变异、重组、评估和经历自然选择。

如果这些步骤是迭代进行的而整个种群一次只进行一个步骤,那么所进行的就是代际神经进化(generational neuroevolution)

竞争性共同进化(competitive coevolution)则意味着神经进化算法嘚设计允许异步性,并且优化循环在每个基因组的基础上执行

在代际神经进化和竞争性共同进化两种情况下,其优化过程都是不间断的進行引入创新、评估创新、然后对创新进行分类直到产生一个最佳实用性神经网络。

图1:典型的代际神经进化过程图解

神经进化过程也昰一个“黑盒”虽然它自己的进化过程需要参数,但却不为生成的神经网络规定任何特定超参数而是根据实际问题的解决设计神经网絡。这便为神经网络的权重、超参数等的选择提供了范围此范围也称为搜索空间。

虽然“黑盒”性提供了非常广泛的搜索空间但是为叻提高遍历搜索空间的速度,明智的做法是限制搜索空间的粒度通过限制基因组编码的复杂性,将基因组映射到搜索空间的粒度的能力吔被称为遗传编码

综上所述,为了使搜索空间具有适当的粒度根据实际问题的要求,设计遗传编码和相应的神经进化算法非常重要洇此,我们我们先来回顾一下遗传编码的概念

有效的神经网络是能够进行有效的变异和重组人工神经网络的前提。拥有强大表示能力的鉮经网络不用分析高度复杂的数据结构就能够快速的处理紧凑的遗传密码(compact genetic codes)换句话说,神经进化算法只在遗传编码上操作而不是在機器学习框架中复杂的数据结构上操作。当然基因编码允许这两种表示之间存在映射关系。

基因组的这些有效的遗传表示被称为基因型(genotypes)而相应映射的神经网络被称为显型(phenotypes)。这两个术语是从遗传进化学科中化用的毕竟神经进化也称的上是遗传进化。另外注意這里将所有显型都限制为神经网络。

基因编码一般可分为两个子类:直接编码和间接编码虽然还有第三类发展性编码,但这种编码我们先忽略不计毕竟这两年也没啥进展。直接编码表示神经网络的各个方面它们在遗传表示中显式编码(如上图2所示)。直接编码直接在基因型中编码每个连接及其相应的权重但通过排除神经网络中的偏差和激活函数的可能性来限制搜索空间。

这种直接编码可以表示任意嘚前馈和递归拓扑也能够产生最优的拓扑。但“拓扑”太灵活的话粒度的搜索空间就会变得非常庞大。因此需要设计良好的神经进化算法才能快速遍历该搜索空间

间接编码的功能是规定那些无法直接“翻译”成人工神经网络的自定义编码。也就是说为了将基因型映射箌神经网络需要一个由间接编码规定单独的“翻译”能力。如果间接编码设计得当那么即使神经网络非常复杂,也可以通过搜索空间實现有意义且快速的遍历

虽然可以从直接编码快速创建人工神经网络,但是缺少间接编码的翻译能力却会减慢处理速度并且可能导致“粗粒度”。所以在决定使用哪种编码之前必须考虑两种编码的优缺点。

但是两种遗传编码都证明了遗传编码如何确定搜索空间的大小例如。例如通过控制激活函数或某些层类型确定搜索空间

繁殖方法与解决方式探索

有种遍历搜索空间的方法被称为繁殖的过程(the process of reproduction),這种方法与神经进化所使用的遗传编码密切相关通常通过突变或重组基因组来创造新的基因组,新的基因组也继承了旧的基因组突变讓后代基因组探索人工神经网络新的结构、权重和超参数。重组基因组本质上是将两个基因组及其独特的特征合并

突变与遗传编码紧密楿关,因为神经网络的参数只能突变到以遗传编码表示的程度因此,为神经进化算法定义突变有以下三种情况1、遗传编码的哪一部分會发生突变?是拓扑、权重、还是超参数2、基因组中选定的部分会发生多大程度的突变?例如神经进化算法可以对低适应度基因组使鼡较大的突变,对高性能基因组使用微小的突变3、突变采用何种方式。是定向还是随机?

图4:竞合公约问题图解

重组并不会突变基因組拥有创新可以通过将两个亲本基因组( parent-genomes)及其独特特征结合,并产生“新颖”的后代基因组如果重组方法设计得当,并且可以无损哋融合两个亲本基因组的有益特征将其在整个群体中传播,提高所有现有基因组的适用性

设计重组方法的核心在于“无损融合”,即鈈丢失任何基因特性的情况下融合例如在神经进化算法之前,NEAT算法(通过增强拓扑的进化神经网络(Evolving Neural Networks through Augmenting Topologies))利用直接编码在进行修改网络嘚拓扑结构包括新增节点和删除节点等操作时会产生交叉损失。如上图竞合公约问题( competing-conventions problem)所示随后,NEAT算法提出了一种“历史标记”的方法该方法为每个突变提供了唯一的标识符,从而最终实现了基因组的无损重组使其为神经进化算法提供了基准。

在总体优化循环中基于问题评估基因组似乎是最简单的。但这一步骤确是非常重要不仅是能够指出潜在的改进和进步。评估方法从根本上说是一个过程即将基因组映射到由其遗传编码规定的神经网络,并将其应用于问题环境然后根据神经网络的表现计算适应值。

一些神经进化算法的評估过程还包括将神经网络加权训练的附加步骤虽然这种方法非常明智,但只有当实际环境能够清晰反映基本信息才有用

在整个评估過程中,尽管确定适应度的方式完全取决于实际问题的具体情况但可以进行合理的修改。例如在图像识别中可以设置为准确度游戏中鈳以设置为点数。

在确定适应度计算时新颖性搜索也是一个需要考虑的重要概念。因为这个概念涉及用新的方法奖励基因组能够使其具有更高的适应值。例如在实际的电子游戏环境中的智能体如果进入一个未知的区域会获得体能提升,尽管总体上获得的分数较少但吔能促进了基因库的创新,从而促进更有希望的进化

虽然繁殖方法定义了探索搜索空间的方式。但选择哪些基因组将作为后代的“父母”哪些基因组将从基因库中移除?也是神经进化计划的另一个非常重要的方面

神经进化算法的种类决定了哪种基因能够作为父母基因。在一代人的神经进化中选择适合下一代的基因组通常归结为选择当前表现最好的基因组。选择作为父母的基因组不一定与移除的基因組互补基因组的选择要足够有希望保证创新突变的潜力,尽管在下一代可能会被移除

神经进化算法的一个标准配置是选择利用前20%的基洇组作为父母,另外在下一次迭代中会去除90%表现最差的基因组另外根据代际神经进化算法是否采用物种形成,亲本选择或基因组移除选擇也会发生了显著变化

物种形成是一种代际神经进化的工具,它根据显型中的拓扑相似性等明显特征将群体中的个体聚集在一起;或根據或在实际环境中达到的特定状态等隐藏特征聚集聚集后产生的集群被认为是物种,物种的产生取决于物种的选择方法具体来说得繁殖过程可以通过将更多的后代分配给平均适应度更高的物种来控制进化,从而产生“优秀”的后代

然而,设计得当的物种形成也保护了基因库中的创新因为这些物种会将一些后代基因分配下去。因此设计一种适当的、基因问题解决的物种形成方法将种群中的个体分离箌不同的物种中,可以成为神经进化方法中非常强大的工具这种方法既可以引导进化进入有益的方向,也可以保护创新的新路径

另一方面,在竞争的共同进化方案(competitive coevolution scheme)中基因组通常是随机配对,其中更合适或更有创新的一个被选为“父母”另一个从基因库中移除。甴于竞争共同进化的异步性不可能同时对种群中的所有基因组进行分类和分类,从而极大地限制了用物种形成等方法指导进化的可能性

神经进化是优化人工神经网络的一种方法,是一个多功能的工具不仅限于机器学习方面,还可以应用于改进计算机视觉、自然语言处悝创建神经进化算法时需要考虑很多东西,但最重要的是最有效地利用实际问题环境

神经进化中具有里程碑意义的研究

该算法不同于峩们之前讨论的传统神经网络,它不仅会训练和修改网络的权值同时会修改网络的拓扑结构,包括新增节点和删除节点等操作NEAT通过突變和无损重组直接编码,同时通过物种形成保护创新由于其简单性和同步能力,NEAT可以被认为是典型的神经进化算法

HyperNEAT是NEAT的变体,和NEAT具有楿同的原理但其所使用的是间接编码,称为组合模式产生网络(CPPNs)CPPNs允许神经网络对称和重复,这不仅更准确地反映了人类大脑的组成而且还通过将其映射到网络拓扑,从而利用应用问题中固有的几何和结构

ES-HyperNEAT进一步扩展了HyperNEAT,在信息量较高的区域允许在CPPN编码模式中使用哽密集的基底(denser substrate)虽然HyperNEAT将隐藏神经元放置在何处的决定权留给了用户(user),但ES-HyperNEAT采用四叉树状结构来确定那些隐藏节点的密度和位置ES-HyperNEAT在主要基准测试中能够胜过传统的HyperNEAT。

通过使用CNE、CMA-ES、NEAT和HyperNEAT算法来解决61个Atari2600视频游戏展示了神经进化在通用视频游戏(GVGP)中的潜力。虽然神经进化在这項研究之前已经在GVGPI中进行了部署结果与预期不谋而合,因为它们表明直接编码方法在紧凑的状态表示效果最好间接编码允许缩放到更高维的表示。

通过将神经进化与CNN的图像识别相结合介绍了神经进化最有趣的用途之一。通过CNN进行图像识别将识别出的图像转换为特征表示,然后将识别出的图像送入神经进化优化的神经网络虽然这种方法的有效性在很大程度上取决于特征表示的质量,但即使采用简单嘚方法也能有一个很有前途的研究方向

这篇论文对进化算法进行了改动,使其可以用于NAS(神经网络架构搜索)算法对于计算资源要求较高。算法一开始从没有任何卷积的最简单的模型开始进化与之前看过的论文不同的是,神经网络架构没有固定的网络深度(意味着搜索空間进一步扩大算法运行时间长)。

利用这篇的自动化方法得出的深度网络结构已经能在CIFAR-10上取得可以跟人工设计的网络相媲美的结果。

CoDeepNEAT算法是近年来兴起NEAT算法的扩展这篇论文首先定义了DeepNEAT,即以紧凑形式表示整个深层神经网络的层间接编码(包括超参数等)然后,这些DeepNEAT基因組被看做模块并与由多个重复模块组成的蓝图共同进化,这些蓝图是由数个节点组成的节点指向表征了神经网络的特定模块。另外该網络在CIFAR-10数据集上进行了基准测试产生了比较好的结果。

这篇论文中所用进化算法的一大重要特征是采用了一种正则化形式:相比于移除朂差的神经网络他们移除了最老的神经网络(无论它有多好)。这提升了对任务优化时所发生变化的稳健性并最终更可能得到更加准確的网络。其中一个原因可能是由于不允许权重继承所有的网络必须都从头开始训练。因此这种形式的正则化选择重新训练后依旧较恏的网络。也就是说得到更加准确的模型只是偶然的,训练过程中存在的噪声意味着即使完全相同的架构准确率也可能不同

这篇文章昰对现代神经进化的一个极好的回顾,由该领域四位最著名的研究人员合作成文它即使它没有引入新的概念,但总结和说明了神经进化嘚每一个重要方面

该论文介绍了功能强大的进化AutoML框架LEAF,该框架利用了进化算法CoDeepNEAT虽然在论文中作者没有透露他们的源代码,但他们对其設计进行了广泛的讨论并提供了有价值的意见。

另外在医学图像分类和自然语言分析任务中对进化AutoML框架的性能进行了评估,其结果超過了现有的最先进的AutoML系统和手工神经网络解决方案

}

我要回帖

更多关于 LM340T15 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信