梯度下降存在陷入局部最小值的问题。我们需要运行梯度下降指数次才能找到全局最小值。
谁能告诉我在神经网络学习中应用梯度下降的任何替代方案,以及它们的优缺点。
梯度下降存在陷入局部最小值的问题。我们需要运行梯度下降指数次才能找到全局最小值。
谁能告诉我在神经网络学习中应用梯度下降的任何替代方案,以及它们的优缺点。
与所使用的方法相比,与最小化函数有关的问题更多,如果找到真正的全局最小值很重要,则使用诸如模拟退火之类的方法。这将能够找到全局最小值,但这样做可能需要很长时间。
在神经网络的情况下,局部最小值不一定是个大问题。一些局部最小值是由于您可以通过置换隐藏层单元或否定网络的输入和输出权重等来获得功能相同的模型。此外,如果局部最小值只是略微非最优,那么性能上的差异将很小,因此并不重要。最后,这是很重要的一点,拟合神经网络的关键问题是过拟合,因此积极寻找成本函数的全局最小值可能会导致过拟合和模型表现不佳。
添加一个正则化项,例如权重衰减,可以帮助平滑成本函数,这可以稍微减少局部最小值的问题,无论如何我都会推荐它作为避免过度拟合的一种方法。
然而,在神经网络中避免局部最小值的最佳方法是使用高斯过程模型(或径向基函数神经网络),其局部最小值问题较少。
梯度下降是一种优化算法。
有许多优化算法对固定数量的相关(不可分离)实数值进行操作。我们可以将它们大致分为两类:基于梯度的优化器和无导数优化器。通常,您希望在有监督的环境中使用梯度来优化神经网络,因为这比无导数优化要快得多。有许多基于梯度的优化算法已用于优化神经网络:
并且已经提出了许多其他用于优化神经网络的算法,您可以在 Google 上搜索无 Hessian 优化或 v-SGD(有许多类型的具有自适应学习率的 SGD,请参见此处)。
神经网络的优化不是一个已解决的问题!根据我的经验,最大的挑战是找不到一个好的局部最小值。然而,挑战在于摆脱非常平坦的区域,处理病态误差函数等。这就是为什么 LMA 和其他使用 Hessian 近似值的算法通常在实践中运行良好并且人们尝试开发随机版本的原因使用低复杂度的二阶信息。然而,对于 minibatch SGD 而言,经过良好调整的参数集通常比任何复杂的优化算法都要好。
通常您不想找到全局最优值。因为这通常需要过度拟合训练数据。
梯度下降的一个有趣的替代方案是基于种群的训练算法,例如进化算法 (EA) 和粒子群优化 (PSO)。基于群体的方法背后的基本思想是创建一个候选解决方案群体(NN 权重向量),候选解决方案迭代地探索搜索空间,交换信息,并最终收敛到一个最小值。由于使用了许多起点(候选解),因此收敛到全局最小值的机会显着增加。PSO 和 EA 已被证明表现得非常有竞争力,在复杂的 NN 训练问题上通常(尽管并非总是)优于梯度下降。
我知道这个线程已经很老了,其他人在解释局部最小值、过度拟合等概念方面做得很好。但是,由于 OP 正在寻找替代解决方案,我将尝试贡献一个并希望它能激发更多有趣的想法。
这个想法是将每个权重 w 替换为 w + t,其中 t 是遵循高斯分布的随机数。网络的最终输出是所有可能的 t 值的平均输出。这可以通过分析来完成。然后,您可以使用梯度下降或 LMA 或其他优化方法来优化问题。优化完成后,您有两个选择。一种选择是减少高斯分布中的 sigma 并一次又一次地进行优化,直到 sigma 达到 0,然后您将获得更好的局部最小值(但可能会导致过度拟合)。另一种选择是继续使用权重中带有随机数的那个,它通常具有更好的泛化特性。
第一种方法是一种优化技巧(我称之为卷积隧道,因为它使用参数上的卷积来改变目标函数),它平滑了成本函数景观的表面并消除了一些局部最小值,因此更容易找到全局最小值(或更好的局部最小值)。
第二种方法与噪声注入(权重)有关。请注意,这是通过分析完成的,这意味着最终结果是一个网络,而不是多个网络。
以下是双螺旋问题的示例输出。他们三个的网络架构都是一样的:只有一个隐藏层 30 个节点,输出层是线性的。使用的优化算法是LMA。左图是香草设置;中间是使用第一种方法(即反复将 sigma 减少到 0);第三个是使用 sigma = 2。
您可以看到,普通解决方案是最差的,卷积隧道做得更好,而噪声注入(使用卷积隧道)是最好的(就泛化特性而言)。
卷积隧道和噪声注入的解析方式都是我的独创思路。也许他们是某人可能感兴趣的替代品。详细信息可以在我的论文Combining Infinity Number Of Neural Networks Into One中找到。警告:我不是专业的学术作家,论文未经同行评审。如果您对我提到的方法有疑问,请发表评论。