神经网络可以进化出其他神经网络吗?

人工智能 神经网络 进化算法 敏捷 神经进化
2021-10-27 08:50:06

神经网络可以改变或进化其他神经网络吗?此外,进化算法是否可以应用于进化神经网络?

例如,假设我们有神经网络 A 和 B。神经网络 B 改变了神经网络 A。如果 B“成功”改变它,NN A 将继续存在。

3个回答

是的,正如我们所说,这是一个活跃的研究领域。两者都使用经典算法(决策树、随机森林、贝叶斯集成)以及神经网络。这也可以通过进化算法来完成。在一些情况下,我个人将它们用于超参数调整,其中挤出几个额外的精度点是关键。

这实际上是 Google 正在使用他们的 AutoML 系统所做的事情。他们正在使用神经网络进行架构搜索。

这是一个 Github 存储库,其中包含一些关于您所描述主题的有趣论文和链接:https ://github.com/hibayesian/awesome-automl-papers 。

这个答案指出了一些更现代的方法。这已经以NeAT: Neuroevolution of Augmenting Topologies的形式存在了很长时间,最初在 Kenneth Stanley 2002 年的论文中进行了描述。

NeAT 可作为许多语言的包使用,包括PythonJavaC++该算法作为遗传编程的一种形式工作。使用简单、随机的拓扑生成大量网络。然后根据特定任务的损失函数对它们进行评估。性能较差的网络被丢弃,性能较好的网络被混合以产生新的变化。这个过程被迭代直到用户希望它停止,并且通常导致平均人口性能相对于损失函数的逐渐改进。

Neil Slater 说 NEAT 本身不是进化神经网络的神经网络是正确的,我认为最接近问题的框架是 HyperNEAT http://axon.cs.byu.edu/~dan/778/论文/NeuroEvolution/stanley3**.pdf HyperNEAT 的运行方式与您所描述的非常相似,从一万英尺的角度来看,算法如下:1)您在笛卡尔空间中为 rnn 布置节点,2d,3d,无论您的尺寸如何您希望,这组坐标称为基板。2)通过一次传入两个坐标作为输入来查询 cppn,这为 cppn 提供了一个超立方体的搜索空间,该空间是坐标所在维度的 2 倍(对于空间中的基板 > 2d,这非常大) 3) cppn 的输出用于对 rnn 坐标的连接、权重、偏差进行编码 4)然后通过您的适应度函数评估 rnn,但进化(物种形成、繁殖等)在编码 rnn 的 cppn 上运行。所以你进化出一组编码 rnn 或 cnn “表型”的 cppn “基因型”。

NEAT 的第三次迭代是 ES-Hyperneat,您需要在基板中布局的只是输入和输出层(Hyperneat 您必须静态布局基板的所有隐藏节点)。它使用细分树对搜索空间进行细分,并像hyperneat一样用cppn查询这棵树的细分根坐标,沿途检查方差以确定新节点是否在“高信息”拓扑空间中,以“进化” " 隐藏节点进入衬底 (rnn)。