在神经网络中,为什么要使用梯度方法而不是其他元启发式方法?

数据挖掘 机器学习 神经网络 深度学习 优化 反向传播
2021-09-19 23:15:34

在训练深度和浅层神经网络时,为什么通常使用梯度方法(例如梯度下降、Nesterov、Newton-Raphson),而不是其他元启发式方法?

我所说的元启发式是指模拟退火、蚁群优化等方法,这些方法是为了避免陷入局部最小值而开发的。

2个回答
  1. 这会浪费信息;渐变是可用的,所以使用它并节省时间。
  2. 有理由相信局部最优是好的;例如,参见 Choromanska 等人。注释)。
  3. 对训练集的过度优化会导致更差的泛化能力,所以有时我们甚至故意不尝试提前停止可能是机器学习中最好的免费午餐。

在大型神经网络中可能有数百万个自由参数,并且评估当前的启发式意味着评估网络的大量训练记录,假设监督或半监督学习。

基于梯度的方法可以在合理的时间内处理这么多的参数。可以通过训练数据的子集一次通过所有参数来近似梯度,并且单个步骤将立即更新所有参数。有理论支持表明基于梯度的权重变化应该收敛到更好的解决方案(注意是局部最小值)。没有理论结果表明,对于某些参数(在所有权重的某个局部子集中)具有最佳值的一组权重应该比一组随机权重更好。这使得基于搜索的方法寻求建立良好的本地选择并将它们组合起来处于劣势,因为我们真的不知道它们是否有机会解决特定问题。

遗传算法已成功用于训练中小型网络,例如NEAT这在具有即时反馈的小型控制系统中效果很好(尽管在许多情况下强化学习可能是更好的选择),并且在生命模拟中也很常见。但是这种方法不能扩展到复杂的网络,或者具有大量数据的监督学习场景。针对每个群体成员的训练数据评估 GA 的成本,以及搜索可能为几兆字节的基因组所需的群体规模/评估数量,使得大型网络的 GA 在计算上过于昂贵。

模拟退火不能直接用于在标准前馈网络中搜索权重,因为它需要对参数空间中的每个微小“移动”模式进行启发式计算(例如,从大部分训练数据中)——每次移动的成本需要计算速度快。然而,Boltzmann Machine 训练与模拟退火密切相关,Restricted Boltzmann Machines可用于预训练深度神经网络等,因此在某些情况下使用 SA。