深度学习系列(7):神经网络的优化方法
神经网络模型的训练技巧与优化方法

神经网络模型的训练技巧与优化方法随着人工智能技术的不断发展,神经网络已成为解决复杂问题的一种主要方法。
神经网络的训练是指通过调整网络的参数,使其能够从训练数据中学习出合适的映射关系。
为了获得更好的训练效果,必须灵活运用一些训练技巧和优化方法。
本文将介绍一些常用的神经网络训练技巧与优化方法,帮助读者更好地掌握神经网络模型的训练过程。
1. 数据预处理在进行神经网络训练时,数据预处理是非常重要的一步。
首先,需要对数据进行归一化处理,将其转化为统一的数据范围,有助于提高神经网络的收敛速度。
其次,可以采用数据增强的方式,通过对原始数据进行旋转、平移、缩放等操作来扩充数据集的规模,提高模型的泛化能力。
2. 选择合适的激活函数激活函数在神经网络中起到了非常重要的作用,它能够引入非线性特性,增加网络的表达能力。
常见的激活函数包括sigmoid函数、ReLU函数、tanh函数等。
在选择激活函数时,需要根据具体的问题和网络结构来进行选择,以获得更好的训练效果和收敛速度。
3. 适当调整学习率学习率决定了神经网络参数的调整步长,过大的学习率可能导致模型发散,而过小的学习率则会让模型收敛速度过慢。
因此,在训练过程中,需要根据实际情况适当调整学习率,可以采用指数递减的方式或根据验证集的表现来动态调整学习率,以获得更好的训练效果。
4. 使用合适的损失函数损失函数用于衡量模型预测值与实际值之间的差异,是模型优化的关键。
根据具体的问题和任务类型,可以选择不同的损失函数,常见的有均方误差损失函数、交叉熵损失函数等。
在选择损失函数时,需要考虑问题的特点以及模型的训练目标,以获得更好的训练效果。
5. 批量归一化批量归一化是一种常用的网络优化方法,它可以加速神经网络的训练过程,提高模型的泛化能力。
批量归一化通过对每个小批量样本进行规范化处理,使得网络在学习的过程中更加稳定和可靠。
同时,批量归一化还可以缓解梯度消失和梯度爆炸等问题,有助于提高网络的训练效果。
神经网络的优化方法及技巧

神经网络的优化方法及技巧神经网络是一种模拟人脑神经元工作方式的计算模型,它可以通过学习和训练来实现各种复杂的任务。
然而,神经网络的优化是一个复杂而耗时的过程,需要考虑许多因素。
本文将探讨神经网络的优化方法及技巧,帮助读者更好地理解和应用神经网络。
一、梯度下降法梯度下降法是一种常用的优化方法,通过迭代地调整网络参数来最小化损失函数。
其基本思想是沿着损失函数的负梯度方向更新参数,使得损失函数不断减小。
梯度下降法有多种变体,如批量梯度下降法、随机梯度下降法和小批量梯度下降法。
批量梯度下降法使用所有训练样本计算梯度,更新参数;随机梯度下降法每次只使用一个样本计算梯度,更新参数;小批量梯度下降法则是在每次迭代中使用一小批样本计算梯度,更新参数。
选择合适的梯度下降法取决于数据集的规模和计算资源的限制。
二、学习率调整学习率是梯度下降法中的一个重要参数,决定了参数更新的步长。
学习率过大可能导致参数在损失函数最小值附近震荡,而学习率过小则会导致收敛速度缓慢。
为了解决这个问题,可以使用学习率衰减或自适应学习率调整方法。
学习率衰减是指在训练过程中逐渐减小学习率,使得参数更新的步长逐渐减小;自适应学习率调整方法则根据参数的梯度大小自动调整学习率,如AdaGrad、RMSProp和Adam等。
这些方法能够在不同的训练阶段自动调整学习率,提高训练效果。
三、正则化正则化是一种用来防止过拟合的技巧。
过拟合是指模型在训练集上表现良好,但在测试集上表现较差的现象。
常见的正则化方法有L1正则化和L2正则化。
L1正则化通过在损失函数中添加参数的绝对值,使得模型更加稀疏,可以过滤掉一些不重要的特征;L2正则化通过在损失函数中添加参数的平方和,使得模型的参数更加平滑,减少参数的振荡。
正则化方法可以有效地减少模型的复杂度,提高模型的泛化能力。
四、批标准化批标准化是一种用来加速神经网络训练的技巧。
它通过对每个隐藏层的输出进行标准化,使得网络更加稳定和收敛更快。
神经网络中的优化算法比较与选择

神经网络中的优化算法比较与选择神经网络是一种模拟人脑思维方式的计算模型,它通过模拟神经元之间的连接和信号传递来实现各种任务。
而神经网络的训练过程中,优化算法的选择对于网络的性能和效果起着至关重要的作用。
本文将对神经网络中常用的优化算法进行比较与选择。
一、梯度下降法梯度下降法是神经网络中最常用的优化算法之一。
其基本思想是通过计算损失函数对于参数的梯度,然后沿着梯度的反方向更新参数,以使损失函数逐渐减小。
梯度下降法具有简单易懂、易于实现的优点,但也存在一些问题。
例如,梯度下降法容易陷入局部最优解,而且在参数空间中搜索的效率较低。
二、随机梯度下降法随机梯度下降法是梯度下降法的一种变种,它在每次迭代时随机选择一个样本进行梯度计算和参数更新。
相比于梯度下降法,随机梯度下降法具有更快的收敛速度和更好的泛化能力。
然而,由于每次迭代只使用一个样本,随机梯度下降法的参数更新存在较大的方差,导致训练过程中的震荡。
三、动量法动量法是一种改进的梯度下降法,它引入了动量项来加速参数更新。
动量项可以理解为模拟物体运动的惯性,使得参数更新时具有一定的“动量”。
动量法的主要优点是能够加速收敛速度,减少震荡。
然而,动量法也存在一些问题,例如可能会导致参数更新过大,难以找到合适的学习率。
四、自适应学习率算法自适应学习率算法是一类根据参数更新情况自动调整学习率的优化算法。
常用的自适应学习率算法有Adagrad、RMSprop和Adam等。
这些算法通过考虑参数的历史梯度信息来调整学习率,从而在训练过程中更好地适应不同的参数更新情况。
自适应学习率算法具有较好的性能和泛化能力,但也存在一些问题,例如对于稀疏数据和大规模网络的适应性较差。
五、其他优化算法除了上述常用的优化算法外,还有一些其他的优化算法值得关注。
例如,L-BFGS算法是一种基于牛顿法的优化算法,它通过近似计算Hessian矩阵的逆来进行参数更新。
L-BFGS算法具有较快的收敛速度和较好的性能,但计算复杂度较高。
常见神经网络模型的使用方法与优化技巧

常见神经网络模型的使用方法与优化技巧神经网络模型是目前深度学习领域最具代表性的模型之一,其在计算机视觉、自然语言处理等领域取得了许多重要的突破。
本文将介绍几种常见的神经网络模型的使用方法与优化技巧,帮助读者更好地理解和应用这些模型。
1. 卷积神经网络(CNN)卷积神经网络是一种主要用于图像处理任务的神经网络模型。
在使用CNN模型时,首先需要进行数据预处理,包括图像尺寸调整、像素归一化等操作。
接着构建CNN模型,可以使用不同的层级结构如卷积层、池化层和全连接层等,通过调整这些层的参数和结构,可以获得不同的性能表现。
在训练过程中,可以采用优化方法如随机梯度下降(SGD)算法来调整模型权重,以最小化损失函数。
此外,还可以通过数据增强、正则化等技巧提升模型的泛化能力。
2. 递归神经网络(RNN)递归神经网络是一种主要用于序列数据处理任务的神经网络模型。
在使用RNN模型时,需要将输入数据表示成序列形式,例如将句子表示成单词的序列。
为了解决长期依赖问题,RNN引入了循环结构,并通过自反馈的方式将过去的信息传递给当前的状态。
在构建RNN模型时,可以使用不同的单元类型如简单循环单元(SimpleRNN)、门控循环单元(GRU)和长短时记忆单元(LSTM)。
在训练过程中,可以使用优化方法如反向传播算法来调整模型参数。
此外,还可以使用注意力机制和双向RNN等技巧来提升模型的表现。
3. 生成对抗网络(GAN)生成对抗网络是一种用于生成新样本的神经网络模型。
GAN由两个子网络组成,分别是生成器和判别器。
生成器网络接收随机噪声作为输入,输出伪造的数据样本。
判别器网络用于评估真实样本和生成样本的区别。
在训练过程中,通过对抗的方式使生成器生成的样本更加接近真实样本。
为了优化GAN模型,可以使用各种损失函数如最小二乘损失函数和交叉熵损失函数。
此外,还可以采用批次标准化、深层监督和生成器判别器平衡等技巧来提升模型的稳定性和生成效果。
神经网络的训练与优化方法

神经网络的训练与优化方法1.梯度下降(Gradient Descent)梯度下降是神经网络中最常用的优化方法之一、其基本原理是通过不断调整网络参数来降低损失函数的值。
具体而言,梯度下降通过计算参数梯度的负方向来更新参数,以减小损失函数的值。
这个过程可以看作是在参数空间中找到损失函数最小值的下降过程。
2.反向传播算法(Backpropagation)反向传播算法是训练神经网络的关键算法之一、它通过不断计算损失函数对每个参数的梯度来更新参数。
反向传播算法基于链式法则,通过递归计算每一层的梯度来得到整个网络的梯度。
反向传播算法为神经网络提供了高效的梯度计算方法,使得网络可以在大规模数据上进行训练。
3.正则化(Regularization)正则化是一种常用的优化方法,用于防止神经网络过拟合。
过拟合是指模型在训练集上表现很好,但在测试集或实际应用场景中表现较差。
正则化通过在损失函数中引入额外的项来控制网络的复杂程度。
常用的正则化方法包括L1正则化、L2正则化以及Dropout等。
4.优化器(Optimizers)优化器是神经网络训练中常用的工具,用于找到损失函数的最小值。
常见的优化器包括随机梯度下降(SGD)、动量优化器(Momentum)、Nesterov动量优化器、Adagrad、RMSProp和Adam等。
它们的目标都是在每次参数更新时调整学习率以提高训练效果,并加速收敛过程。
5.学习率调整(Learning Rate Adjustment)学习率是指网络在训练过程中每次参数更新的步长。
学习率的选择直接影响网络的训练速度和性能。
通常来说,学习率过大可能导致网络不稳定,学习率过小可能导致网络收敛过慢。
因此,一般会采用学习率衰减或自适应学习率的方法来调整学习率。
常见的学习率调整策略有固定衰减、指数衰减、余弦退火等。
6.批量训练(Batch Training)批量训练是指在训练过程中使用一定数量的样本进行参数更新。
神经网络算法的优化策略

神经网络算法的优化策略神经网络算法是机器学习领域内的一种重要方法,它通过对大量的数据进行训练,可以用来解决很多实际问题。
但是,神经网络算法并不完美,存在着一些问题,比如模型过拟合和梯度消失等等。
为了解决这些问题,需要采用一些优化策略。
1. 网络结构的优化网络结构的优化是神经网络算法中最基础的优化策略之一。
它的主要思想是通过对网络结构的设计和改进来提高模型的性能。
一般来说,网络结构的优化可以从以下几个方面入手:(1)增加层数增加网络的层数有助于提高模型的复杂度,从而提高模型的性能。
但是,增加层数也会增加模型的训练难度,需要更多的计算资源和更长的训练时间。
(2)增加节点的数量增加节点的数量也有助于提高模型的复杂度,但需要注意的是,节点数量不宜过大,否则会造成模型过拟合的问题。
(3)使用跨层连接跨层连接指的是将一个层的输出直接输入到另一个层的输入中。
这种连接方式有助于提高网络的参数共享程度和信息流通性,从而提高模型的性能。
2. 优化激活函数激活函数是神经网络算法中非常重要的一部分,它用来处理每个神经元的输出值。
常见的激活函数有sigmoid、tanh和ReLU等等。
但是,这些激活函数存在一些问题,比如sigmoid和tanh函数的梯度在输入值极端时很小,从而导致梯度消失的问题;ReLU函数存在神经元死亡的问题。
为了解决这些问题,可以采用一些优化的激活函数,比如LeakyReLU函数、PReLU函数和ELU函数等等。
(1)LeakyReLU函数LeakyReLU函数是ReLU函数的变种,它在输入值为负数时不是取0值,而是取一个小的常数值,从而避免了ReLU函数出现的神经元死亡问题。
(2)PReLU函数PReLU函数是LeakyReLU函数的变种,它可以自适应地学习负数部分的参数,从而进一步提高模型的性能。
(3)ELU函数ELU函数是一种指数线性单元,它在输入值为负数时的梯度并不会退化,从而避免了梯度消失的问题。
神经网络优化方法

神经网络优化方法神经网络优化方法是改进神经网络的训练过程,以提高其性能和准确性。
在神经网络中,优化方法的目标是寻找最优的权重和偏置,以最小化损失函数。
以下是几种常见的神经网络优化方法:1. 梯度下降法(Gradient Descent):梯度下降法是一种常见且简单的优化方法,它通过求解损失函数对权重和偏置的梯度来更新参数。
根据梯度的方向和大小,将参数沿着负梯度方向进行迭代调整,直至找到最优解。
2. 批量梯度下降法(Batch Gradient Descent):批量梯度下降法是梯度下降法的一种改进方法。
它与梯度下降法的区别在于,批量梯度下降法在每次迭代时使用全部训练样本来计算梯度。
由于计算量较大,因此对于大数据集,批量梯度下降法的训练速度相对较慢。
3. 随机梯度下降法(Stochastic Gradient Descent):随机梯度下降法是梯度下降法的另一种改进方法。
与批量梯度下降法不同的是,随机梯度下降法在每次迭代时只使用一个样本来计算梯度。
这种方法可以加快训练速度,但也可能使收敛过程变得不稳定。
4. 小批量梯度下降法(Mini-batch Gradient Descent):小批量梯度下降法是批量梯度下降法和随机梯度下降法的折中方法。
它在每次迭代时,使用一小部分(通常是2-100个)样本来计算梯度。
这种方法可以加快训练速度,并且具有较好的收敛性。
5. 动量法(Momentum):动量法是一种在梯度下降法的基础上引入动量项的优化方法。
动量法通过累积之前的梯度信息,并将其作为下一次迭代的方向进行调整。
这样可以在参数更新过程中减少震荡,提高收敛速度。
6. 学习率衰减(Learning Rate Decay):学习率衰减是一种动态调整学习率的方法。
在训练的早期,使用较大的学习率可以快速逼近全局最优解,而在训练的后期,使用较小的学习率可以细致调整参数,提高性能。
7. 自适应学习率方法(Adaptive Learning Rate):自适应学习率方法是根据梯度的变化自动调整学习率的方法。
神经网络算法优化指南

神经网络算法优化指南随着人工智能技术的快速发展,神经网络算法在各个领域得到广泛应用,但是如何提高神经网络算法的精度和效率依然是一个挑战。
本文将为大家提供一些神经网络算法优化的指南,帮助您更好地使用神经网络。
一、选取合适的优化器神经网络训练过程中,优化器的选择非常重要,不同的优化器具有不同的优缺点。
传统的优化器如随机梯度下降(SGD)、动量法(Momentum)、Adagrad和Adadelta等,都是单一维度的优化器,相当于探寻最佳权重时只看到函数一维情况下的梯度情况。
近年来,Adam、RMSProp、AdaMax等优化器的出现,使得算法能够在高维度上做出更好的选择,提高了神经网络的效率和精度。
在选择优化器时,需要根据数据的特点和网络结构进行调整与选择。
二、正则化优化正则化是防止过度拟合(overfitting)的一种方法,可以帮助我们训练出更加普适的模型。
神经网络中的正则化通常采用L1和L2正则化方法,这两种方法可以防止权重过大和过拟合,并且可以在训练中减少噪声的干扰,提高模型的精度。
三、批归一化(Batch Normalization)批归一化是一种在神经网络中有效的缓解“ 训练从偏移”的方法,使得神经网络的训练更加稳定,收敛更快,并且可以通过对数据的标准化来加速网络训练过程。
在神经网络中加入批归一化,可以让我们获得更加准确的结果,并且极大地提高网络训练速度。
四、dropout操作Dropout操作是一种防止过拟合的方法,在网络训练时随机地忽略一些神经元,使得网络更加鲁棒。
在实践中,dropout操作可以有效的防止过拟合,并且加速网络的训练和收敛速度,这是一种非常有效的神经网络算法优化方式。
五、使用卷积网络(Convolutional Neural Networks)卷积网络是一种在图像处理和识别领域中非常流行的网络结构。
与全连接网络相比,卷积网络可以通过挖掘局部结构,来捕获许多重要特征,因此对于图像处理和识别任务来说,卷积网络的精度和效率都远远超过了全连接网络。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
机器器学习中,梯度下降法常⽤用来对相应的算法进⾏行行训练。
常⽤用的梯度下降法包含三种不不同的形式,分别是BGD 、SGD 和MBGD ,它们的不不同之处在于我们在对⽬目标函数进⾏行行梯度更更新时所使⽤用的样本量量的多少。
以线性回归算法来对三种梯度下降法进⾏行行⽐比较。
⼀一般线性回归函数的假设函数为:(即有n 个特征)对应的损失函数为下图即为⼀一个⼆二维参数和组对应的损失函数可视化图像:批量量梯度下降法(Batch Gradient Descent ,简称BGD )是梯度下降法最原始的形式,它的具体思路路是在更更新每⼀一参数时都使⽤用所有的样本来进⾏行行更更新,其数学形式如下:深度学习系列列(7):神经⽹网络的优化⽅方法⼀一、Gradient Descent [Robbins and Monro, 1951,Kiefer et al., 1952]=h θ∑j =0n θj x jL (θ)=12m ∑i =1m(h ()−)x i y i 2θ0θ11.1 BGD (Batch Gradient Descent )还是以上⾯面⼩小球的例例⼦子来看,momentum ⽅方式下⼩小球完全是盲⽬目被动的⽅方式滚下的。
这样有个缺三、NAG (Nesterov accelerated gradient )[Nesterov, 1983]点就是在邻近最优点附近是控制不不住速度的。
我们希望⼩小球可以预判后⾯面的“地形”,要是后⾯面地形还是很陡峭,那就继续坚定不不移地⼤大胆⾛走下去,不不然的话就减缓速度。
当然,⼩小球⾃自⼰己也不不知道真正要⾛走到哪⾥里里,这⾥里里以作为下⼀一个位置的近似,将动量量的公式更更改为:相⽐比于动量量⽅方式考虑的是上⼀一时刻的动能和当前点的梯度,⽽而NAG 考虑的是上⼀一时刻的梯度和近似下⼀一点的梯度,这使得它可以先往前探探路路,然后慎重前进。
Hinton 的slides 是这样给出的:其中两个blue vectors 分别理理解为梯度和动能,两个向量量和即为momentum ⽅方式的作⽤用结果。
⽽而靠左边的brown vector 是动能,可以看出它那条blue vector 是平⾏行行的,但它预测了了下⼀一阶段的梯度是red vector ,因此向量量和就是green vector ,即NAG ⽅方式的作⽤用结果。
momentum 项和nesterov 项都是为了了使梯度更更新更更加灵活,对不不同情况有针对性。
但是,⼈人⼯工设置⼀一些学习率总还是有些⽣生硬,接下来介绍⼏几种⾃自适应学习率的⽅方法训练深度⽹网络的时候,可以让学习率随着时间退⽕火。
因为如果学习率很⾼高,系统的动能就过⼤大,参数向量量就会⽆无规律律地变动,⽆无法稳定到损失函数更更深更更窄的部分去。
对学习率衰减的时机把握很有技巧:如果慢慢减⼩小,可能在很⻓长时间内只能浪费计算资源然后看着它混沌地跳动,实际进展很少;但如果快速地减少,系统可能过快地失去能量量,不不能到达原本可以到达的最好位置。
通常,实现学习率退⽕火有三种⽅方式:θ−γv t −1=γ+ηJ (θ−γ)v t v t −1∇θv t −1θ=θ−v t四、学习率退⽕火Adadelta 是Adagrad 的⼀一种扩展,以缓解Adagrad 学习速率单调递减问题的算法。
Adadelta 不不是对过去所有时刻的梯度平⽅方进⾏行行累加,⽽而是将累加时刻限制在窗⼝口⼤大⼩小为的区间。
但梯度累加没有采⽤用简单的存储前个时刻的梯度平⽅方,⽽而是递归地定义为过去所有时刻梯度平⽅方的decaying average 。
时刻的running average 仅仅依赖于之前average 和当前的梯度:类似momentum term ,我们将取值在0.9附近。
简介起⻅见,我们从参数更更新向量量⻆角度重写普通SGD 的参数更更新:Adagrad 中我们推倒的参数更更新向量量现在就以下述形式出现:现在我们简单地将对⻆角矩阵替换为过去时刻梯度平⽅方的decaying average :5.3 Adadelta [Zeiler, 2012]w w E [g 2]t t E =γE +(1−γ)[]g 2t []g 2t −1g 2tγΔθt Δ=−η·θt g t ,i=+Δθt +1θt θtΔ=−⊙θt η+ϵG t ‾‾‾‾‾‾√g tE [g 2]t =−⊙η由于分⺟母是root mean squared (RMS) error criterion of the gradient ,则上⾯面公式可以替换为:作者发现(和SGD ,Momentum 或者Adagrad ⼀一样)上述更更新中的单元不不匹配,即只有部分参数进⾏行行更更新,也就是参数和更更新应该有着相同的hypothetical units 。
为了了实现这个⽬目的,他们⾸首先定义了了另外⼀一个exponentially decaying average ,这⼀一次对更更新参数的平⽅方进⾏行行操作,⽽而不不只是对梯度的平⽅方进⾏行行操作:参数更更新中的root mean squared error 则为:将以前的更更新规则中的学习速率替换为参数更更新的RMS ,则得到Adadelta 更更新规则:由于Adadelta 更更新规则中没有了了学习速率这⼀一项,我们甚⾄至都不不⽤用对学习速率进⾏行行设置。
训练初中期,加速效果不不错,很快训练后期,反复在局部最⼩小值附近抖动Adaptive Moment Estimation (Adam)是另外⼀一种对每个参数进⾏行行⾃自适应学习速率计算的⽅方法,除了了像Adadelta 和RMSprop ⼀一样保存去过梯度平⽅方和的exponentially decaying average 外,Adam 还保存类似momentum ⼀一样过去梯度的exponentially decaying average 。
它看起来像是RMSProp 的动量量版。
和分别是分别是梯度的⼀一阶矩(均值)和⼆二阶距(偏⽅方差)的估计,由于和由全零的向量量来初始化,Adam 的作者观察到他们会被偏向0,特别是在initial time steps 或decay rates 很⼩小的时候(即和都接近于1),于是他们通过计算bias-corrected ⼀一阶矩和⼆二阶矩的估计低消Δ=−⊙θt ηE[+ϵg 2]t ‾‾‾‾‾‾‾‾‾‾√g t Δ=−θt ηRMS [g ]tE [Δ=γ·E [Δ+(1−γ)Δθ2]t θ2]t θ2RMS [Δθ=]t E [Δ+ϵθ2]t ‾‾‾‾‾‾‾‾‾‾‾√Δ=−·θt RMS [Δθ]t RMS [g ]tg t =+Δθθt +1θt 5.4 Adam [Kingma and Ba, 2014]=·+(1−β)·m t β1m t −1g t=·+(1−)·v t β2v t −1β2g 2tm t v t m t v t β1β2掉偏差。
然后使⽤用上述项和Adadelta 和RMSprop ⼀一样进⾏行行参数更更新,可以得到Adam 的更更新规则:Adam 的完整更更新过程如下图所示,其中它推荐默认设置,在实际操作中,推荐将Adam 作为默认的算法,⼀一般⽽而⾔言跑起来⽐比RMSProp 要好⼀一些。
但也可以试试SGD+Nesterov 动量量。
下⾯面两幅动画让我们直观感受⼀一些优化算法的优化过程。
在第⼀一幅动图中,我们看到他们随着时间推移在损失表⾯面的轮廓(contours of a loss surface )的移动。
注意到Adagrad 、Adadelta 和RMSprop ⼏几乎⽴立刻转向正确的⽅方向并快速收敛,但是Momentum 和NAG 被引导偏离了了轨道。
这让我们感觉就像看滚下⼭山的⼩小球。
然⽽而,由于NAG 拥=mm 1−βt 1=v v 1−βt 2=−θt +1θt η+ϵv ‾‾‾‾‾√m α=0.001,=0.9,=0.999,ϵ=β1β210−8六、算法可视化有通过远眺所提⾼高的警惕,它能够修正他的轨迹并转向极⼩小值。
第⼆二幅动图中为各种算法在saddle point(鞍点)上的表现。
所谓saddle point也就是某个维度是positive slope,其他维度为negative lope。
前⽂文中我们已经提及了了它给SGD所带来的困难。
注意到SGD、Momentum和NAG很难打破对称,虽然后两者最后还是逃离了了saddle point。
然⽽而Adagrad, RMSprop, and Adadelta迅速地沿着negative slope下滑。
在深度⽹网络背景下,第⼆二类常⽤用的最优化⽅方法是基于⽜牛顿法的,其迭代如下:这⾥里里是Hessian 矩阵,它是函数的⼆二阶偏导数的平⽅方矩阵。
是梯度向量量,这和梯度下降中⼀一样。
直观理理解上,Hessian 矩阵描述了了损失函数的局部曲率,从⽽而使得可以进⾏行行更更⾼高效的参数更更新。
具体来说,就是乘以Hessian 转置矩阵可以让最优化过程在曲率⼩小的时候⼤大步前进,在曲率⼤大的时候⼩小步前进。
需要重点注意的是,在这个公式中是没有学习率这个超参数的,这相较于⼀一阶⽅方法是⼀一个巨⼤大的优势。
然⽽而上述更更新⽅方法很难运⽤用到实际的深度学习应⽤用中去,这是因为计算(以及求逆)Hessian 矩阵操作⾮非常耗费时间和空间。
举例例来说,假设⼀一个有⼀一百万个参数的神经⽹网络,其Hessian 矩阵⼤大⼩小就是[1,000,000 x 1,000,000],将占⽤用将近3,725GB 的内存。
这样,各种各样的拟-⽜牛顿法就被发明出来⽤用于近似转置Hessian 矩阵。
在这些⽅方法中最流⾏行行的是L-BFGS ,L-BFGS 使⽤用随时间的梯度中的信息来隐式地近似(也就是说整个矩阵是从来没有被计算的)。
然⽽而,即使解决了了存储空间的问题,L-BFGS 应⽤用的⼀一个巨⼤大劣势是需要对整个训练集进⾏行行计七、⼆二阶⽅方法x ←x −[Hf (x )∇f (x )]−1Hf (x )∇f (x )算,⽽而整个训练集⼀一般包含⼏几百万的样本。
和⼩小批量量随机梯度下降(mini-batch SGD)不不同,让L-BFGS在⼩小批量量上运⾏行行起来是很需要技巧,同时也是研究热点。
实践时在深度学习和卷积神经⽹网络中,使⽤用L-BFGS之类的⼆二阶⽅方法并不不常⻅见。
相反,基于(Nesterov的)动量量更更新的各种随机梯度下降⽅方法更更加常⽤用,因为它们更更加简单且容易易扩展。
参考资料料[1] Kiefer, J., Wolfowitz, J., et al. (1952). Stochastic estimation of the maximum of a regression function. The Annals of Mathematical Statistics, 23(3):462–466.[2] Nesterov, Y. (1983). A method of solving a convex programming problem with convergence rate o (1/k2). In Soviet Mathematics Doklady, volume 27, pages 372–376.[3] Duchi, J., Hazan, E., and Singer, Y. (2011). Adaptive subgradient methods for online learning and stochastic optimization. The Journal of Machine Learning Research, 12:2121–2159.[4] Hinton. Neural Networks for Machine Learning[5] Zeiler, M. D. (2012). Adadelta: An adaptive learning rate method.[6] Kingma, D. and Ba, J. (2014). Adam: A method for stochastic optimization.[7] CS231n Convolutional Neural Networks for Visual Recognition.。