进化算法与神经网络

传统的神经网络训练方法是根据通过网络传回的误差来调整权重。通过网络输入的结果与期望值的比较,计算出了这个误差。创建神经网络的人会花一些时间摆弄神经网络的参数,直到神经网络能够从给定的数据中学习,通过使用上述误差调整其权重。

本文简要介绍了如何使用进化算法来简化这个过程。

在开始之前,让我们看一看一些现有的参数优化技术。

自动参数确定

已经存在一些现有方法来自动导出ML算法的参数。

  • Auto-Keras:自动机器学习库 - 自动搜索参数和架构。
  • 贝叶斯优化:一种统计优化技术,通过对其参数的智能估计来最大化算法的性能。
  • DataRobot:一种专注于提供端到端ML体验的工具(从数据准备到ML模型部署)。它还允许自动化ML和模型比较。
  • Dataiku:另一个专注于提供端到端ML体验的工具,可选择自动化ML。

进化算法

进化算法是对进化过程进行建模的算法。这是通过拥有一群个体来完成的,每个个体由一组基因组成。每个基因代表随机生成的数据的属性/特征,您试图将其演变为有意义的东西。

与ML算法不同,进化算法从没有数据开始。相反,我们测量了我们想要实现的目标(例如,对于本文,我们希望根据我们用来训练它的参数来最大化神经网络的准确性)。然后我们更改个人以尽可能地满足此要求。

遗传算法是进化算法中最流行和最常见的算法。它通过以下步骤演变个体:

1.随机初始化个体

2.有限的几代个体

  • 进行突变 - 随机或通过一些更复杂的方法替换基因。
  • 进行交叉 - 将个体合并在一起,从而产生具有来自每个父母的各种基因的新个体。
  • 计算每个个体的适应度 - 这是指代表您的问题的函数。该函数应用于每个个体,以确定每个个体的好坏。
  • 选择 - 根据上面计算的适应度选择哪些个体存活到下一代。这形成了下一代的人口,其中重复这些步骤。

3.选择具有最佳结果的个体,即具有最高/最低适合度的结果。

进化神经网络

存在各种方法,其中进化算法可用于神经网络。这些方法旨在通过自动化一组步骤来简化设计神经网络的过程。本节对每个部分进行了高级概述。

进化神经网络参数

这是指确定神经网络的训练参数,例如学习速率,激活函数等。

使用遗传算法进化的神经网络参数遵循与上述相同的步骤,其中:

  • 个体的每个基因都是参数
  • 每个个体都是参数的组合,如下图所示

进化算法与神经网络

  • 适应度函数包括:
  1. 给定由个体代表的参数训练神经网络
  2. 基于作为适应度函数的结果的测试集计算准确度/ f1分数(或任何其他优选的神经网络性能测量值)

下图显示了上述个人的层参数如何转换为网络的示例:

进化算法与神经网络

优点

  • 自动能够以许多参数组合引导而非强力的方式
  • 可以为参数添加边界
  • 可以演变更复杂的参数,例如分类(例如:优化类型),因为您可以管理从个体到神经网络的转换。

缺点

  • 当您训练total_individuals * total_generations神经网络时,可能会很慢
  • 可能需要决定遗传算法参数(虽然默认值通常可以用于此目的)。

进化神经网络特征

神经网络训练的一部分是选择最合适的数据输入网络。给定一组参数,这些参数或多或少可以处理大部分数据,我们可以通过演化将这些数据过滤为更有意义的属性。该过程与上述遗传算法相同,其中:

  • 个体的每个基因都是一个属性
  • 每个个体都是一组输入到网络的属性。下面显示了一个示例个体,其中1表示应该馈送到网络的特征,0表示不应该馈送到网络的特征。

进化算法与神经网络

  • 适应度函数包括:
  1. 在给定一组预定义参数的情况下训练神经网络,并且仅在训练时提供所选择的特征
  2. 基于作为适应度函数的结果的测试集计算准确度/ f1分数(或任何其他优选的神经网络性能测量值)

可能适用于某些用例的是使用更大的属性集来演化神经网络的参数,然后使用生成的神经网络参数来演化本小节中描述的特征。

下图显示了上述个体如何转换为网络输入的示例:

进化算法与神经网络

优点

  • 自动地能够以引导而非强力方式选择特征,这在通过分析不容易确定特征的有用性时是有利的。

缺点

  • 当您训练total_individuals * total_generations神经网络时,可能会很慢
  • 可能需要决定遗传算法参数(虽然默认值通常可以用于此目的)。

直接进化权重(Neuroevolution)

您也可以自己调整权重,这意味着,与使用反向传播将误差传递回并调整一些epoch的权重不同,您可以:

  • 选择架构(层,层大小,激活函数)
  • 进化权重
  • 测试新的神经网络

与其他演化选项相同的方式表示,我们可以看作如下:

  • 个体的每个基因都是权重
  • 每个个体都代表一个具有预定义架构的神经网络

进化算法与神经网络

  • 适应度函数包括:
  1. 用个体的基因值替换预定义神经网络的权重
  2. 基于作为适应度函数的结果的测试集计算准确度/ f1分数(或任何其他优选的神经网络性能测量值)

下图显示了如何将上述个人转换为网络权重的示例:

进化算法与神经网络

优点

  • 自动为给定数据获得一个合适的网络
  • 由于对搜索空间的各个部分进行采样,因此不太可能陷入局部最小值。

缺点

  • 当您训练total_individuals * total_generations神经网络时,可能会很慢
  • 可能需要决定遗传算法参数(虽然默认值通常可以用于此目的)。

结论

有4种方法可以使用进化算法,例如遗传算法来设计神经网络,即:

  • 演变神经网络训练的参数
  • 发展要馈入网络的特征
  • 使用预定义的体系结构演变网络的权重
  • 与权重一起发展网络架构

主要优点是进化算法允许对神经网络的标准进行引导式探索性搜索。主要缺点是这涉及训练许多神经网络,因为每个个体都是不同的网络 - 根据问题的复杂性,这可能很慢。

相关推荐