主要内容G.ydF4y2Ba

火车和应用多层浅神经网络G.ydF4y2Ba

提示G.ydF4y2Ba

训练深度学习网络,使用G.ydF4y2BaTrainnetwork.G.ydF4y2Ba。G.ydF4y2Ba

本主题介绍了典型的多层浅网络工作流程的一部分。有关更多信息和其他步骤,请参阅G.ydF4y2Ba多层浅神经网络和背部训练G.ydF4y2Ba。G.ydF4y2Ba

当初始化网络权重和偏差时,网络已准备好进行培训。可以训练多层前馈网络以用于功能近似(非线性回归)或模式识别。培训过程需要一组适当的网络行为网络输入示例G.ydF4y2BaP.G.ydF4y2Ba和目标输出G.ydF4y2BaT.G.ydF4y2Ba。G.ydF4y2Ba

培训一个神经网络的过程涉及调整网络的权重和偏差值以优化网络性能,如网络性能函数所定义G.ydF4y2Banet.performfcn.G.ydF4y2Ba。馈送网络的默认性能函数是G.ydF4y2Ba均方错误G.ydF4y2BaMSEG.ydF4y2Ba- 网络输出之间的平均平均误差G.ydF4y2BaA.G.ydF4y2Ba和目标输出G.ydF4y2BaT.G.ydF4y2Ba。它定义如下:G.ydF4y2Ba

F.G.ydF4y2Ba =G.ydF4y2Ba mG.ydF4y2Ba S.G.ydF4y2Ba E.G.ydF4y2Ba =G.ydF4y2Ba 1G.ydF4y2Ba NG.ydF4y2Ba σ.G.ydF4y2Ba 我G.ydF4y2Ba =G.ydF4y2Ba 1G.ydF4y2Ba NG.ydF4y2Ba (G.ydF4y2Ba E.G.ydF4y2Ba 我G.ydF4y2Ba )G.ydF4y2Ba 2G.ydF4y2Ba =G.ydF4y2Ba 1G.ydF4y2Ba NG.ydF4y2Ba σ.G.ydF4y2Ba 我G.ydF4y2Ba =G.ydF4y2Ba 1G.ydF4y2Ba NG.ydF4y2Ba (G.ydF4y2Ba T.G.ydF4y2Ba 我G.ydF4y2Ba -G.ydF4y2Ba A.G.ydF4y2Ba 我G.ydF4y2Ba )G.ydF4y2Ba 2G.ydF4y2Ba

(单个平方误差也可以加权。看到G.ydF4y2Ba用错误重量火车神经网络G.ydF4y2Ba。)有两种不同的方式可以实现培训:增量模式和批处理模式。在增量模式下,计算梯度,并且在将每个输入应用于网络后更新权重。在批处理模式下,训练集中的所有输入都在更新权重之前应用于网络。本主题介绍批量模式培训G.ydF4y2Ba训练G.ydF4y2Ba命令。逐步培训G.ydF4y2Ba适应G.ydF4y2Ba讨论命令G.ydF4y2Ba适应的增量培训G.ydF4y2Ba。对于大多数问题,在使用深度学习工具箱™软件时,批量培训比增量培训更快,产生较小的误差。G.ydF4y2Ba

对于培训多层前馈网络,任何标准数值优化算法都可用于优化性能功能,但是有几个关键的关键函数对神经网络训练显示出优异的性能。这些优化方法使用网络性能的梯度相对于网络权重,或相对于权重的网络错误的Jacobian。G.ydF4y2Ba

使用称为的技术计算梯度和雅可族织物G.ydF4y2Babackpropagation.G.ydF4y2Ba算法涉及通过网络向后执行计算。使用Chain规则来导出BackPropagation计算,并在第11章(对于梯度)和12(对于雅各比)中描述[G.ydF4y2BaHDB96.G.ydF4y2Ba]。G.ydF4y2Ba

训练算法G.ydF4y2Ba

作为培训方式的说明,考虑最简单的优化算法 - 梯度下降。它在性能函数最快降低的方向上更新网络权重和偏置,梯度的负面。该算法的一次迭代可以写为G.ydF4y2Ba

X.G.ydF4y2Ba K.G.ydF4y2Ba +G.ydF4y2Ba 1G.ydF4y2Ba =G.ydF4y2Ba X.G.ydF4y2Ba K.G.ydF4y2Ba -G.ydF4y2Ba α.G.ydF4y2Ba K.G.ydF4y2Ba G.G.ydF4y2Ba K.G.ydF4y2Ba

在哪里G.ydF4y2BaX.G.ydF4y2BaK.G.ydF4y2Ba是当前权重和偏见的矢量,G.ydF4y2BaG.G.ydF4y2BaK.G.ydF4y2Ba是当前的渐变和αG.ydF4y2BaK.G.ydF4y2Ba是学习率。在网络收敛之前迭代该等式。G.ydF4y2Ba

在下表中显示了深入学习工具箱软件中可用的培训算法列表,并使用基于梯度或基于雅曲族裔的方法。G.ydF4y2Ba

有关几种这些技术的详细描述,请参见Hagan,M.T.,H.B.。demuth和m.h.Beale,G.ydF4y2Ba神经网络设计G.ydF4y2Ba,波士顿,马:PWS出版,1996年,第11章和第12章。G.ydF4y2Ba

功能G.ydF4y2Ba

算法G.ydF4y2Ba

Trainlm.G.ydF4y2Ba

Levenberg-MarquardtG.ydF4y2Ba

Trainbr.G.ydF4y2Ba

贝叶斯正则化G.ydF4y2Ba

训练博夫G.ydF4y2Ba

BFGS Quasi-NewtonG.ydF4y2Ba

训练rp.G.ydF4y2Ba

弹性反向化G.ydF4y2Ba

Trainscg.G.ydF4y2Ba

缩放共轭梯度G.ydF4y2Ba

TrainCGB.G.ydF4y2Ba

与鲍威尔/ beale重新启动的共轭梯度G.ydF4y2Ba

TrainCGF.G.ydF4y2Ba

Fletcher-Powell共轭梯度G.ydF4y2Ba

TrainCGP.G.ydF4y2Ba

Polak-ribiére共轭渐变G.ydF4y2Ba

火车G.ydF4y2Ba

一步割G.ydF4y2Ba

traingdx.G.ydF4y2Ba

可变学习率梯度下降G.ydF4y2Ba

traingdm.G.ydF4y2Ba

梯度下降动量G.ydF4y2Ba

TRAINGD.G.ydF4y2Ba

梯度下降G.ydF4y2Ba

最快的训练功能通常是G.ydF4y2BaTrainlm.G.ydF4y2Ba,它是默认的培训函数G.ydF4y2BaFeedforwardNet.G.ydF4y2Ba。拟牛顿方法,G.ydF4y2Ba训练博夫G.ydF4y2Ba,也很快。这两种方法往往对大型网络(具有数千个重量)效率较低,因为它们需要更多的内存和更多的计算时间。另外,G.ydF4y2BaTrainlm.G.ydF4y2Ba在功能拟合(非线性回归)问题上更好地执行比模式识别问题更好。G.ydF4y2Ba

在培训大型网络时,以及培训模式识别网络时,G.ydF4y2BaTrainscg.G.ydF4y2Ba和G.ydF4y2Ba训练rp.G.ydF4y2Ba是良好的选择。他们的记忆要求相对较小,但它们比标准梯度下降算法快得多。G.ydF4y2Ba

看G.ydF4y2Ba选择多层神经网络训练功能G.ydF4y2Ba为了完全比较上表中所示的训练算法的性能。G.ydF4y2Ba

作为关于术语的说明,术语“反向化”有时用于专门用于梯度下降算法,当应用于神经网络训练时。这里不使用该术语,因为通过在上面列出的所有训练函数中应用通过对网络来向后执行计算来计算梯度和雅加诺伯的过程。可以更清楚地使用正在使用的特定优化算法的名称,而不是单独使用术语反向化。G.ydF4y2Ba

此外,多层网络有时被称为反向桥张化网络。然而,用于计算多层网络中的梯度和雅各比亚的反向化技术也可以应用于许多不同的网络架构。实际上,可以通过BackProjagation进程使用深度学习工具箱软件来计算具有可微差传递函数,重量函数和净输入函数的任何网络的渐变和雅典人。您甚至可以创建自己的自定义网络,然后使用上表中的任何培训功能培训它们。梯度和雅可比人将自动计算您。G.ydF4y2Ba

训练榜样G.ydF4y2Ba

要说明培训过程,请执行以下命令:G.ydF4y2Ba

加载G.ydF4y2BaBodyfat_dataset.G.ydF4y2Banet = feedforwardnet(20);[净,tr] =火车(Net,BodyfatInputs,Bodyfattars);G.ydF4y2Ba

请注意,您无需发出G.ydF4y2Ba配置G.ydF4y2Ba命令,因为配置由自动完成G.ydF4y2Ba训练G.ydF4y2Ba功能。培训期间将出现训练窗口,如下图所示。(如果在培训期间不想显示此窗口,则可以设置参数G.ydF4y2Banet.trainparam.showwindow.G.ydF4y2Ba到目前为止G.ydF4y2Ba假G.ydF4y2Ba。如果要在命令行中显示培训信息,则可以设置参数G.ydF4y2Banet.trainparam.showcommandline.G.ydF4y2Ba到目前为止G.ydF4y2Ba真实G.ydF4y2Ba。)G.ydF4y2Ba

此窗口显示数据已被分割使用G.ydF4y2Ba分开G.ydF4y2Ba功能,levenberg-marquardt(G.ydF4y2BaTrainlm.G.ydF4y2Ba)训练方法已被使用与均方误差性能函数一起使用。回想一下,这些是默认设置G.ydF4y2BaFeedforwardNet.G.ydF4y2Ba。G.ydF4y2Ba

在培训期间,在培训窗口中不断更新进度。大多数兴趣是性能,性能梯度的大小和验证检查的数量。梯度的大小和验证检查的数量用于终止培训。由于培训达到最低性能,梯度将变得非常小。如果梯度的幅度小于1E-5,则培训将停止。可以通过设置参数来调整此限制G.ydF4y2Banet.trainparam.min_grad.G.ydF4y2Ba。验证检查的数量表示验证性能无法减少的连续迭代次数。如果此数字达到6(默认值),则培训将停止。在此过程中,由于验证检查的数量,您可以看到培训确实停止了。您可以通过设置参数来更改此标准G.ydF4y2Banet.trainparam.max_fail.G.ydF4y2Ba。(请注意,由于初始权重和偏差的随机设置,您的结果可能与下图中所示的结果不同。)G.ydF4y2Ba

还有其他标准可用于停止网络培训。它们列于下表中。G.ydF4y2Ba

参数G.ydF4y2Ba

停止标准G.ydF4y2Ba

min_grad.G.ydF4y2Ba

最小梯度幅度G.ydF4y2Ba

max_fail.G.ydF4y2Ba

最大验证数量增加G.ydF4y2Ba

时间G.ydF4y2Ba

最大培训时间G.ydF4y2Ba

进球G.ydF4y2Ba

最小性能值G.ydF4y2Ba

时代G.ydF4y2Ba

最大培训次数(迭代)G.ydF4y2Ba

如果点击该培训也将停止G.ydF4y2Ba停止培训G.ydF4y2Ba培训窗口中的按钮。如果在许多迭代中,如果性能函数未能减少,则可能需要执行此操作。通过重新发布来始终可以继续培训G.ydF4y2Ba训练G.ydF4y2Ba上面显示的命令。它将继续从前行的运行完成培训网络。G.ydF4y2Ba

从培训窗口中,您可以访问四个绘图:性能,培训状态,错误直方图和回归。性能图显示了性能函数与迭代号的值。它绘制培训,验证和测试表演。训练状态图显示了其他训练变量的进度,例如梯度幅度,验证检查的数量等。错误直方图图显示了网络错误的分布。回归曲线显示网络输出和网络目标之间的回归。您可以使用直方图和回归绘图来验证网络性能,如讨论的那样G.ydF4y2Ba培训后分析浅层神经网络性能G.ydF4y2Ba。G.ydF4y2Ba

使用网络G.ydF4y2Ba

在培训并验证网络后,网络对象可用于计算对任何输入的网络响应。例如,如果要在构建数据集中找到对第五个输入向量的网络响应,则可以使用以下内容G.ydF4y2Ba

a = net(BodyFatInputs(:,5))G.ydF4y2Ba
a = 27.3740.G.ydF4y2Ba

如果尝试此命令,则可能会与网络初始化网络时随机数生成器的状态不同。下面,调用网络对象以计算体脂数据集中所有输入向量的并发集的输出。这是批量模式的模拟形式,其中所有输入向量都放置在一个矩阵中。这比一次呈现载体更有效。G.ydF4y2Ba

a = net(bodyfatinputs);G.ydF4y2Ba

每次训练神经网络时,都会导致不同的解决方案,因为不同的初始权重和偏置值以及数据的不同分区训练,验证和测试集。结果,在同一问题上训练的不同神经网络可以为相同的输入提供不同的输出。为了确保已经发现了良好准确性的神经网络,重新恢复了几次。G.ydF4y2Ba

如果需要更高的精度,则存在几种用于改善初始解决方案的技术。金宝搏官方网站有关更多信息,请参阅G.ydF4y2Ba提高浅层神经网络泛化,避免过度装备G.ydF4y2Ba。G.ydF4y2Ba