在神经网络中,系统的学习过程一般是由训练算法所主导。而现如今有许多不同的学习算法,它们每一个都有不同的特征和表现。因此本文力图描述清楚五大学习算法的基本概念及优缺点,给读者们阐明最优化在神经网络中的应用。 问题形式化 神经网络中的学习过程可以形式化为最小化损失函数问题,该损失函数一般是由训练误差和正则项组成。误差项会衡量神经网络拟合数据集的好坏,也就是拟合数据所产生的误差。正则项主要就是通过给特征权重增加罚项而控制神经网络的有效复杂度,这样可以有效地控制模型过拟合问题。
训练损失函数取决于神经网络中的自适应参数(偏置项和突触权重)。我们很容易地将神经网络的权重组合成一个 n 维权重向量 w,而训练损失就是以这些权重为变量的函数。下图描述了损失函数 f(w)。
如上图所示,点 w* 是训练损失函数的极小值点。在任意点 A,损失函数能分别对权重求一阶偏导数和二阶偏导数。损失函数的一阶偏导可以使用梯度算符来表示,其中每一个权重的损失函数梯度表示如下: 同样,损失函数的二阶偏导可以使用海塞矩阵(Hessian matrix)来表示,以下就是损失函数对权重向量每个元素的二阶偏导数: 最小化多变量连续可导函数的方法广泛应用于学习过程中,许多常规方法都将这种最优化方法直接应用于神经网络的训练中。 单变量函数优化(One-dimensional optimization) 虽然损失函数是由多变量决定的(权重的数量通常十分巨大),但首先理解单变量函数的优化方法是十分重要的。并且实际上单变量优化方法经常应用到神经网络的训练过程中,超参数的调整就可以使用单变量优化法。 在实际模型中,许多训练算法都是首先计算出训练方向 d,然后确定在此训练方向上最小化训练损失 f(η)的学习速率η。下图就展示了单变量函数 f(η)的优化过程,该优化可求得最优学习速率η*。 点η1 和点η2 定义了包含单变量函数 f(η)最优点η*的子区间 在该案例中,单变量优化法在给定单变量函数的情况下搜寻函数极小值。其中广泛应用的搜寻算法有黄金分割法(golden section)和 Brent 法。两者都是在减少极小值所在的子区间,直到子区间中两个端点间的距离小于定义的可容忍误差。 多变量函数优化(Multidimensional optimization) 神经网络的学习过程可以形式化为求将训练损失函数 f 最小化的参数向量 w*。数学或实际都证明如果神经网络的损失函数达到了极小值,那么梯度也必定为 0 向量。 通常情况下,损失函数为参数的非线性函数,所以找到一个封闭的训练算法(closed training algorithms)求最优解是不可能的。相反,我们考虑通过一系列迭代步在参数空间内搜寻最优解。在每一步迭代中,我们可以通过调整神经网络的参数降低损失函数的值。 通过这种方式,一般我们会由初始参数向量开始(通常为随机初始化)训练神经网络。然后,算法会更新生成一组新参数,训练损失函数也会在每一次算法迭代中使用更新的参数进行函数值的降低。两步迭代之间的的训练损失减少又称之为训练损失衰减率(loss decrement)。最后,当训练过程满足特定的条件或停止标准时,训练算法就会停止迭代,而这个时候的参数也就是最优参数(神经网络中可能是局部最优解),神经网络的性能也由它们所决定。 下面,本文将描述在神经网络中最重要的学习算法。
梯度下降 梯度下降,又称为最速下降法是一种非常简单和直观的训练算法。该算法从梯度向量中获取优化信息,因此其为一阶算法(通过一阶偏导求最优权重)。 (责任编辑:本港台直播) |