一些资料中提到进化算法是一种训练神经网络的方法(寻找权重,而不是超参数)。但是,我还没有听说过这种想法的实际应用。
我的问题是,为什么会这样?这种解决方案有哪些问题或限制使其无法实际使用?
我之所以问,是因为我正计划开发这样的算法,并且想知道会发生什么以及最关注的地方。
一些资料中提到进化算法是一种训练神经网络的方法(寻找权重,而不是超参数)。但是,我还没有听说过这种想法的实际应用。
我的问题是,为什么会这样?这种解决方案有哪些问题或限制使其无法实际使用?
我之所以问,是因为我正计划开发这样的算法,并且想知道会发生什么以及最关注的地方。
用于训练神经网络的主要进化算法是增强拓扑的神经进化,或NEAT。NEAT 已经得到了相当广泛的使用。有数以千计的学术论文建立在或使用该算法。
NEAT 在商业应用中没有广泛使用,因为如果你有一个干净的目标函数,一个通过反向传播为梯度下降优化的拓扑,以及一个为 GPU 高度优化的实现,你几乎肯定会看到更好、更快、传统训练过程的结果。NEAT 真正有用的地方是如果你想做一些奇怪的事情,比如训练以最大化新颖性,或者如果你想尝试训练没有完全可分解的梯度的神经元。基本上,您需要有任何通常的原因,您可能更喜欢进化算法而不是爬山方法: