为什么有人会使用 NEAT 等神经进化算法而不是其他机器学习算法?什么情况只适用于 NEAT 等算法,而不适用于其他机器学习算法?
为什么有人会使用 NEAT 而不是其他机器学习算法?
人工智能
机器学习
整洁的
比较
神经进化
2021-10-27 22:57:47
1个回答
导致 NEAT 算法优缺点的主要区别在于它不使用任何梯度计算。这意味着对于 NEAT,成本函数和神经元的激活函数都不需要是可微的。在某些情况下——例如代理直接竞争,如果他们与一个或多个对手获胜,你可以选择它们用于下一代——你甚至可能不需要成本函数来优化。成本函数通常可以是从复杂的网络评估中生成的简单数字。
因此,NEAT 可用于成本函数的公式(就网络的单次前馈运行而言)不是很清楚的情况。它还可以用于探索激活函数,例如阶跃函数或随机激发神经元,其中基于梯度的方法很难甚至不可能应用。
NEAT 可以在简单的控制场景中表现良好,作为一个在给定一些传感器输入的情况下输出动作的策略网络。例如,很流行用它来为赛车游戏或模拟机器人控制器创建代理。当用作基于策略的控制器时,NEAT 与强化学习 (RL) 竞争,并且与策略梯度方法具有基本相似之处 - 控制器的性质相似,通常您可以使用相同的奖励/适应度函数。
由于 NEAT 已经是一种受进化启发的算法,它也非常适合作为模拟生物的“大脑”的生命代码。
NEAT 的主要缺点是缓慢收敛到最佳结果,尤其是在复杂或具有挑战性的环境中。梯度方法可以更快,而深度 RL 策略梯度(A3C 和 DDPG 等算法)的最新进展意味着 RL 可以处理比 NEAT 复杂得多的环境。
我建议在以下情况下使用 NEAT:
这个问题很容易评估——无论是通过性能测量还是通过代理之间的竞争——但可能很难指定为损失函数
一个相对较小的神经网络应该能够逼近目标函数
目标是评估不可微分的激活函数
如果您正在研究顺序控制问题,并且可以使用标准的前馈神经网络来逼近策略,那么很难提前说 NEAT 或某种形式的 Deep RL 是否会更好。
其它你可能感兴趣的问题