训练神经网络的五大算法:技术原理、内存与速度分析

 训练神经网络的五大算法:技术原理、内存与速度分析

训练神经网络的算法有成千上万个,最常用的有哪些,哪一个又最好?作者在本文中介绍了常见的五个算法,并从内存和速度上对它们进行对比。最后,他最推荐莱文贝格-马夸特算法。

用于神经网络中执行学习过程的程序被称为训练算法。训练算法有很多,各具不同的特征和性能。

问题界定

神经网络中的学习问题是以损失函数f的最小化界定的。这个函数一般由一个误差项和一个正则项组成。误差项评估神经网络如何拟合数据集,正则项用于通过控制神经网络的有效复杂性来防止过拟合。

损失函数取决于神经网络中的自适应参数(偏差和突触权值)。我们可以简便地把它们组合成单个n维权值向量w。下图表示损失函数f(w)

训练神经网络的五大算法:技术原理、内存与速度分析

如上图所示,点w*是该损失函数的最小值。在任何点A,我们可以计算损失函数的一阶和二阶导数。一阶导数用梯度向量组成,可以写成:

ᐁif(w) = df/dwi (i = 1,...,n)

类似地,损失函数的二阶导数可以用Hessian矩阵,写成:

Hi,jf(w) = d2f/dwi·dwj (i,j = 1,...,n)

许多连续和可微函数的最小化问题已经有许多研究。这些问题的常规方法可直接适用于训练神经网络。

一维优化方法

虽然损失函数取决于许多参数,一维优化方法在这里非常重要。实际上,一维优化方法经常用于神经网络的训练过程。

许多训练算法先计算训练方向d,然后计算使该方向上的损失最小的训练速率η,写作f(n)。下图描述了一维损失函数:

训练神经网络的五大算法:技术原理、内存与速度分析

点η1和η2定义包含f(n)的最小值η*的间隔。这里,一维优化方法搜索给定的一维函数的最小值。广泛使用的算法有黄金分割法和布伦特法。

多维优化方法

神经网络的学习问题被界定为搜索使损失函数f得到最小值的参数向量w*。如果神经网络的损失函数已经取得最小值,则梯度是零向量。

一般来说,损失函数是参数的非线性函数。因此,不可能找到最小值的封闭训练算法。反之,我们考虑通过在一系列步骤组成的参数空间中搜寻最小值。每一步中,损失会随着神经网络参数的调整而减少。

这样,我们从一些参数向量(通常随机选择)着手训练神经网络。然后,我们会生成一系列参数,使得损失函数在算法的每次迭代中减小损失值。两次迭代间的损失值变化称为损失减量。当满足特定条件或到达停止标准使,训练算法停止。

接下来将介绍训练神经网络的五种最重要的算法。

1. 梯度下降法(Gradient descent)

梯度下降法,又称最速下降法,是最简单的训练算法。它需要来自梯度向量的信息,因此它是一阶方法。

设f(wi) = fi,ᐁf(wi) = gi。该方法从点w0开始,在训练方向di = -gi上从wi移动到wi+1,直到满足停止标准。因此,梯度下降法按照以下公式迭代:

wi+1 = wi - di·ηi, i=0,1,...

参数η是训练速率。该值可以设置为固定值,或者在沿训练方向的每一步一维优化中找到。训练速率的最佳值通常可通过每个连续步骤的线性最小化得到。然而,仍然有许多软件工具只使用固定值的训练速率。

下图描绘了梯度下降法的训练过程。可以看到,参数向量通过两个步骤提升:首先,计算梯度下降训练方向; 然后,找到合适的训练速率。

训练神经网络的五大算法:技术原理、内存与速度分析

梯度下降训练算法的严重缺点是需要对具有长而窄的山谷结构的函数进行许多次迭代。实际上,下坡梯度是损失函数下降最快的方向,但不一定能产生最快的收敛性。下图说明了这个问题。

训练神经网络的五大算法:技术原理、内存与速度分析

当神经网络非常大、参数非常多时,梯度下降法是推荐的算法。因为该方法仅存储梯度向量(大小是n),而不存储Hessian矩阵(大小是n2)。

2. 牛顿法(Newton's method)

牛顿法是一种二阶算法,因为它使用了Hessian矩阵。这种方法的目的是通过使用损失函数的二阶导数找到更好的训练方向。

设f(wi) = fi,ᐁf(wi) = gi,同时Hf(wi)= Hi。使用泰勒级数得到f在w0上的二次近似值:

f = f0 + g0 · (w - w0) + 0.5 · (w - w0)2 · H0
H0是在点w0处估计的f的Hessian矩阵。通过对f(w)的最小值设置g=0,得到下一个等式:

g = g0 + H0 · (w - w0) = 0

这样,从参数向量w0开始,牛顿法按照下面的公式迭代:

wi+1 = wi - Hi-1·gi, i=0,1,...

用户喜欢...

2018年人工智能还有这五大棘手问题待攻克

在所有关于杀手机器人的高调宣传下,2017年在人工智能方面取得了一些显著的进步。例如,今年初名为Libratus(冷扑大...


神经网络从原理到实现

1.简单介绍 在机器学习和认知科学领域,人工神经网络(artificial neural network,缩写ANN),简称神经网络(neural network,缩写NN)或类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,...


【科普】CNN(卷积神经网络)、RNN(递归神经网络)、DNN(深度神经网络)内部网络结构的区别

先说DNN,从结构上来说他和传统意义上的NN(神经网络)没什么区别,但是神经网络发展时遇到了一些瓶颈问题。 一开始的神经元不能表示异或运算,科学家通过增加网络层数,增加隐藏层可...


英国伯明翰大学团队使用Theano,Python,PYNQ和Zynq开发定点Deep Recurrent神经网络

可编程逻辑(PLD)是由一种通用的集成电路产生的,逻辑功能按照用户对器件编程来确定,用户可以自行编程把数字系统集成在PLD中。经过多年的发展,可编程逻辑器件由70年代的可编程逻辑阵...


机器学习方法:从线性模型到神经网络

发现模式 一个模型实际上都是一个从输入到输出的函数,我们希望用这些模型发现数据中的模式,发现数据中存在的函数依赖,当然前提是数据中本身就存在这样的函数依赖。数据集有很多...


物联网、人工智能时代来临 五大隐忧不可不提防

随物联网/人工智能时代来临,“弱人工智能”已先渗入人类生活,各界不得不更早审视所有可能影响人工智能范畴,...


神经网络—面向妈妈级的入门说明

作者:Jen Bernier 我的母亲是一名护士,目前已经退休。她是一个非常聪明的人,对自己的工作业务非常的尽职尽责。几天前我和她说我正在研究Imagination最新的神经网络加速器,她诧异的说:...


混合云市场不断壮大 2018年五大预测

尽管公有云似乎占据了云计算大部分市场,但是私有云和混合云计算市场也在不断壮大;专家预测,从2018年开始,私...


遥遥领先的PowerVR与神经网络加速器

近来,如果你对神经网络有所关注,那么你一定会发现神经网络的市场如日中天。实际上,机器学习和深度学习已经成为了人人所熟知的技术。如果你还对此很陌生,那么你可以看看我的另一...


神经网络入门指南

人工神经网络(ANN)是一种从信息处理角度对人脑神经元网络进行抽象从而建立的某种简单模型,按不同的连接方式组成不同的网络。其在语音识别、计算机视觉和文本处理等方面取得的突破...


机器学习作用于信息安全的五大顶级案例

通俗讲,机器学习就是“(计算机)无需显式编程即可学习的能力”。跨海量数据集应用数学技术,机器学习算法可建立起行为模型,并基于新输入的数据,用这些模型做出对未来的预测。视...


从图像到知识:深度神经网络实现图像理解的原理解析

摘要:本文将详细解析深度神经网络识别图形图像的基本原理。针对卷积神经网络,本文将详细探讨网络中每一层在图像识别中的原理和作用,例如卷积层(convolutional layer),采样层(pooling la...


为什么说PowerVR 2NX NNA是神经网络加速器的未来?

作者:Benny Har-Even 从早期的桌面PC游戏到街机游戏机,到后来的家庭游戏机以及移动设备端等,PowerVR一直都与图形技术密切相关,今年是PowerVR 25周年,近期我们发布了一系列的文章来庆祝。...


深度卷积神经网络在目标检测中的进展

近些年来,深度卷积神经网络(DCNN)在图像分类和识别上取得了很显著的提高。回顾从2014到2016这两年多的时间,先后涌现出了R-CNN,Fast R-CNN, Faster R-CNN, ION, HyperNet, SDP-CRC, YOLO,G-CNN, SSD等越来...


[深入剖析]递归神经网络

递归神经网络(RNN)是一类神经网络,包括一层内的加权连接(与传统前馈网络相比,连接仅馈送到后续层)。因为 RNN 包含循环,所以它们可以在处理新输入的同时存储信息。这种记忆使它...


神经网络算法的优势与应用

人工神经网络(ANN)以大脑处理机制作为基础,开发用于建立复杂模式和预测问题的算法。 首先了解大脑如何处理信息: 在大脑中,有数亿个神经元细胞,以电信号的形式处理信息。外部信...