在神经网络中,系统的学习过程一般是由训练算法所主导。而现如今有许多不同的学习算法,它们每一个都有不同的特征和表现。因此本文力图描述清楚五大学习算法的基本概念及优缺点,给读者们阐明最优化在神经网络中的应用。

神经网络中,体系的学习进程一般是由练习算法所主导。而现如今有许多不同的学习算法,它们每一个都有不同的特征和体现。因而本文力求描绘清楚五大学习算法的基本概念及优缺陷,给读者们说明***化在神经网络中的运用。

问题办法化

神经网络中的学习进程能够办法化为最小化丢失函数问题,该丢失函数一般是由练习差错和正则项组成。差错项会衡量神经网络拟合数据集的好坏,也便是拟合数据所发生的差错。正则项首要便是经过给特征权重添加罚项而操控神经网络的有用复杂度,这样能够有用地操控模型过拟合问题。

 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么) 神经网络 算法 函数 第1张

练习丢失函数取决于神经网络中的自适应参数(偏置项和突触权重)。咱们很容易地将神经网络的权重组合成一个 n 维权重向量 w,而练习丢失便是以这些权重为变量的函数。下图描绘了丢失函数 f(w)。

丢失函数 f(w) 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第2张

如上图所示,点 w* 是练习丢失函数的极小值点。在恣意点 A,丢失函数能分别对权重求一阶偏导数和二阶偏导数。丢失函数的一阶偏导能够运用梯度算符来标明,其间每一个权重的丢失函数梯度标明如下:

每一个权重的丢失函数梯度标明 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第3张

相同,丢失函数的二阶偏导能够运用海塞矩阵(Hessian matrix)来标明,以下便是丢失函数对权重向量每个元素的二阶偏导数:

丢失函数对权重向量每个元素的二阶偏导数 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第4张

最小化多变量接连可导函数的办法广泛运用于学习进程中,许多惯例办法都将这种***化办法直接运用于神经网络的练习中。

单变量函数优化(One-dimensional optimization)

尽管丢失函数是由多变量决议的(权重的数量一般非常巨大),但首要了解单变量函数的优化办法是非常重要的。而且实践上单变量优化办法常常运用到神经网络的练习进程中,超参数的调整就能够运用单变量优化法。

在实践模型中,许多练习算法都是首要核算出练习方向 d,然后确认在此练习方向上最小化练习丢失 f(η)的学习速率η。下图就展现了单变量函数 f(η)的优化进程,该优化可求得***学习速率η*。

 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么) 神经网络 算法 函数 第5张

点η1 和点η2 界说了包括单变量函数 f(η)***点η*的子区间

在该事例中,单变量优化法在给定单变量函数的状况下查找函数极小值。其间广泛运用的查找算法有黄金分割法(golden section)和 Brent 法。两者都是在削减极小值地点的子区间,直到子区间中两个端点间的间隔小于界说的可容忍差错。

多变量函数优化(Multidimensional optimization)

神经网络的学习进程能够办法化为求将练习丢失函数 f 最小化的参数向量 w*。数学或实践都证明假如神经网络的丢失函数达到了极小值,那么梯度也必定为 0 向量。

一般状况下,丢失函数为参数的非线性函数,所以找到一个关闭的练习算法(closed training algorithms)求***解是不可能的。相反,咱们考虑经过一系列迭代步在参数空间内查找***解。在每一步迭代中,咱们能够经过调整神经网络的参数下降丢失函数的值。

经过这种办法,一般咱们会由初始参数向量开端(一般为随机初始化)练习神经网络。然后,算法会更新生成一组新参数,练习丢失函数也会在每一次算法迭代中运用更新的参数进行函数值的下降。两步迭代之间的的练习丢失削减又称之为练习丢失衰减率(loss decrement)。***,当练习进程满意特定的条件或中止标准时,练习算法就会中止迭代,而这个时分的参数也便是***参数(神经网络中可能是部分***解),神经网络的功能也由它们所决议。

下面,本文将描绘在神经网络中最重要的学习算法。

神经网络中最重要的学习算法 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第6张

梯度下降

梯度下降,又称为最速下降法是一种非常简略和直观的练习算法。该算法从梯度向量中获取优化信息,因而其为一阶算法(经过一阶偏导求***权重)。

假如咱们指定 f(wi)= fi、ᐁf(wi)= gi,那么该优化办法由点 w0 开端迭代,在满意停止条件之前,就在练习方向 di=-gi 大将 wi 移向 wi+1。因而,梯度下降法便是如下方程式进行迭代。

梯度下降法便是如下方程式进行迭代 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第7张

其间参数 η 是学习速率。该学习速率的值能够设定为一个常量也能够沿着练习方向运用单变量优化法求得。一般学习速率的***值能够在接连迭代步(successive step)上经过线最小化(line minimization)取得。但是,现在仍是有许多机器学习模型仅仅只运用固定的学习速率。

下面是一张运用梯度下降算法进行学习的流程图。咱们能够看到,参数向量经过两步进行优化:首要,核算梯度下降的练习方向。其次,寻觅适宜的学习速率。

核算梯度下降的练习方向 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第8张

梯度下降算法也有一些缺陷,首要便是其迭代方向会呈现一种锯齿现象,其并不能朝着极小值点径自优化,所以迭代的次数也就多,收敛的速度也就慢。当它的函数梯度图又窄又长时(变量没有归一化,值处于不同的量级),迭代所需求的步数就会更多了。最速下降法的确沿着最陡的梯度下降,丢失函数削减得最敏捷,但这并不代表梯度下降法或最速下降法会最快收敛(由于锯齿现象)。下图就能够直观地了解到这种锯齿现象,由于非线性函数部分的梯度方向并不一定便是朝着***点。而且该图还标明,假如横轴量级与纵轴量级有不一起,丢失函数梯度图会呈现为一种椭圆形,而假如从椭圆长半轴端点开端下降,那么迭代步数就会许多。

 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么) 神经网络 算法 函数 第9张

在练习大规划神经网络时,由于有上万的参数,所以梯度下降法是比较有用的。由于梯度下降算法贮存的梯度算符向量规划为 n,而海塞矩阵贮存的规划就为 n^2 了,一起梯度和海塞矩阵的核算量也是天差地别。

牛顿法

牛顿法是二阶算法,由于该算法运用了海塞矩阵(Hessian matrix)求权重的二阶偏导数。牛顿法的方针便是选用丢失函数的二阶偏导数寻觅更好的练习方向。现在咱们将选用如下标明: f(wi) = fi、ᐁf(wi) = gi 和 Hf(wi) = Hi。在 w0 点运用泰勒级数展开式二次迫临函数 f。

运用泰勒级数展开式二次迫临函数 f 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第10张

H0 为函数 f 在点 w0 的海塞矩阵。经过将 g 设定为 0,咱们就能够找到 f(w) 的极小值,也就得到了以下方程式。

 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么) 神经网络 算法 函数 第11张

因而,从参数向量 w0 开端,牛顿法遵守以下办法进行迭代:

牛顿法遵守以下办法进行迭代 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第12张

向量 Hi-1·gi(参阅上式)也便是所说的牛顿下降步(Newton's step)。留意,参数的这些改变将朝着极大值而不是极小值迫临,呈现这样的状况是由于海塞矩阵非正定。因而在不能保证矩阵正定的状况下,丢失函数并不能保证在每一次迭代中都是削减的。为了防止上述问题,牛顿法的方程式一般能够修改为:

牛顿法的方程式一般能够修改为 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第13张

学习速率η相同但是设定为固定常数或经过单变量优化取值。向量 d=Hi-1·gi(参阅上式)现在就称为牛顿练习方向(Newton's training direction)。

运用牛顿法的练习进程状态图就如下图所示。从此图能够看出来,体系首要经过取得牛顿练习方向,然后取得适宜的学习速率来进行参数的更新优化。

运用牛顿法的练习进程状态图 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第14张

下面的梯度图展现了牛顿法的功能。由于牛顿法是选用其丢失函数的二阶偏导数寻觅更好的练习下降方向,所以它比较梯度下降只需更少的迭代次数就能下降到丢失函数的极小值,因而函数收敛速度也会大幅度地加快。

牛顿法的功能 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第15张

但是,牛顿法的困难之处在于其核算量,由于对海塞矩阵及其逆的准确求值在核算量方面是非常巨大的。

共轭梯度法(Conjugate gradient)

共轭梯度法可认为是梯度下降法和牛顿法的中心物。该算法希望能加快梯度下降的收敛速度,一起防止运用海塞矩阵进行求值、贮存和求逆取得必要的优化信息。

在共轭梯度练习算法中,由于是沿着共轭方向(conjugate directions)履行查找的,所以一般该算法要比沿着梯度下降方向优化收敛得更敏捷。共轭梯度法的练习方向是与海塞矩阵共轭的。

咱们用 d 标明练习方向向量,然后从初始参数向量 w0 和初始练习方向向量 d0=-g0 开端,共轭梯度法所构建的练习方向序列为:

共轭梯度法所构建的练习方向序列 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第16张

在上式中,γ 称之为共轭参数,而且有一些办法核算这个参数。两种最常用的办法是源自 Fletcher、Reeves 和 Polak 、Ribiere。关于一切的共轭梯度算法,练习方向周期性地重置为负梯度向。

参数经过下面的表达式得以更新和优化。一般学习速率η可运用单变量函数优化办法求得。

 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么) 神经网络 算法 函数 第17张

共轭梯度法的练习进程流程图就如下所示。从图中咱们能够看出来模型是经过***次核算共轭梯度练习方向而优化参数的,然后再寻觅恰当的学习速率。

共轭梯度法的练习进程流程图 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第18张

共轭梯度法现已证明其在神经网络中要比梯度下降法有用得多。而且由于共轭梯度法并没有要求运用海塞矩阵,所以在大规划神经网络中其仍是能够做到很好的功能。

拟牛顿法(Quasi-Newton method)

由于需求许多的操作求解海塞矩阵的值还有核算矩阵的逆,运用牛顿法所发生的核算量是非常巨大的。因而有一种称之为拟牛顿法(quasi-Newton)或变量矩阵法来处理这样的缺陷。这些办法并不是直接核算海塞矩阵然后求其矩阵的逆,拟牛顿法是在每次迭代的时分核算一个矩阵,其迫临海塞矩阵的逆。最重要的是,该迫临值仅仅运用丢失函数的一阶偏导来核算。

海塞矩阵由丢失函数的二阶偏导组成,拟牛顿法背面的思维首要是仅运用丢失函数的一阶偏导数,经过另一矩阵 G 迫临海塞矩阵的逆。拟牛顿法的公式能够标明为:

拟牛顿法的公式 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第19张

学习速率 η能够设定为固定常数,也能够经过单变量函数优化得到。其间矩阵 G 迫临海塞矩阵的逆,且有不同的办法进行迫临。一般,最常用的两种办法是 Davidon–Fletcher–Powell formula (DFP) 和 the Broyden–Fletcher–Goldfarb–Shanno formula (BFGS)。

拟牛顿法的练习进程流程图就如下所示。从图中咱们能够看出来模型是经过***次核算拟牛顿练习方向而优化参数的,然后再寻觅恰当的学习速率。

拟牛顿法适用于绝大多数事例中:它比梯度下降和共轭梯度法收敛更快,而且也不需求切当地核算海塞矩阵及其逆矩阵。

 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么) 神经网络 算法 函数 第20张

Levenberg-Marquardt 算法

Levenberg-Marquardt 算法,也称之为衰减最小二乘法(damped least-squares method),该算法的丢失函数选用平方差错和的办法。该算法的履行也不需求核算详细的海塞矩阵,它仅仅仅仅运用梯度向量和雅可比矩阵(Jacobian matrix)。

该算法的丢失函数如下方程式所示为平方差错和的办法:

该算法的丢失函数如下方程式所示为平方差错和的办法 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第21张

在上式中,m 是数据集样本的数量。

咱们能够界说丢失函数的雅可比矩阵以差错对参数的偏导数为元素,如下方程式所示:

界说丢失函数的雅可比矩阵以差错对参数的偏导数为元素 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第22张

其间 m 是数据集样本的数量,n 是神经网络的参数数量。那么雅可比矩阵便是 m×n 阶矩阵。

丢失函数的梯度向量就能够按如下核算出来:

丢失函数的梯度向量就能够按如下核算出来 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第23张

e 在这儿是一切差错项的向量。

终究,咱们能够用以下表达式迫临海塞矩阵:

迫临海塞矩阵 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第24张

其间λ为衰减因子,它保证了海塞矩阵的正定性(positiveness),I 是单位矩阵。

下面的表达式界说了 Levenberg-Marquardt 算法中参数的更新和优化进程:

界说了 Levenberg-Marquardt 算法中参数的更新和优化进程 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)  神经网络 算法 函数 第25张

当衰减参数λ为 0 时,Levenberg-Marquardt 算法便是运用海塞矩阵迫临值的牛顿法。而当 λ很大时,该算法就近似于选用很小学习速率的梯度下降法。假如进行迭代导致了丢失函数上升,衰减因子λ就会添加。假如丢失函数下降,那么λ就会下降,然后 Levenberg-Marquardt 算法更接近于牛顿法。该进程常常用于加快收敛到极小值点。

运用 Levenberg-Marquardt 法的神经网络练习进程状态图就如下图所示。***步便是核算丢失函数、梯度和海塞矩阵迫临值,随后再在每次迭代下降丢失中调整衰减参数。

 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么) 神经网络 算法 函数 第26张

正如咱们所了解到的,Levenberg-Marquardt 算法是为平方差错和函数所定制的。这就让运用这种差错衡量的神经网络练习地非常敏捷。但是 Levenberg-Marquardt 算法还有一些缺陷,***便是其不能用于平方根差错或穿插熵差错(cross entropy error)等函数,此外该算法还和正则项不兼容。***,关于大型数据集或神经网络,雅可比矩阵会变得非常巨大,因而也需求很多的内存。所以咱们在大型数据集或神经网络中并不引荐选用 Levenberg-Marquardt 算法。

内存与收敛速度的比较

下图展现了一切上文所评论的算法,及其收敛速度和内存需求。其间收敛速度最慢的是梯度下降算法,但该算法一起也只需求最少的内存。相反,Levenberg-Marquardt 算法可能是收敛速度最快的,但其一起也要求最多的内存。比较折衷办法是拟牛顿法。

 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么) 神经网络 算法 函数 第27张

总而言之,假如咱们的神经网络有数万参数,为了节省内存,咱们能够运用梯度下降或共轭梯度法。假如咱们需求练习多个神经网络,而且每个神经网络都只要数百参数、数千样本,那么咱们能够考虑 Levenberg-Marquardt 算法。而其他的状况,拟牛顿法都能很好地应对。

原文:https://www.neuraldesigner.com/blog/5_algorithms_to_train_a_neural_network

【本文是51CTO专栏组织机器之心的原创译文,微信大众号“机器之心( id: almosthuman2014)”】

戳这儿,看该作者更多好文

转载请说明出处
知优网 » 从梯度下降到拟牛顿法:详解练习神经网络的五大学习算法(通过梯度下降算法训练神经网络模型的步骤是什么)

发表评论

您需要后才能发表评论