主要内容

培训选项

深度学习神经网络的训练选择

描述

例子

选项=培训选项(solverName返回指定的优化器的训练选项solverName.要训练一个网络,使用训练选项作为输入参数Trainnetwork.函数。

例子

选项=培训选项(solverName名称,价值使用一个或多个名称值对参数指定的其他选项返回培训选项。

例子

全部崩溃

创建一组选项来训练网络使用随机梯度下降与动量。每5个周期将学习率降低0.2倍。将训练的最大纪元数设置为20,并在每次迭代中使用包含64个观察值的小批处理。打开训练进度图。

选项=培训选项(“sgdm”...“LearnRateSchedule”“分段”...“LearnRateDropFactor”, 0.2,...“LearnRateDropPeriod”5,...“MaxEpochs”, 20岁,...“MiniBatchSize”,64,...“阴谋”“培训进度”
选择= TrainingOptionsSGDM属性:动力:0.9000 InitialLearnRate: 0.0100 LearnRateSchedule:“分段”LearnRateDropFactor: 0.2000 LearnRateDropPeriod: 5 L2Regularization: 1.0000 e-04 GradientThresholdMethod:“l2norm”GradientThreshold:正MaxEpochs: 20 MiniBatchSize: 64详细:1 VerboseFrequency: 50 ValidationData:[] ValidationFrequency: 50 ValidationPatience:正洗牌:“一旦”CheckpointPath:“ExecutionEnvironment:‘汽车’WorkerLoad: [] OutputFcn:[]阴谋:“训练进步”SequenceLength:“最长”SequencePaddingValue: 0 SequencePaddingDirection:“对”DispatchInBackground: 0 ResetInputNormalization: 1 BatchNormalizationStatistics:“人口”OutputNetwork:“最后一次迭代的”

当你训练网络进行深度学习时,监控训练进度通常是有用的。通过绘制培训期间的各种指标,您可以了解培训是如何进行的。例如,您可以确定网络准确性是否以及以多快的速度提高,以及网络是否开始过度拟合训练数据。

当你指定“培训进度”随着“阴谋”价值培训选项开展网络培训,,Trainnetwork.创建一个图形,并在每次迭代中显示培训指标。每次迭代都是对梯度的估计和网络参数的更新。中指定验证数据培训选项,图中显示每次验证的度量Trainnetwork.验证网络。该图绘制了以下内容:

  • 训练准确性-每个小批量的分类精度。

  • 平滑训练准确性—平滑训练精度,将平滑算法应用到训练精度上获得。与不平滑的精度相比,它的噪声更小,因此更容易发现趋势。

  • 验证准确性-整个验证集的分类精度(使用培训选项).

  • 训练损失平滑培训损失确认损失- - - - - -每个小批次上的损失、平滑版本和验证集上的损失。如果网络的最后一层是classificationLayer,则损失函数为交叉熵损失。有关分类和回归问题的损失函数的更多信息,请参阅输出层

对于回归网络,图中绘制的是均方根误差(RMSE)而不是精度。

该图标记了每次培训时代使用阴影背景。epoch是对整个数据集的完整遍历。

在培训期间,您可以通过单击右上角的停止按钮来停止培训并返回网络的当前状态。例如,当网络的准确性到达高原时,您可能希望停止培训,并且很明显,准确性不再改善。单击“停止”按钮后,可能需要一段时间才能完成培训。一旦培训完成,Trainnetwork.返回经过训练的网络。

当训练结束时,查看结果显示最终确认的准确性和培训完成的原因。如果是“输出网络”训练选项设置为“最后一次迭代”(默认),最终确定的度量与最后的训练迭代相对应。如果是“输出网络”训练选项设置为“best-validation-loss”,最终确定的度量标准对应于验证损失最小的迭代。计算最终验证度量的迭代被标记最终的在情节中。

如果您的网络包含批处理规范化层,那么最终的验证度量可能与训练期间评估的验证度量不同。这是因为用于批处理归一化的均值和方差统计在训练完成后可能是不同的。例如,如果“BatchNormalizationStatisics”训练方法是“人口”然后,在训练之后,软件通过再次通过训练数据来完成批量归一化统计信息,并使用产生的均值和方差。如果是“BatchNormalizationStatisics”训练方法是“移动”,然后软件使用运行估计值来近似训练期间的统计数据,并使用统计数据的最新值。

在右侧,查看有关培训时间和设置的信息。要了解有关培训选项的更多信息,请参阅设置参数和火车卷积神经网络

在培训过程中策划培训进度

训练网络,并在训练过程中绘制训练进度图。

加载训练数据,其中包含5000个数字图像。预留1000个图像用于网络验证。

[XTrain,YTrain]=digitTrain4DArrayData;idx=randperm(size(XTrain,4),1000);XValidation=XTrain(:,:,:,idx);XTrain(:,:,:,idx)=[];YValidation=YTrain(idx);YTrain(idx)=[];

构建网络对数字图像数据进行分类。

layers = [imageInputLayer([28 28 1])]“填充”“一样”)batchNormalizationLayer reluLayer MaxPoolig2dLayer(2,“步”,2)卷积2层(3,16,“填充”“一样”)batchNormalizationLayer reluLayer MaxPoolig2dLayer(2,“步”,2)卷积2层(3,32,“填充”“一样”) batchNormalizationLayer relullayer fulllyconnectedlayer (10) softmaxLayer classificationLayer];

指定网络训练选项。要在训练期间定期验证网络,请指定验证数据。选择“验证频率”值,以便每个epoch大约验证一次网络。在培训过程中规划培训进度,指定“培训进度”随着“阴谋”价值。

选项=培训选项(“sgdm”...“MaxEpochs”8...'vightationdata'{XValidation, YValidation},...“验证频率”,30,...“冗长”,错误的,...“阴谋”“培训进度”);

培训网络。

网= trainNetwork (XTrain、YTrain层,选择);

Figure Training Progress(01-Sep-2021 08:34:02)包含2个轴对象和另一个uigridlayout类型的对象。轴对象1包含15个patch、text、line类型的对象。轴对象2包含15个patch、text、line类型的对象。

输入参数

全部崩溃

训练网络的解算器,指定为以下选项之一:

有关不同解算器的详细信息,请参见随机梯度下降法

名称-值参数

指定可选的逗号分离对名称,价值参数。名称是参数名和价值是对应的值。名称必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:Name1, Value1,…,的家

例子:'InitialLearnRate',0.03,'L2Regulation',0.0005,'LearnRateSchedule','Piecedise'将初始学习速率指定为0.03,并将l2正则化因子为0.0005,并指示软件通过与某一因子相乘来降低每一给定纪元数的学习率。
情节和显示

全部崩溃

在网络训练期间要显示的图,指定为逗号分隔对,由“阴谋”以及以下其中之一:

  • '没有任何'-在训练期间不要显示情节。

  • “培训进度”-绘制训练进度图。该图显示了小批量损失和准确性、验证损失和准确性,以及有关培训进度的其他信息。绘图有一个停止按钮在右上角。点击按钮停止训练,返回网络当前状态。有关培训进度图的更多信息,请参见监控深度学习训练进展

例子:“阴谋”,“训练进步”

在命令窗口显示训练进度信息的指示符,指定为1(真正的)或0(错)。

verbose输出显示如下信息:

网络的分类

领域 描述
时代 历元数。历元对应于数据的完整过程。
迭代 迭代次数。迭代对应于一个小批量。
时间流逝 时间以小时、分钟和秒为单位流逝。
Mini-batch准确性 迷你批处理上的分类准确性。
验证准确性 验证数据的分类精度。如果未指定验证数据,则函数不显示此字段。
小批量损失 迷你批处理上的损失。如果输出层是ClassificationOutputLayer对象,则该损失为类间互斥的多类分类问题的交叉熵损失。
确认损失 验证数据的丢失。如果输出层是ClassificationOutputLayer对象,则损失是具有互斥类的多类分类问题的交叉熵损失。如果未指定验证数据,则函数不显示此字段。
基础学习速率 基础学习速率。软件将各层的学习速率因子乘以这个值。

回归网络

领域 描述
时代 历元数。历元对应于数据的完整过程。
迭代 迭代次数。迭代对应于一个小批量。
时间流逝 时间以小时、分钟和秒为单位流逝。
小批量RMSE 迷你批处理的均方根误差(RMSE)。
验证RMSE 验证数据的RMSE。如果不指定验证数据,则软件不会显示此字段。
小批量损失 迷你批处理上的损失。如果输出层是回归输出层对象,那么损失是半平均平方误差。
确认损失 验证数据的丢失。如果输出层是回归输出层对象,则损失为半均方误差。如果未指定验证数据,则软件不显示此字段。
基础学习速率 基础学习速率。软件将各层的学习速率因子乘以这个值。

当培训停止时,详细输出将显示停止的原因。

要指定验证数据,请使用ValidationData培训的选择。

数据类型:逻辑

详细打印频率,即打印到命令窗口之间的迭代次数,指定为逗号分隔对,由“VerboseFrequency”和一个正整数。此选项只有效果“冗长”价值等于符合事实的

如果在培训期间验证网络,则Trainnetwork.每次发生验证时也会打印到命令窗口。

例子:“VerboseFrequency”,100年

小批量选项

全部崩溃

用于培训的最大历元数,指定为逗号分隔对,由“MaxEpochs”和一个正整数。

迭代是梯度下降算法中使用小批量最小化损失函数的一个步骤。历元是训练算法在整个训练集上的完整过程。

例子:'maxepochs',20

用于每个训练迭代的小批处理的大小,指定为逗号分隔的对“MiniBatchSize”和一个正整数。小批量是训练集的子集,用于评估损失函数的梯度和更新权重。看见随机梯度下降法

例子:“MiniBatchSize”,256年

用于数据变换的选项,指定为组成的逗号分隔对“洗牌”以及以下其中之一:

  • '一次'—在训练前洗牌一次训练和验证数据。

  • “从来没有”—禁止shuffle数据。

  • “每个时代”-在每个训练历元之前洗牌训练数据,并在每个网络验证之前洗牌验证数据。如果小批量大小不能平均分配训练样本数,则Trainnetwork.丢弃不适合每个纪元的最终完整小批的训练数据。为避免每个epoch都丢弃相同的数据,请设置“洗牌”价值“每个时代”

例子:“洗牌”,“every-epoch”

验证

全部崩溃

用于培训期间验证的数据,指定为包含验证预测器和响应的数据存储、表或单元阵列。

控件支持的相同格式可以指定验证预测器和响应金宝appTrainnetwork.可以将验证数据指定为数据存储、表或单元格数组{预测因子,响应},在那里预测包含验证预测值和反应包含验证响应。

有关更多信息,请参见图片序列特性输入论点Trainnetwork.函数。

在训练中,Trainnetwork.计算验证数据的验证精度和验证损失。若要指定验证频率,请使用验证频率培训的选择。您还可以使用验证数据在验证损失停止减少时自动停止训练。要启用自动验证停止,请使用验证耐心培训的选择。

如果网络的层在预测期间的行为与训练期间的行为不同(例如,退出层),那么验证的准确性可以高于训练(小批量)的准确性。

将验证数据按照洗牌培训的选择。如果洗牌“每个时代”,然后在每次网络验证之前对验证数据进行洗牌。

以迭代次数表示的网络验证频率,指定为逗号分隔对,由“验证频率”和一个正整数。

“验证频率”值是验证度量的评估之间的迭代次数。要指定验证数据,请使用'vightationdata'名称-值对的论点。

例子:“验证频率”,20

网络训练的验证停止的耐心,指定为正整数或

验证耐心指定在网络训练停止之前,验证集上的损失可能大于或等于先前最小损失的次数。如果验证耐心,则验证丢失的值不会导致培训提前停止。

返回的网络取决于OutputNetwork.培训的选择。要返回验证损失最小的网络,请设置OutputNetwork.培训选择“best-validation-loss”

培训完成时返回的网络,指定为以下选项之一:

  • “最后一次迭代”–返回与上次培训迭代对应的网络。

  • “best-validation-loss”–返回与验证损失最低的培训迭代相对应的网络。要使用此选项,必须指定'vightationdata'

解算器选项

全部崩溃

用于训练的初始学习率,指定为逗号分隔对组成“初始学习率”和正标量。默认值为0.01“sgdm”求解器和0.001为“rmsprop”“亚当”解决方案。如果学习率太低,则培训需要很长时间。如果学习率太高,则培训可能会达到次优结果或出现分歧。

例子:“初始学习率”,0.03

数据类型:仅有一个的|

选项,用于在训练期间放弃学习率,指定为逗号分隔对组成“LearnRateSchedule”以及以下其中之一:

  • '没有任何'-在整个训练过程中,学习率保持不变。

  • “分段”—每隔一定的时代,软件就更新学习速率,乘以一定的倍数。使用LearnRateDropFactor名称-值对参数指定此因子的值。使用LearnRateDropPeriod参数名-值对指定两次乘法之间的纪元数。

例子:“LearnRateSchedule”、“分段”

下降学习率的时期数量,指定为逗号分隔对组成“LearnRateDropPeriod”和一个正整数。此选项仅在值的值时有效学习进度表“分段”

每当指定的纪元数通过时,该软件就会将全局学习率与下降因子相乘。属性指定拖放因子LearnRateDropFactor名称-值对的论点。

例子:“LearnRateDropPeriod”,3

降低学习率的因素,指定为逗号分隔对组成“LearnRateDropFactor”和一个从0到1的标量。此选项仅在值的值时有效学习进度表“分段”

LearnRateDropFactor是一个乘法因子,适用于每次经过一定数量的时代时的学习率。使用LearnRateDropPeriod名称-值对的论点。

例子:“LearnRateDropFactor”,0.1

数据类型:仅有一个的|

L系数2正则化(权重衰减),指定为逗号分隔对,由“L2Regularization”和非负标量。有关更多信息,请参阅L2正规化

您可以为L指定乘数2具有学习参数的网络层的正常化。有关更多信息,请参阅在卷积和全连接层中设置参数

例子:“L2Regularization”,0.0005

数据类型:仅有一个的|

前一次迭代的参数更新步骤对当前带动量随机梯度下降迭代的贡献,指定为逗号分离对,由“动力”和一个从0到1的标量。0表示前一步没有贡献,1表示前一步贡献最大。

指定“动力”值,必须设置solverName成为“sgdm”。默认值适用于大多数问题。有关不同解算器的详细信息,请参阅随机梯度下降法

例子:“动量”,0.95

数据类型:仅有一个的|

亚当求解器的梯度移动平均衰减率,指定为逗号分隔对组成“GradientDecayFactor”和小于1的非负标量。梯度衰减率表示为β1在里面[4]

指定“GradientDecayFactor”值,必须设置solverName成为“亚当”。默认值适用于大多数问题。有关不同解算器的详细信息,请参阅随机梯度下降法

例子:“梯度衰减因子”,0.95

数据类型:仅有一个的|

为亚当和RMSProp求解器的平方梯度移动平均的衰减率,指定为逗号分隔对组成'squaredgradientdecayfactor'和小于1的非负标量。平方梯度衰减率表示为β2在里面[4]

指定'squaredgradientdecayfactor'值,必须设置solverName成为“亚当”“rmsprop”.衰减率的典型值为0.9、0.99和0.999,分别对应于10、100和1000个参数更新的平均长度。Adam求解器的默认值是0.999。RMSProp解析器的默认值是0.9。

有关不同解算器的详细信息,请参见随机梯度下降法

例子:“SquaredGradientDecayFactor”,0.99

数据类型:仅有一个的|

Adam和RMSProp求解器的分母偏移量,指定为逗号分隔对,由‘ε’一个正标量。求解器将偏移量加到网络参数更新中的分母上,以避免被零除。

指定‘ε’值,必须设置solverName成为“亚当”“rmsprop”。默认值适用于大多数问题。有关不同解算器的详细信息,请参阅随机梯度下降法

例子:‘ε’,1 e-6

数据类型:仅有一个的|

选项重置输入层归一化,指定为以下之一:

  • 符合事实的-重置输入层归一化统计并在训练时重新计算。

  • 错误的–在训练时计算空的标准化统计数据。

批处理归一化层统计的评估方式,指定为:

  • “人口”- 使用人口统计数据。在培训之后,软件通过再次通过培训数据来完成统计数据,并使用产生的均值和方差。

  • “移动”–在培训期间,使用更新步骤给出的运行估计值近似统计数据

    μ λ μ μ + 1 λ μ μ σ 2 λ σ 2 σ 2 + (1 - λ σ 2 σ 2

    在哪里 μ σ 2 分别表示更新后的平均值和方差, λ μ λ σ 2 表示平均值和方差衰减值, μ σ 2 分别表示层输入的均值和方差,和 μ σ 2 分别表示移动平均值和方差值的最新值。训练后,软件使用移动平均值和方差统计的最新值。此选项仅支持CPU和单个GPU训练。金宝app

梯度剪裁

全部崩溃

渐变阈值,指定为逗号分隔对,由'gradientthreshold'或者一个正标量。如果梯度值超过梯度阈值,然后根据渐变进行裁剪梯度阈值法

例子:“梯度阈值”,6

梯度阈值方法用于剪辑超过梯度阈值的梯度值,指定为逗号分隔对组成“梯度阈值法”以及以下其中之一:

  • “l2norm”-如果L2可学习参数的梯度范数大于梯度阈值,然后缩放渐变,使L2规范=梯度阈值

  • “global-l2norm”—全局L2规范,l,大于梯度阈值,然后将所有梯度按……的倍数缩放GradientThreshold /l.全球L2norm考虑所有可学习的参数。

  • “绝对值”-如果可学习参数梯度中单个偏导数的绝对值大于梯度阈值,然后缩放偏导数,使其大小等于梯度阈值保留偏导数的符号。

有关更多信息,请参阅梯度剪裁

例子:'GradientThresholdmethod','Global-L2norm'

序列的选择

全部崩溃

填充、截断或拆分输入序列的选项,指定为以下之一:

  • “最长”—在每个小批量中填充序列,使其与最长序列具有相同的长度。这个选项不会丢弃任何数据,尽管填充会给网络带来噪声。

  • “最短”-截断每个小批中的序列,使其长度与最短序列相同。这个选项确保不添加任何填充,代价是丢弃数据。

  • 正整数-对于每个小批量,将序列填充到指定长度的最近倍数,该倍数大于小批量中最长的序列长度,然后将序列拆分为指定长度的较小序列。如果发生拆分,则软件会创建额外的小批量。如果完整序列不适合内存,请使用此选项。或者,通过设置“MiniBatchSize”选项设置为较低的值。

要了解更多关于填充、截断和分割输入序列的效果,请参见序列填充、截断和分割

例子:“SequenceLength”、“最短的

填充或截断的方向,指定为以下方向之一:

  • “对”-在右侧填充或截断序列。序列从同一时间步开始,软件会截断或在序列的末尾添加填充。

  • '剩下'-在左侧填充或截断序列。软件将截断或添加填充到序列的开头,以便序列在同一时间步结束。

因为LSTM层处理序列数据的时间一步一次,当层OutputMode属性是“最后一次”,最后时间步中的任何填充都会对图层输出产生负面影响。要填充或截断左侧的序列数据,请设置“SequencePaddingDirection”选项'剩下'

对于序列到序列网络(当OutputMode属性是'序列'对于每个LSTM层),第一个时间步骤中的任何填充都会对较早时间步骤的预测产生负面影响。要在右侧填充或截断序列数据,请设置“SequencePaddingDirection”选项“对”

要了解更多关于填充、截断和分割输入序列的效果,请参见序列填充、截断和分割

值,用来填充作为标量指定的输入序列。该选项仅在以下情况下有效Sequencelength.“最长”或正整数。不要用键盘填充序列,因为这样做会在整个网络中传播错误。

例子:“SequencePaddingValue”,1

硬件选项

全部崩溃

培训网络硬件资源,指定为以下之一:

  • “汽车”-如果GPU可用,请使用GPU。否则,请使用CPU。

  • “cpu”—使用CPU。

  • “图形”—使用GPU。

  • “多gpu”-在一台计算机上使用多个GPU,使用基于默认群集配置文件的本地并行池。如果当前没有并行池,软件将启动一个池大小等于可用GPU数量的并行池。

  • “平行”- 根据您的默认集群配置文件使用本地或远程并行池。如果没有当前并行池,则软件将使用默认群集配置文件启动一个。如果池可以访问GPU,那么只有具有唯一GPU的工人执行培训计算。如果游泳池没有GPU,则培训在所有可用的CPU工作者上进行。

有关何时使用不同执行环境的更多信息,请参见在GPU和云中并行扩展深度学习

“图形”“多gpu”“平行”选项需要并行计算工具箱™.要使用GPU进行深度学习,您还必须有支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU支金宝app持情况(并行计算工具箱)如果您选择了这些选项之一,但并行计算工具箱或合适的GPU不可用,则软件返回错误。

想要看到并行训练时的表现改善,试着扩大小批量初始学习率培训选项的图形处理器的数量。

培训长期短期内存网络仅支持单CPU或单GPU培训。金宝app

用于多gpu训练或并行训练的数据存储必须是可分区的。有关更多信息,请参阅使用数据存储进行并行培训和后台调度

如果你使用“多gpu”选项,具有可分区的输入数据存储和'disparctinbackground'选项,然后软件启动一个大小等于默认池大小的并行池。工人与独特的图形处理器执行训练计算。其余工人用于后台调度。

例子:“ExecutionEnvironment”,“cpu”

在gpu或cpu之间进行并行工作负载划分,指定为逗号分隔的对“工作量”以及以下其中之一:

  • 从0到1的标量-每台计算机上用于网络培训计算的工作线程的分数。如果您使用启用后台调度的小型批处理数据存储中的数据来培训网络,则其余工作线程将在后台提取和预处理数据。

  • 正整数-用于网络训练计算的每台机器上的工人数量。如果您使用启用后台分派的迷你批处理数据存储中的数据来训练网络,那么其余的工作人员将在后台获取和预处理数据。

  • 数字向量-网络训练负荷为并行池中的每个工作者。为一个向量W,工人一小部分W(i)/总和(W)工作的数量(每个小批量的示例数量)。如果您使用启用了后台调度的迷你批处理数据存储中的数据来训练网络,那么您可以将一个worker负载分配为0,以便使用该worker在后台获取数据。指定的向量必须为并行池中的每个工作者包含一个值。

如果并行池可以访问GPU,那么没有唯一GPU的worker将不会被用于训练计算。默认的GPU池是使用所有具有唯一GPU的worker进行训练计算,其余的worker用于后台调度。如果池不能访问用于培训的gpu和cpu,则默认为每台机器使用一个worker来进行后台数据调度。

使用后台调度(异步预取队列)从数据存储中读取训练数据,指定为错误的符合事实的.后台调度需要并行计算工具箱。

DispatchInBackground仅支持可分区的数金宝app据存储。有关详细信息,请参阅使用数据存储进行并行培训和后台调度

检查站

全部崩溃

保存检查点网络的路径,指定为由逗号分隔的对组成'checkpoinspath'和一个字符向量。

  • 如果不指定路径(即使用默认路径)''),则软件不保存任何检查点网络。

  • 如果指定路径,则Trainnetwork.在每个epoch之后将检查点网络保存到此路径,并为每个网络分配唯一名称。然后,您可以加载任何检查点网络并从该网络恢复培训。

    如果文件夹不存在,则必须首先创建它,然后再指定保存检查点网络的路径。如果指定的路径不存在,则培训选项返回一个错误。

有关保存网络检查点的详细信息,请参阅保存检查点网络并恢复培训

例子:“CheckpointPath”、“C: \ Temp \检查点”

数据类型:字符

在培训期间调用的输出函数指定为逗号分隔对“OutputFcn”以及函数句柄或函数句柄的单元数组。Trainnetwork.在开始训练之前、每次迭代之后以及训练完成之后调用指定函数一次。Trainnetwork.传递一个包含以下字段信息的结构:

领域 描述
时代 当前历元数
迭代 当前的迭代号码
时间连续启动 训练开始后的时间,以秒为单位
培训俱乐部 当前mini-batch损失
ValidationLoss 验证数据的丢失
BaseLearnRate 当前基础学习率
TrainingAccuracy 当前小批量(分类网络)的准确性
TrainingRMSE RMSE在当前迷你批处理(回归网络)
ValidationAccuracy 验证数据的准确性(分类网络)
ValidationRMSE 验证数据的RMSE(回归网络)
状态 当前训练状态,可能值为“开始”“迭代”“完成”

如果某个字段对输出函数的某个调用不计算或不相关,则该字段包含一个空数组。

您可以使用输出函数来显示或绘制进度信息,或停止培训。尽早停止训练,让你的输出功能回归符合事实的.如果有输出函数返回符合事实的,然后训练结束Trainnetwork.返回最新的网络。有关如何使用输出函数的示例,请参见在深度学习网络培训期间自定义输出

数据类型:function_handle|细胞

输出参数

全部崩溃

培训选项,以培训选项SGDMTrainingOptionsRMSPropTrainingOptionsADAM要训练神经网络,使用训练选项作为Trainnetwork.函数。

如果solverName等于“sgdm”“rmsprop”“亚当”,则训练选项将作为培训选项SGDMTrainingOptionsRMSPropTrainingOptionsADAM对象,分别。

您可以编辑培训选项属性培训选项SGDMTrainingOptionsADAMTrainingOptionsRMSProp直接的对象。例如,在使用培训选项函数,您可以编辑小批量房地产直接:

选择= trainingOptions(个);选项。MiniBatchSize = 64;

提示

算法

全部崩溃

初始权重和偏差

对于卷积层和全连通层,权值和偏差的初始化由掌控度偏见初始化器属性的层,分别。有关如何更改权重和偏差的初始化的示例,请参见指定卷积层中的初始权重和偏差在完全连接的图层中指定初始权重和偏置

随机梯度下降法

标准梯度下降算法更新网络参数(权重和偏差),通过在损失负梯度方向的每次迭代中采取小步来最小化损失函数,

θ + 1 θ α E θ

在哪里 为迭代数, α > 0 为学习速率, θ 是参数向量,和 E θ 是损失函数。在标准梯度下降算法中,损失函数的梯度, E θ ,使用整个训练集进行评估,而标准梯度下降算法一次使用整个数据集。

相反,在每次迭代时随机梯度下降算法使用训练数据的子集评估梯度并更新参数。在每次迭代中使用称为小批量的不同子集。使用小批量的整个训练集上的训练算法的完整过程为一次时代。随机梯度下降是随机的,因为使用小批量计算的参数更新是使用完整数据集时产生的参数更新的噪声估计。您可以使用“MiniBatchSize”“MaxEpochs”名称值对参数分别。

带动量的随机梯度下降

随机梯度下降算法可以沿着最陡的路径振荡朝向最佳的路径振荡。将动量术语添加到参数更新是减少此振荡的一种方法[2].随机梯度动量下降(SGDM)更新为

θ + 1 θ α E θ + γ θ θ 1

在哪里 γ 确定上一个梯度步骤对当前迭代的贡献。属性指定此值“动力”名称-值对的论点。使用随机梯度下降与动量算法训练神经网络,指定solverName作为“sgdm”。要指定学习率α的初始值,请使用“初始学习率”名称-值对的论点。您还可以为不同的层和参数指定不同的学习速率。有关更多信息,请参阅在卷积和全连接层中设置参数

rmsprop.

动量随机梯度下降法对所有参数采用单一的学习速率。其他优化算法通过使用不同参数的学习速率来改进网络训练,并能自动适应被优化的损失函数。RMSProp(均方根传播)就是这样一种算法。它保持了参数梯度的各元素平方的移动平均值,

v β 2 v 1 + 1 β 2 E θ 2

β2为移动平均线的衰减率。常见的衰减率值为0.9、0.99和0.999。相应的平方梯度的平均长度相等1 /(1-β2,分别为10、100和1000次参数更新。您可以指定β2通过使用'squaredgradientdecayfactor'名称-值对的论点。RMSProp算法使用此移动平均值单独地将每个参数的更新标准化,

θ + 1 θ α E θ v + ϵ

这里的除法是按元素执行的。使用RMSProp可以有效降低大梯度参数的学习率,提高小梯度参数的学习率。ɛ为避免被零除而添加的小常量。您可以指定ɛ通过使用‘ε’名称-值对参数,但默认值通常工作得很好。要使用RMSProp训练神经网络,请指定solverName作为“rmsprop”

亚当

亚当(源自自适应估计时刻[4]使用类似于RMSProp的参数更新,但是增加了动量项。它保持了参数梯度及其平方值的元素移动平均,

β 1 1 + 1 β 1 E θ

v β 2 v 1 + 1 β 2 E θ 2

您可以指定β1β2使用衰变率“GradientDecayFactor”'squaredgradientdecayfactor'名称值对参数分别。亚当使用移动平均线来更新网络参数

θ + 1 θ α l v l + ϵ

如果多次迭代中的渐变相似,则使用渐变的移动平均值可以使参数更新在某个方向上拾取动量。如果梯度包含大部分噪声,则梯度的移动平均值会变小,因此参数更新也会变小。您可以指定ɛ通过使用‘ε’名称-值对的论点。默认值通常可以很好地工作,但对于某些问题,1这样的值更好。要用亚当来训练神经网络,请指定solverName作为“亚当”。Adam的完整更新还包括一种机制,用于纠正培训开始时出现的偏差。有关更多信息,请参阅[4]

指定学习速率α对于所有优化算法,使用“初始学习率”名称-值对参数。对于不同的优化算法,学习速率的影响是不同的,因此最优学习速率在总体上也是不同的。您还可以按层和参数指定不同的学习速率。有关详细信息,请参阅在卷积和全连接层中设置参数

梯度剪裁

如果梯度的大小呈指数级增加,那么训练是不稳定的,可以在几次迭代中发散.梯度剪辑通过在较高的学习率和异常值存在的情况下稳定训练,有助于防止梯度爆炸[3].梯度裁剪可以更快地训练网络,而且通常不会影响学习任务的准确性。

有两种类型的渐变剪辑。

  • 基于norm的梯度裁剪基于阈值缩放梯度,而不改变梯度的方向。的“l2norm”“global-l2norm”的值梯度阈值法是基于范数的梯度裁剪方法。

  • 基于值的渐变剪裁剪裁大于阈值的任何偏导数,这可能导致渐变任意改变方向。基于值的渐变剪裁可能具有不可预测的行为,但足够小的更改不会导致网络发散。这个“绝对值”的价值梯度阈值法是一种基于值的渐变剪裁方法。

有关示例,请参见使用深度学习的时间序列预测基于深度学习的序列到序列分类

l2正规化

向损耗函数添加重量的正则化术语 E θ 是减少过度装配的一种方法[1][2]. 正则化项也称为体重衰变.具有正则化术语的损失函数采用表格

E R θ E θ + λ Ω w

在哪里 w 为权向量, λ 是正则化因子(系数),还是正则化函数 Ω w

Ω w 1 2 w T w

注意,这些偏见并不是规格化的[2].您可以指定正则化因子 λ 通过使用“L2Regularization”名称-值对参数。还可以为不同的图层和参数指定不同的正则化因子。有关详细信息,请参阅在卷积和全连接层中设置参数

软件用于网络培训的丢失功能包括正则化术语。但是,在培训期间命令窗口和培训进度图中显示的损失值是数据上的损失,不包括正则化术语。

兼容性考虑因素

全部展开

R2018B的行为更改

R2018B的行为更改

参考文献

[1]毕晓普模式识别和机器学习.施普林格,纽约,纽约,2006。

[2] 墨菲,K.P。机器学习:一个概率的视角.麻省理工学院出版社,剑桥,马萨诸塞州,2012年。

帕斯卡努,R., T. Mikolov, Y. Bengio。“关于训练递归神经网络的困难”。第30届机器学习国际会议记录.[j] .岩石力学与工程学报,2013,34(3):341 - 346。

[4]金玛,迪德里克和吉米·巴。"亚当:随机优化的方法"arXiv预印本arXiv:1412.6980(2014).

介绍了R2016a