神经网络之优化方法

1、前言

    神经网络的优化方法有很多,前面学习了神经网络参数的初始化方法,好的初始化方法可以让网络训练的更快,也可能让网络收敛的更好。同样,好的优化方法同样具有这样的作用。注意:谈论优化方法时候,并没有修改损失函数,只是修改了网络学习过程中参数的更新方法。

    之前经常使用梯度下降法来优化网络,今天学习了梯度下降法的几个改进版本:Momentum、RMSprop、Adam

    网络学习中,梯度下降法的经典公式为:


    梯度下降法一般有三种常见的形式(梯度更新的公式并没有本质性地改变):

(1)随机梯度下降法(stochastic gradient descent)

    该方法是最Navie的,每次计算一个样本,然后更新参数,显然容易受噪声干扰,从而导致损失下降曲线震荡,甚至出现损失中途一度上升的现象。另外,一次计算一个样本,效率很低,因此网络学习很慢。

(2)梯度下降法(Gradient descent)

    该方法相对于随机梯度下降法,指示的是一次训练所有样本,然后再更新参数。这种形式的好处是每次计算全部样本的梯度,然后用它们的均值去更新参数,能够有效避免噪声干扰现象。由于采用了向量化技术(全部样本几乎同时计算),numpy能够大大加速计算过程,所以计算速度较快。另外,由于能够有效避免或减小噪声干扰问题,所以学习率可以设置的大一些。

    缺点:数据量大的时候无法使用,几千个样本的数据量还是可以的,但如果是几万、几十万、甚至数百万的数据呢,显然无法之前全部计算,此时网络训练速度反而很慢。

(3)小批量梯度下降法(mini-batch gradient descent)

    综合上述两种方法,面对大数据情况,每次使用一部分数据来计算,并且优化网络,而不是只用一个数据或者全部数据。这样,计算速度得到了大大提高,同时又一定程度上避免了噪声干扰问题(还有有一些)。考虑到计算机储存方式问题,每个小批量的size一般取64、128、512、1024等,这样计算会更快(未验证)。

    简单写下流程:

    a、将全部样本随机打乱

    b、按照设定的batch-size划分数据为若干个batch,最后一个batch大小可能不是设定值,但一样要参与计算

    c、以batch为单位训练网络,每个batch计算后都要更新参数w和b,所有样本都做了一边算是一代

    d、多次执行a-c以完成多个iterations

2、Momentum

    momentum是动量的意思,其实就是对dw做一个一阶平均滤波,十分简单。通过一阶平均滤波,可以平滑dw的变化,也可以让dw加入滞后因子,到达谷点后因为滞后因素,依然会向前冲,如果对面是一个较低的山峰,说不定就冲过去了,也就是它能让网络在学习过程中跳出一些局部最优点。公式如下:


    beta是需要tune的超参数,一般设置为0.9,这里用beta1为了避免与后面的RMSprop的beta搞混。

    显然,新的dw会以(1-beta)的系数加入Vdw,并且Vdw也只会保留beta倍,所以,如果将多次迭代的式子展开,可以看到每次计算的dw的权值承指数衰减。若干次迭代后,比如t次,dw[1]的系数变为了beta**(t-1)*(1-beta),已经很小了,可以忽略。这里不再深入。到此足够理解和使用Momentum了。

    若Vdw一开始初始化为0,则Vdw一开始并不准确,会缓慢上升到准确值。原因是,比如,第一次计算Vdw=(1-beta)dw,该值明显小于dw,所以可以使用修正方法:

Vdw(corrected)=Vdw/(1 - beta**t) ,其中t是迭代次数

3、RMSprop

    Momentum是对导数dw和db做一阶惯性滤波,而RMSprop是对dw**2和db**2做一阶惯性滤波得到Sdw和Sdb,然后用用这些滤波结果对dw和db进行标准化,最后用标准化后的导数来更新梯度。公式如下:


    beta2常常是一个很接近1的scalar,比如0.99、0.999,更新很缓慢的。从公式中可以看出,sqrt(Sdw)项其实起到了动态修改学习率的作用,若权值平方和过大,学习率相应会减小。

4、Adam

    Adam可谓目前表现最好的优化方法之一,它综合了Momentum和RMSprop的优点,将Momentum的V除以RMSprop的S,就是Adam了,也就是对一阶惯性滤波后的dw进行标准化(准标准化)。公式:


db公式类似。

    corrected主要是为了避免一开始时候V不正确引入的。t是Adam迭代次数,随着t增加,corrected的分母趋于1.



  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
摘要:数据的上界和下界概念在人工智能领域中使用得非常普 遍,在粗糙集理论中尤为明显,随着粗集理论的不断发展, 上下边界的概念得到更大范围内的应用。本文将经典的神经 网络和粗集理论有机地结合,提出了一种基于粗集理论的神 经网络,并应用神经网络的粗糙模式建立预测模型。在粗糙 模式下每个神经网络的输入值不是一个单值而是一对值,即 上下边界数据,经典的神经网络在预测模型中采用的是单值 数据作为输入值,但是在一些应用中会产生问题,如医院要 对病人进行病情的跟踪观察,并希望对其未来的情况进行预 测,这时经典的神经网络就难以适用了,对于一个病人来 说,心跳次数,脉搏次数,血压值,体温等项指标在一天当 中需要进行几次测试,问题在于对于同一项指标每次测量值 也是不同的,因此得到的是一组数据而非单个数据,由于经 典的神经网络对于外界的信息的传导需要的是单值输入,究 竟应该取测量值中的哪个值作为输入就难以确定,通常的方 法是将测量数据进行数学平均,以均值作为网络的输入,但 是这可能导致具有重要性质数据的泛化,而粗糙集理论则可 以很好地解决这个问题,粗糙集数据的上下边界可以将病人 一天的各项指标测量值的上界和下界数据作为粗糙神经元的 输入。
神经网络算法优化方法是为了提高神经网络模型的性能和效果而进行的一系列技术手段。以下是几种常见的神经网络算法优化方法: 1. 梯度下降法(Gradient Descent):梯度下降法是一种常用的优化方法,通过计算损失函数对模型参数的梯度,并沿着梯度的反方向更新参数,以最小化损失函数。 2. 随机梯度下降法(Stochastic Gradient Descent,SGD):SGD是梯度下降法的一种变体,它每次只使用一个样本来计算梯度并更新参数,相比于传统的梯度下降法,SGD更加高效。 3. 动量法(Momentum):动量法引入了一个动量项,用于加速收敛过程。它通过累积之前的梯度信息,并在更新参数时考虑历史梯度的影响,可以帮助跳出局部最优解。 4. 自适应学习率方法(Adaptive Learning Rate):自适应学习率方法根据模型参数的更新情况自动调整学习率的大小。常见的方法有AdaGrad、RMSprop和Adam等。 5. 正则化(Regularization):正则化是一种常用的防止过拟合的方法。常见的正则化方法有L1正则化和L2正则化,它们通过在损失函数中引入正则项来限制模型参数的大小。 6. 批归一化(Batch Normalization):批归一化是一种用于加速神经网络训练的技术,通过对每个批次的输入进行归一化,可以使得网络更加稳定和收敛更快。 7. Dropout:Dropout是一种常用的正则化方法,它在训练过程中随机将一部分神经元的输出置为0,可以减少神经网络的过拟合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值