fengzhimohan 2018-03-27
神经网络结合遗传算法可以真正加速学习过程来解决一些问题。
一些大公司现在都在使用神经网络(NN)和遗传算法(GA)来帮助他们的神经网络学习得更好、更高效。在这篇文章中,将介绍神经网络和神经网络的优缺点,并分享一些想法。同时,也会介绍在这个过程中使用的基本算法。希望这篇文章能够帮助你了解更多关于人工智能和机器学习的内容。
遗传算法在神经网络之前非常流行。因为神经网络需要大量数据,而遗传算法却不需要。遗传算法主要用于模拟人口中实体的环境和行为。他们主要用于了解我们知道答案的问题的路径。
今天仍然使用遗传算法,但机器学习(ML)已经基本占据上风。
他们是如何工作的?
维基百科上是这么解释遗传算法的:
在计算机科学和运筹学研究中,遗传算法(GA)是属于更大类的进化算法(EA)的自然选择过程所启发的元启发式。遗传算法通常用于通过依赖生物启发运算符(如变异,交叉和选择)来生成优化和搜索问题的高质量解决方案。
如果这问题还没有解决,那么Daniel Shiffman的遗传算法的播放列表将会有所帮助。它帮助了解了遗传算法的工作原理以及Shiffman的视频是如何在一般情况下表现出色。虽然这里给出的建议是加快速度。
神经网络的问题
神经网络帮助我们解决了很多问题。但是他们仍然有一个巨大的问题。超参数!这是直到现在唯一不能学到的价值观。
注意:如果出现问题,超参数是神经网络需要正确执行的值。
我们可以使用遗传算法来学习神经网络的最佳超参数!
现在,我们不必担心“知道正确的超参数”,因为可以使用遗传算法来学习。此外,我们也可以使用它来了解神经网络的参数(权重)。
因为在遗传算法中,实体学习了指定问题的最佳基因组,这里每个神经网络的基因组都将是它的一组超参数。
解决问题
要解决超参数问题,我们需要执行以下操作:
·创建几个NN的总体。
·为所有NN分配随机(在一定范围内)超参数。
·对于一些迭代执行以下操作:
1.训练所有的神经网络同时进行或一个接一个地训练。
2.在所有人都完成训练后,计算他们的训练成本。
3.根据其成本计算每个NN的“适应度”(它在该迭代中做得如何)。健身将被用于增加神经网络“复制”的机会。“适应度越高,复制的机会就越高。但是,最好的神经网络将具有最低的成本。如果我们设定神经网络的适应度等于它的成本,那么最好的神经网络将有最少的机会被选中进行复制。相反,我们可以将适应度分配给成本的倒数。因此,最低的成本,将具有最高的适应性。有一些方法可以为健身分配更好的值,但这超出了本文的范围。
4.找出人群中的最大适应度(步骤5所要求的,根据步骤5的实施情况可以忽略不计)。
5.基于一个概率系统选择2个神经网络的适应度。
6.交叉2个神经网络的基因。这将创建一个“子”神经网络。这个神经网络应该具有第一个神经网络的一些属性和第二个神经网络的一些属性。这个过程也有许多不同的实现。
7.突变子基因。需要进行突变以保持遗传算法中的一定数量的随机性。
8.对群体中的神经网络数量执行步骤5 - 7。你应该将创建的“子”存储在新的种群中,并将新的人口分配给包含旧种群的变量。
注意:你应该创建一个你想要学习的参数的神经网络类。在最初,人口应该包含同一个神经网络类的几个实例。此外,上面写的所有内容都可以从Shiffman的播放列表中学到。
执行上述所有步骤,在最新一代的末尾,你的算法将找到含有最优超参数的神经网络的群体。这将是所有人群中最适合的神经网络。下面的图片可以解释这个过程。
另一个问题
这是学习超参数的一个很好的解决方案,它确实带来了自己的问题。最突出的两个是计算资源和时间问题。
多次同时或逐一训练许多神经网络需要大量的时间和计算资源。这限制了这种解决方案的实施,只限于那些愿意投入资金并购买大量处理能力的人。
这也是它被大公司广泛使用的原因。
一个例子
不到一年前,OpenAI的Dota 2机器人击败了一名职业Dota 2玩家(文章和YouTube视频)。玩家花了几年时间学习和掌握,而机器人只花了几个星期。
他们使用遗传算法来训练他们的机器人。因为他们拥有必要的处理能力,所以他们能够同时运行Dota 2的多个实例,每个实例都有一个机器人玩游戏的实例。花了他们2周的时间来教导机器人的这个过程。
试想一下,这需要多少处理能力。
结论
在我看来,遗传算法很适合教神经网络,但他们不会成为首选。相反,会尝试寻找更好的方法来学习神经网络的超参数。
但是,如果将来我可以获得大量的处理能力,这种方法也值得一试。