我正在尝试了解各种机器学习算法类别之间的区别。
我知道进化算法的实现与神经网络的实现截然不同。
但是,它们似乎都旨在确定来自潜在嘈杂的训练/历史数据集中输入和输出之间的相关性。
从定性的角度来看,是否存在神经网络比进化算法更适合的目标问题领域?
我浏览了一些文章,建议以互补的方式使用它们。 是否有这方面的一个不错的用例示例?
回答:
问题的关键在于:在机器学习问题中,通常有两个组成部分:
a) 模型(函数类等)
b) 拟合模型的方法(优化算法)
神经网络是一种模型:给定一个布局和一组权重,神经网络产生一些输出。 存在一些拟合神经网络的典型方法,例如反向传播、对比散度等。 但是,神经网络的重点是,如果有人给你“正确”的权重,你就可以在问题上做得很好。
进化算法解决了第二部分——拟合模型。 同样,有一些与进化算法相关的典型模型:例如,进化编程通常尝试优化特定类型的所有程序。 然而,EA 本质上是找到特定模型的正确参数值的一种方法。 通常,您编写模型参数的方式使得交叉操作是一件合理的事情,然后使用 EA 来获得合理的参数设置。
现在,例如,你可以使用进化算法来训练神经网络,我相信已经有人这样做了。 但是,EA 需要工作的关键在于交叉操作必须是一件合理的事情——通过从一个合理的设置中取一部分参数,然后从另一个合理的设置中取其余部分参数,你通常会得到一个更好的参数设置。 在大多数情况下,EA 的使用并非如此,最终它变得像模拟退火一样,只是更加令人困惑和效率低下。