令人着迷的无梯度神经网络优化方法

人工智能 深度学习
梯度下降是机器学习中最重要的思想之一:给定一些代价函数以使其最小化,该算法迭代地采取最大下降斜率的步骤,理论上在经过足够的迭代次数后才达到最小值。柯西(Cauchy)于1847年首次发现,在1944年针对非线性优化问题在Haskell Curry上得到扩展,梯度下降已用于从线性回归到深度神经网络的各种算法。

[[336078]]

梯度下降是机器学习中最重要的思想之一:给定一些代价函数以使其最小化,该算法迭代地采取最大下降斜率的步骤,理论上在经过足够的迭代次数后才达到最小值。柯西(Cauchy)于1847年首次发现,在1944年针对非线性优化问题在Haskell Curry上得到扩展,梯度下降已用于从线性回归到深度神经网络的各种算法。

虽然梯度下降及其反向传播形式的重新用途已成为机器学习的最大突破之一,但神经网络的优化仍然是一个尚未解决的问题。互联网上的许多人都愿意宣称"梯度下降很烂",尽管可能有些遥远,但梯度下降确实存在许多问题。

优化程序陷入了足够深的局部最小值中。诚然,有一些聪明的解决方案有时可以解决这些问题,例如动量,它可以使优化器在大山丘上行走。随机梯度下降;或批量归一化,从而平滑错误空间。但是,局部最小值仍然是神经网络中许多分支问题的根本原因。

 

令人着迷的无梯度神经网络优化方法

因为优化器对本地极小值很感兴趣,所以即使设法摆脱它,也要花费很长时间。梯度下降法通常是一种冗长的方法,因为它的收敛速度慢,即使对大数据集(如批梯度下降法)进行了调整也是如此。

梯度下降对优化器的初始化特别敏感。例如,如果优化器在第二个局部最小值而不是第一个局部最小值附近初始化,则性能可能会好得多,但这都是随机确定的。

学习率决定了优化器的信心和风险。设置过高的学习率可能会导致它忽略全局最小值,而过低的学习会导致运行时间中断。为了解决这个问题,学习率随着迭代衰减,但是在许多指示学习率的变量中选择衰减率是困难的。

梯度下降需要梯度,这意味着它除了无法处理不可微的函数外,还容易出现基于梯度的问题,例如消失或爆炸的梯度问题。

当然,已经对梯度下降进行了广泛的研究,并且提出了许多建议的解决方案,其中一些解决方案是GD变体,而其他解决方案是基于网络体系结构的。仅仅因为梯度下降被高估了并不意味着它不是当前可用的最佳解决方案。即使使用批处理规范化来平滑错误空间或选择复杂的优化器(如Adam或Adagrad),这些通用知识也不是本文的重点,即使它们通常表现更好。

取而代之的是,本文的目的是向一些晦涩难懂的确定性有趣的优化方法提供一些理所应得的信息,这些方法不适合基于梯度的标准方法,该方法与任何其他用于改善该方法性能的技术一样。神经网络在某些情况下表现特别出色,而在其他情况下则表现不佳。无论他们在特定任务上的表现如何,他们对于机器学习的未来都充满着魅力,创造力和充满希望的研究领域。

粒子群优化PSO

粒子群优化是一种基于种群的方法,它 定义了一组探索搜索空间并试图寻找最小值的"粒子"。PSO相对于某个质量指标迭代地改进了候选解决方案。它通过拥有大量潜在的解决方案("粒子")并根据简单的数学规则(例如粒子的位置和速度)移动它们来解决该问题。每个粒子的运动都受到其认为最佳的局部位置的影响,但也被搜索位置(由其他粒子找到)中最知名的位置所吸引。从理论上讲,该群体经过多次迭代以求出最佳解决方案。

 

令人着迷的无梯度神经网络优化方法
资料来源:维基

PSO是一个有趣的想法-与神经网络相比,它对初始化的敏感度要低得多,并且在某些发现上的粒子之间的通信可能被证明是一种搜索稀疏和大面积区域的非常有效的方法。

因为粒子群优化不是基于梯度的(gasp!),所以不需要优化问题是可微的。因此,使用PSO优化神经网络或任何其他算法将对选择其他函数中的激活函数或等效角色具有更大的自由度和更低的敏感性。此外,它几乎没有关于优化问题的假设,甚至可以搜索很大的空间。

可以想象,基于总体的方法比基于梯度的优化器在计算上要昂贵得多,但不一定如此。由于该算法是如此开放和非刚性-正如基于进化的算法通常如此,因此人们可以控制粒子的数量,粒子的移动速度,全局共享的信息量等等。就像可能会调整神经网络中的学习率一样。

代理优化是一种优化方法,它尝试使用另一个完善的函数对损失函数建模以找到最小值。该技术从损失函数中采样"数据点",这意味着它尝试使用不同的参数值(x)并存储损失函数的值(y)。在收集到足够数量的数据点之后,将代理函数(在这种情况下为7次多项式)拟合到所收集的数据。

 

令人着迷的无梯度神经网络优化方法

因为找到多项式的最小值是一个经过充分研究的主题,并且存在许多使用导数来找到多项式的全局最小值的非常有效的方法,所以我们可以假定替代函数的全局最小值对于损失是相同的函数。

代理优化从技术上讲是一种非迭代方法,尽管代理功能的训练通常是迭代的。此外,从技术上讲,它是一种无梯度方法,尽管查找建模函数全局最小值的有效数学方法通常基于导数。但是,由于迭代和基于梯度的属性都是替代优化的"次要"属性,因此它可以处理大数据和不可微的优化问题。

使用代理函数的优化在以下几种方面的特性:

  • 它实质上是在平滑真实的损失函数的表面,从而减少了锯齿状的局部最小值,该局部最小值导致了神经网络中大量额外的训练时间。
  • 它将一个困难的问题投影到一个容易得多的问题上:无论是多项式,RBF、GP、MARS还是其他替代模型,寻找全局最小值的任务都会借助数学知识来完成。
  • 过拟合替代模型并不是什么大问题,因为即使有相当多的过拟合,替代函数也比真实损失函数更平滑,参差不齐。除了建立简化的数学倾向模型外,还有许多其他标准考虑因素,因此训练替代模型要容易得多。
  • 替代优化不受当前位置的限制,因为它看到了"整个函数",而不是梯度下降,梯度下降必须不断做出危险的选择,以决定是否认为下一个山峰会有更深的最小值。

替代优化几乎总是比梯度下降方法快,但通常以准确性为代价。使用代理优化可能只能查明全局最小值的大致位置,但这仍然可以极大地受益。

另一种方法是混合模型。替代优化用于将神经网络参数带到粗略位置,从中可以使用梯度下降法找到确切的全局最小值。另一个方法是使用替代模型来指导优化程序的决策,因为替代函数可以a)"先见之明"和b)对损失函数的特定起伏不敏感。

模拟退火

模拟退火是基于冶金退火的概念,其中可以将材料加热到其重结晶温度以上,以降低其硬度并改变其他物理特性,有时还改变化学特性,然后使材料逐渐冷却并再次变硬。

使用缓慢冷却的概念,随着对溶液空间的探索,模拟退火缓慢地降低了接受较差溶液的可能性。由于接受较差的解决方案可以对全局最小值进行更广泛的搜索(认为-越过山丘进入更深的山谷),因此模拟退火假定可以在第一次迭代中正确表示和探索各种可能性。随着时间的流逝,该算法从探索转向开发。

以下是模拟退火算法如何工作的粗略概述:

  • 温度设置为某个初始正值,然后逐渐接近零。
  • 在每个时间步长上,算法都会随机选择一个与当前解决方案接近的解决方案,测量其质量,然后根据当前温度(接受更好或更差的解决方案的可能性)移至该解决方案。
  • 理想情况下,当温度达到零时,该算法已收敛于全局最小解。

可以使用动力学方程式或随机采样方法进行模拟。模拟退火用于解决旅行商问题,该问题试图找到数百个位置之间的最短距离,以数据点表示。显然,这些组合是无止境的,但是模拟退火(加上强化学习的效果)效果很好。

 

令人着迷的无梯度神经网络优化方法
模拟的旅行商问题退火解决方案。资料来源:维基

在需要在短时间内找到近似解的情况下,模拟退火效果特别好,胜过缓慢的梯度下降速度。像代理优化一样,它可以与梯度下降混合使用,从而具有以下优点:模拟退火的速度和梯度下降的准确性。

这是一些非梯度方法的样本;还有许多其他的算法,例如模式搜索和多目标优化,都需要探索。鉴于我们人类遗传成功的证据,因此基于遗传和种群的算法(例如粒子群优化)对于创建真正的"智能"代理非常有前途。

非梯度优化方法之所以令人着迷,是因为它们很多都利用了创造力,而不受梯度数学链的限制。没有人期望无梯度方法能够成为主流,因为即使考虑到许多问题,基于梯度的优化也能如此出色。但是,将无梯度和基于梯度的方法的强大功能与混合优化器一起使用证明了极高的潜力,特别是在我们达到计算极限的时代。

责任编辑:未丽燕 来源: 今日头条
相关推荐

2022-04-07 09:01:52

神经网络人工智能

2021-12-28 08:48:54

PyTorch神经网络人工智能

2021-10-26 16:10:50

神经网络AI算法

2018-11-26 07:04:59

神经网络优化函数

2017-06-11 23:38:43

进化图像神经网络

2018-07-03 16:10:04

神经网络生物神经网络人工神经网络

2020-08-06 10:11:13

神经网络机器学习算法

2017-05-23 18:54:18

深度学习人工智能

2023-06-18 23:00:39

神经网络损失函数随机变量

2019-04-19 08:18:37

神经网络数据图形

2017-09-10 07:07:32

神经网络数据集可视化

2020-05-11 13:44:38

神经网络人工智能深度学习

2022-06-14 13:55:30

模型训练网络

2019-05-07 19:12:28

机器学习神经网络Python

2017-05-04 18:30:34

大数据卷积神经网络

2018-03-22 13:34:59

TensorFlow神经网络

2022-09-26 00:00:00

神经网络激活函数sigmoid

2023-11-14 16:29:14

深度学习

2017-03-21 08:52:20

神经网络声誉

2017-11-30 18:05:18

点赞
收藏

51CTO技术栈公众号