robinz 2018-04-01
遗传算法在 NNs 之前非常流行。因为, NNs 需要大量的数据, 而GAs却没有。GAs主要用于模拟人口中实体的环境和行为。他们主要是用来学习通向一个我们知道答案的问题的路径。今天仍然使用GAs,但机器学习(ML)大部分已经接管。
神经网络帮助我们解决了很多问题。但是他们仍然有一个巨大的问题。超参数!这是唯一无法学习的价值......直到现在。现在,我们不必担心“知道正确的超参数”,因为可以使用GA来学习。此外,我们也可以使用它来了解NN的参数(权重)。因为在遗传算法中,实体学习指定问题的最佳基因组,这里每个神经网络的基因组将是它的一组超参数。
要解决超参数问题,我们需要执行以下操作:
创建几个NN的总体。
为所有NN分配随机(在一定范围内)超参数。
对于一些迭代执行以下操作:
训练所有的神经网络同时或逐一。
在所有人都完成训练后,计算他们的训练成本。
根据其成本计算每个NN的“适应度”(它在该迭代中做得如何)。健身将被用于增加神经网络“复制”的机会。“适应度越高,复制的机会就越高。但是,最好的NN将具有最低的成本。如果我们设定NN的适应度等于它的成本,那么最好的NN将有最少的机会被选中进行复制。相反,我们可以将适应度分配给成本的倒数。因此,最低的成本,将具有最高的适应性。有一些方法可以为健身分配更好的值,但这超出了本文的范围。
找出人群中的最大适应度(步骤5所要求的,根据步骤5的实施情况可以忽略不计)。
基于一个概率系统选择2个神经网络的适应度。我忽略了对此的解释,因为这可能看起来太复杂了。这是一段视频,解释了这个话题。
交叉2个NN的基因。这将创建一个“孩子”NN。这个神经网络应该有第一个神经网络的一些属性和一些第二个。这个过程也有许多不同的实现。
突变孩子的基因。需要进行突变以保持GA中的一定数量的随机性。
对群体中的NN数量执行步骤5 - 7。您应该将创建的“孩子”存储在新的人群中,并将新的人口分配给包含旧人群的变量。
执行上述所有步骤,在最新一代结束时,您的算法将找到含有最优超参数的NN的群体。这将是所有人群中最适合的NN。下面的图片试图解释这个过程。
这是学习超参数的一个很好的解决方案,它确实带来了自己的问题。最突出的两个是计算资源和时间问题。
多次同时或逐一培训许多神经网络需要大量的时间和计算资源。这限制了这种解决方案的实施,只限于那些愿意投入资金并购买大量处理能力的人。
这也是它被大公司广泛使用的原因。
OpenAI的Dota 2机器人击败了一名职业Dota 2玩家。玩家花了几年时间学习和掌握,只花了几个星期就把机器人xunl训练好了。他们使用GA来训练他们的机器人,他们能够同时运行Dota 2的多个实例,每个实例都有一个机器人玩游戏的实例。花了他们2周的时间来教导机器人的这个过程。