主要内容

Traingda

带有自适应学习率反向传播的梯度下降

描述

net.trainfcn ='traingda'设置网络Trainfcn财产。

[[训练的网络,,,,tr] =火车(,...))训练网络Traingda

Traingda是一种网络训练功能,可根据自适应学习率根据梯度下降来更新重量和偏差值。

训练是根据Traingda培训参数,此处显示其默认值:

  • net.trainparam.epochs- 最大训练时期数量。默认值为1000。

  • net.trainparam.goal- 性能目标。默认值为0。

  • net.trainparam.lr- 学习率。默认值为0.01。

  • net.trainparam.lr_inc- 比率提高学习率。默认值为1.05。

  • net.trainparam.lr_dec- 比率降低学习率。默认值为0.7。

  • net.trainparam.max_fail- 最大验证失败。默认值是6

  • net.trainparam.max_perf_inc- 最大性能提高。默认值是1.04

  • net.trainparam.min_grad- 最低性能梯度。默认值是1E-5

  • net.trainparam.show- 显示之间的时期(没有显示)。默认值为25。

  • net.trainparam.showcommandline- 生成命令行输出。默认值是错误的

  • net.trainparam.showwindow- 表演训练GUI。默认值是真的

  • net.trainparam.time- 最大的时间在几秒钟内进行训练。默认值是inf

输入参数

全部收缩

输入网络,指定为网络对象。要创建一个网络对象,请使用例如feedforwardnet或者Narxnet

输出参数

全部收缩

受过训练的网络,返回网络目的..

训练记录(时代perf),作为一个结构返回,其字段取决于网络培训功能(net.net.trainfcn)。它可以包括:

  • 培训,数据部以及性能功能和参数

  • 用于培训,验证和测试集的数据部门指数

  • 用于培训验证和测试集的数据部门面具

  • 时期数(num_epochs)和最好的时代(best_epoch)。

  • 培训状态名称列表(状态)。

  • 每个州名称的字段记录其在整个培训中的价值

  • 最佳网络的性能(best_perf,,,,best_vperf,,,,best_tperf

更多关于

全部收缩

网络使用

您可以创建一个使用的标准网络Traingdafeedforwardnet或者cascadeforwardnet。准备一个自定义网络接受培训Traingda,,,,

  1. net.trainfcn'traingda'。这设置Net.TrainParamTraingda的默认参数。

  2. Net.TrainParam属性到所需值。

无论哪种情况,请致电火车随之而来的网络训练网络Traingda

帮助Feed​​forwardnet帮助cascadeforwardnet举些例子。

带有自适应学习率反向传播的梯度下降

随着标准陡峭下降,学习率在整个训练过程中保持不变。该算法的性能对学习率的正确设定非常敏感。如果学习率太高,则算法可能会振荡并变得不稳定。如果学习率太小,则该算法需要太长时间来收敛。在培训前确定学习率的最佳设置是不切实际的,实际上是最佳的随着算法在整个性能表面移动,学习率在训练过程中变化。

如果允许学习率在训练过程中变化,则可以提高最陡峭的下降算法的性能。自适应学习率试图使学习步长尽可能大,同时保持学习稳定。学习率对局部误差表面的复杂性有反应。

适应性学习率需要在使用的培训程序中进行一些更改Traingd。首先,计算初始网络输出和错误。在每个时期,新的权重和偏见是使用当前学习率计算的。然后计算新的输出和错误。

与动量一样,如果新错误超过旧错误的比率超过预定义的比率,max_perf_inc(通常为1.04),丢弃了新的权重和偏见。此外,学习率降低(通常是通过乘以lr_dec= 0.7)。否则,将保留新的重量等。如果新错误小于旧错误,则学习率会提高(通常是通过乘以lr_inc= 1.05)。

该过程提高了学习率,但仅在网络可以学习而不会大大增加错误的程度上增加了学习率。因此,在当地地形获得了近乎理想的学习率。当更大的学习率可能导致学习稳定时,学习率就会提高。当学习率太高而无法保证误差减少时,直到稳定学习恢复为止。

尝试神经网络设计示范nnd12vl[[HDB96]用于说明性能可变学习率算法。

该功能实施了具有自适应学习率的反向传播培训Traingda,就像Traingd,除了其他培训参数max_perf_inc,,,,lr_dec, 和lr_inc。这是训练以前的两层网络的称呼:

p = [-1 -1 2 2;0 5 0 5];t = [-1 -1 1 1];net = feedforwardnet(3,'traingda');net.trainparam.lr = 0.05;net.trainparam.lr_inc = 1.05;net =火车(net,p,t);y = net(p)

算法

Traingda只要其重量,净输入和传输功能具有衍生功能,就可以训练任何网络。

反向传播用于计算性能的导数dperf关于重量和偏差变量X。每个变量根据梯度下降进行调整:

dx = lr*dperf/dx

在每个时期,如果绩效向目标降低,则学习率会通过因素提高lr_inc。如果性能增加超过因素max_perf_inc,学习率由因素调整lr_dec并且没有做出提高性能的变化。

当发生任何这些条件时,训练停止:

  • 最大数量时代(重复)已达到。

  • 最大数量时间超过。

  • 性能最小化目标

  • 性能梯度低于min_grad

  • 验证性能(验证错误)的增加超过max_fail自上次减少以来(使用验证时)。

版本历史记录

在R2006a之前引入

也可以看看

|||