神经网络结合遗传算法可以真正加速学习过程来解决问题

robinz 2018-04-01

遗传算法在 NNs 之前非常流行。因为, NNs 需要大量的数据, 而GAs却没有。GAs主要用于模拟人口中实体的环境和行为。他们主要是用来学习通向一个我们知道答案的问题的路径。今天仍然使用GAs,但机器学习(ML)大部分已经接管。

神经网络的问题

神经网络帮助我们解决了很多问题。但是他们仍然有一个巨大的问题。超参数!这是唯一无法学习的价值......直到现在。现在,我们不必担心“知道正确的超参数”,因为可以使用GA来学习。此外,我们也可以使用它来了解NN的参数(权重)。因为在遗传算法中,实体学习指定问题的最佳基因组,这里每个神经网络的基因组将是它的一组超参数。

解决问题

要解决超参数问题,我们需要执行以下操作:

  • 创建几个NN的总体。

  • 为所有NN分配随机(在一定范围内)超参数。

  • 对于一些迭代执行以下操作:

  1. 训练所有的神经网络同时或逐一。

  2. 在所有人都完成训练后,计算他们的训练成本。

  3. 根据其成本计算每个NN的“适应度”(它在该迭代中做得如何)。健身将被用于增加神经网络“复制”的机会。“适应度越高,复制的机会就越高。但是,最好的NN将具有最低的成本。如果我们设定NN的适应度等于它的成本,那么最好的NN将有最少的机会被选中进行复制。相反,我们可以将适应度分配给成本的倒数。因此,最低的成本,将具有最高的适应性。有一些方法可以为健身分配更好的值,但这超出了本文的范围。

  4. 找出人群中的最大适应度(步骤5所要求的,根据步骤5的实施情况可以忽略不计)。

  5. 基于一个概率系统选择2个神经网络的适应度。我忽略了对此的解释,因为这可能看起来太复杂了。这是一段视频,解释了这个话题。

  6. 交叉2个NN的基因。这将创建一个“孩子”NN。这个神经网络应该有第一个神经网络的一些属性和一些第二个。这个过程也有许多不同的实现。

  7. 突变孩子的基因。需要进行突变以保持GA中的一定数量的随机性。

  8. 对群体中的NN数量执行步骤5 - 7。您应该将创建的“孩子”存储在新的人群中,并将新的人口分配给包含旧人群的变量。

执行上述所有步骤,在最新一代结束时,您的算法将找到含有最优超参数的NN的群体。这将是所有人群中最适合的NN。下面的图片试图解释这个过程。

神经网络结合遗传算法可以真正加速学习过程来解决问题

使用GA对超参数进行迭代的迭代过程

另一个问题

这是学习超参数的一个很好的解决方案,它确实带来了自己的问题。最突出的两个是计算资源和时间问题。

多次同时或逐一培训许多神经网络需要大量的时间和计算资源。这限制了这种解决方案的实施,只限于那些愿意投入资金并购买大量处理能力的人。

这也是它被大公司广泛使用的原因。

一个例子

OpenAI的Dota 2机器人击败了一名职业Dota 2玩家。玩家花了几年时间学习和掌握,只花了几个星期就把机器人xunl训练好了。他们使用GA来训练他们的机器人,他们能够同时运行Dota 2的多个实例,每个实例都有一个机器人玩游戏的实例。花了他们2周的时间来教导机器人的这个过程。

相关推荐