是否可以在没有反向传播的情况下训练神经网络?

机器算法验证 机器学习 神经网络 优化 反向传播
2022-02-05 14:55:47

许多神经网络书籍和教程在反向传播算法上花费了大量时间,该算法本质上是一种计算梯度的工具。

假设我们正在构建一个具有约 10K 参数/权重的模型。是否可以使用一些无梯度优化算法来运行优化?

我认为计算数值梯度会太慢,但是其他方法,如 Nelder-Mead、模拟退火或遗传算法呢?

所有的算法都会受到局部最小值的影响,为什么要痴迷于梯度?

4个回答

您提到的前两种算法(Nelder-Mead 和模拟退火)在优化圈中通常被认为已经过时,因为有更好的替代方案更可靠且成本更低。遗传算法涵盖范围很广,其中一些可能是合理的。

然而,在更广泛的无导数优化 (DFO) 算法类别中,有许多算法明显优于这些“经典”算法,因为这是近几十年来一个活跃的研究领域。那么,这些新方法中的一些对于深度学习是否合理?

比较最新技术的一篇相对较新的论文如下:

Rios, LM, & Sahinidis, NV (2013)无导数优化:算法回顾和软件实现比较。全球优化杂志。

这是一篇很好的论文,它对最近的技术有很多有趣的见解。例如,结果清楚地表明,最好的局部优化器都是“基于模型的”,使用不同形式的顺序二次规划(SQP)。

然而,正如他们在摘要中指出的那样,“我们发现所有这些求解器获得良好解决方案的能力随着问题规模的增加而降低。” 为了给出数字的概念,对于所有问题,求解器的预算为 2500 个函数评估,问题大小最多为 ~300 个参数进行优化。除了 O[10] 参数之外,这些优化器中很少有表现非常出色,即使是最好的优化器也会随着问题规模的增加而显着下降。

因此,对于非常高维的问题,DFO 算法与基于导数的算法没有竞争力。给出一些观点,基于 PDE(偏微分方程)的优化是另一个具有非常高维问题的领域(例如,大型 3D 有限元网格的每个单元有几个参数)。在这个领域中,“伴随法”是最常用的方法之一。这也是一个基于前向模型代码自动微分的梯度下降优化器。

最接近高维 DFO 优化器的可能是集成卡尔曼滤波器,用于将数据同化到复杂的 PDE 模拟中,例如天气模型。有趣的是,这本质上是一种 SQP 方法,但具有贝叶斯-高斯解释(因此二次模型是正定的,即没有鞍点)。但我不认为这些应用程序中的参数或观察值的数量可以与深度学习中看到的相媲美。

旁注(局部最小值):从我读过的关于深度学习的少量文章来看,我认为共识是鞍点而不是局部最小值,这对于高维 NN 参数空间来说是最成问题的。

例如,最近在《自然》杂志上的评论说:“最近的理论和实证结果强烈表明,局部最小值通常不是一个严重的问题。相反,景观中包含大量梯度为零的鞍点,并且曲面在大多数维度上是向上弯曲的,而在其余维度上是向下弯曲的。”

一个相关的问题是关于局部优化与全局优化(例如评论中指出的这个问题)。虽然我不做深度学习,但根据我的经验,过度拟合绝对是一个值得关注的问题。在我看来,全局优化方法最适合不强烈依赖“自然”数据的工程设计问题。在数据同化问题中,任何当前的全球最小值都可能在添加新数据后轻松改变(警告:我的经验集中在地球科学问题上,其中数据通常相对于模型容量“稀疏”)。

一个有趣的观点也许是

O. Bousquet & L. Bottou (2008)大规模学习的权衡。尼普斯。

它提供了关于为什么以及何时近似优化在实践中可能更可取的半理论论据。

尾注(元优化):虽然基于梯度的技术似乎可能在训练网络中占主导地位,但 DFO 可能在相关的元优化任务中发挥作用。

一个例子是超参数调整。(有趣的是,来自Rios & Sahinidis的成功的基于模型的 DFO 优化器可以被视为本质上解决了一系列实验设计/响应面问题。)

另一个例子可能是根据层的设置(例如数量、类型、顺序、节点/层)来设计架构。在这种离散优化上下文中,遗传风格的算法可能更合适。请注意,这里我正在考虑连接性由这些因素隐含确定的情况(例如,全连接层、卷积层等)。换句话说,连通性明确地进行元优化。(连接强度会受到训练,例如稀疏性可以通过正则化和/或 ReLU 激活来提升……但是,这些选择可以进行元优化。)O[N2]notL1

好吧,在 70 年代反向传播革命之前,最初的神经网络是手工“训练”的。:)

话虽如此:

有一种机器学习“学校”称为极限学习机,它不使用反向传播。

他们所做的是创建一个具有许多、许多、许多节点(具有随机权重)的神经网络,然后使用最小二乘法(如线性回归)训练最后一层。然后他们要么在之后修剪神经网络,要么在最后一步应用正则化(如套索)以避免过度拟合。我已经看到这仅适用于具有单个隐藏层的神经网络。没有培训,所以超级快。我做了一些测试,令人惊讶的是,以这种方式“训练”的这些神经网络非常准确。

大多数人,至少是和我一起工作的人,都嘲笑这个机器学习“学校”,他们是一个有自己的会议等等的弃儿,但我实际上认为这有点天真。


还有一点:在反向传播中,有一些很少提到的替代方案,例如弹性反向传播,它们在 Rneuralnet包中实现,只使用导数的大小。该算法由 if-else 条件而不是线性代数组成。与传统的反向传播相比,它们具有一些优势,即您不需要对数据进行归一化,因为它们不受梯度消失问题的影响。

您可以使用各种本地搜索算法,反向传播已被证明对于一般更复杂的任务是最有效的;在某些情况下,其他本地搜索更好。

你可以在神经网络上使用随机开始爬山来快速找到一个好的解决方案,但要找到一个接近最优的解决方案是不可行的。

维基百科(我知道,不是最大的来源,但仍然)说

对于找到精确全局最优值不如在固定时间内找到可接受的局部最优值重要的问题,模拟退火可能比梯度下降等替代方法更可取。

来源

至于遗传算法,我会看到用于神经网络训练的反向传播与遗传算法

我为反向传播做的主要情况是它被广泛使用并且有很多很大的改进这些图像确实展示了香草反向传播的一些令人难以置信的进步。

我不会将反向传播视为一种算法,而是一类算法。

我还想补充一点,对于神经网络,10k 个参数是小豆子。另一种搜索效果很好,但在具有数百万参数的深度网络上,它几乎不实用。

您可以使用几乎任何数值优化算法来优化神经网络的权重。您还可以使用混合连续离散优化算法来优化权重和布局本身(层数、每层中的神经元数量,甚至神经元的类型)。然而,没有一种优化算法不会以某种方式受到“维度诅咒”和局部最优的影响