主要内容

通过使用贝叶斯优化调整实验超参数

此示例显示如何使用贝叶斯优化实验经理为卷积神经网络寻找最优的网络超参数和训练选项。贝叶斯优化提供了一种在实验中扫描超参数的替代策略。您可以为每个超参数指定一个值范围,并选择一个要优化的指标,Experiment Manager将搜索可优化所选指标的超参数组合。贝叶斯优化需要统计学和机器学习工具箱™。

在此示例中,您将培训网络以将图像从CIFAR-10数据集分类。实验使用贝叶斯优化来查找最小化自定义度量功能的超参数的组合。HyperParameters包括培训算法的选项,以及网络架构本身的参数。自定义度量标准功能确定随机选择的测试集上的分类错误。有关在实验管理器中定义自定义指标的详细信息,请参阅使用度量函数评价深度学习实验

或者,您可以通过调用的方式以编程方式找到最佳的超级参数值Bayesopt.功能。有关更多信息,请参阅深入学习使用贝叶斯优化

开放实验

首先,打开这个例子。实验经理使用可以检查和运行的预配置实验加载项目。打开实验,在实验浏览器窗格,双击实验的名称(Bayesoptexperiment.).

内置训练实验包括描述,一种超参数,设置功能和度量函数的集合来评估实验结果。使用贝叶斯优化的实验包括其他选择来限制实验持续时间。有关更多信息,请参阅配置内置培训实验

描述字段包含实验的文本描述。对于此示例,描述是:

查找卷积神经网络的最佳超参数和培训选项。HyperParamters确定网络截面深度,初始学习率,随机梯度下降动量和L2正则化强度。

普遍存在部分指定策略(贝叶斯优化)和用于实验的超参数选项。对于每个HyperParameter,请指定以下选项:

  • 范围-输入一个给出实值或整值超参数下界和上界的双元素向量,或一个列出分类超参数可能值的字符串数组或单元格数组。

  • 类型- 选择真实的(真实价值的HyperParameter),整数(整数估值的HyperParameter),或分类(分类超参数)。

  • 转变- 选择没有一个(没有变换)或日志(对数变换)。为了日志,超参数必须为真实的要么整数和积极的。在对数刻度上搜索和建模QuandExameter。

运行实验时,实验经理搜索HyperParameters的最佳组合。本实验中的每个试验都使用基于前一个试验结果的超参数值的新组合。此示例使用这些超级参数:

  • 切段—用于控制网络深度。网络中的总层数为9 * SectionDepth + 7.在实验设置功能中,每层卷积滤波器的数量成比例1 /√(SectionDepth),因此,对于不同的剖面深度,每次迭代的参数数量和所需的计算量大致相同。

  • InitialLearnRate- 最好的学习率可以取决于您的数据以及您正在培训的网络。

  • 动力-随机梯度下降动量通过使当前更新包含与前一个迭代中的更新成比例的贡献,为参数更新增加了惯性。惯性效应导致更平滑的参数更新和降低噪声固有的随机梯度下降。

  • L2Regular化-使用L2正则化防止过拟合。搜索正则化强度的空间,找到一个好的值。数据增强和批处理归一化也有助于网络的正则化。

在下面贝叶斯优化选项,您可以通过输入最大时间(以秒为单位)和运行的最大试验次数来指定试验的持续时间。为了最好地利用贝叶斯优化的力量,您应该执行至少30个目标函数评估。

设置功能配置实验的培训数据,网络架构和培训选项。检查设置功能,下设置功能,点击编辑.设置函数在MATLAB®编辑器中打开。

在本例中,setup函数有三个部分。

  • 负载培训数据从CiFar-10数据集下载并提取图像和标签。数据集约为175 MB。根据您的Internet连接,下载过程可能需要一些时间。对于培训数据,此示例创建了一个augmentedImageDatastore通过应用随机翻译和水平反射。数据增强有助于防止网络过度接收和记忆培训图像的确切细节。要启用网络验证,该示例使用5000个没有增强的图像。有关此数据集的更多信息,请参阅图像数据集

  • 定义网络架构为深度学习分类定义卷积神经网络的架构。在此示例中,培训网络有三个部分,每个部分切段相同的卷积层。每个卷积层之后是批量归一化层和Relu层。卷积层添加了填充,使得它们的空间输出大小总是与输入大小相同。在部分之间,最大池层将空间尺寸下降两倍。为了确保每个卷积层所需的计算量大致相同,滤波器的数量从一个部分到下一个部分增加了两个。每个卷积层中的滤波器的数量成比例1 /√(SectionDepth),因此不同深度的网络具有大致相同的参数数量,并且需要大约相同的计算量的每次迭代量。

  • 指定培训选项定义A.培训选项使用培训选项的值的实验对象“InitialLearnRate”“动量”, 和'L2Regularization'由贝叶斯优化算法生成。该示例列举了网络的网络数量的全部的时期,每次时代验证一次,并在最后一个时期期间将学习率降低10倍,以减少参数更新的噪声并允许网络参数恢复到最小值损失功能。

指标节指定对实验结果进行评估的可选函数。实验管理器每次完成网络训练后都会评估这些功能。如果需要查看度量函数,请选择度量函数的名称,单击编辑.MATLAB编辑器中打开的度量标准函数。

这个例子包括自定义度量函数艰难.该函数随机选取5000幅测试图像和标签,对这些图像进行训练后的网络评估,并计算网络误分类的比例。

功能metricutput = errorrate(triminfo)
datadir = tempdir;[~, ~, XTest,欧美]= loadCIFARData (datadir);
idx = randperm(元素个数(欧美),5000);XTest = XTest (:,:,:, idx);欧美=欧美(idx);
ypredicted = classify(trialinfo.tratingnetwork,xtest);metricutput = 1  - 平均值(ypredictict == ytest);
结束

优化方向字段表示贝叶斯优化算法用作目标函数的度量。对于此实验,实验经理旨在最大限度地减少该价值艰难公制。

运行实验

当您运行这个实验时,experiment Manager会根据所选的指标搜索超参数的最佳组合。本实验中的每个试验都使用基于前一个试验结果的超参数值的新组合。默认情况下,实验管理器每次运行一个试验。如果您有并行计算工具箱™,您可以同时运行多个试验。为了获得最好的结果,在您运行您的实验之前,启动一个与gpu一样多的worker的并行池。有关更多信息,请参阅使用实验经理并行培训网络GPU支万博1manbetx持情况(并行计算工具箱)

  • 要在实验管理器工具系列上运行一个试验,请单击跑步

  • 要同时运行多次试验,请单击使用并行然后跑步.如果没有当前并行池,则实验管理器使用默认群集配置文件启动一个。实验经理然后执行多个同时试验,具体取决于可用的并行工作人员的数量。

结果表显示了每次试用的度量函数值。实验管理器表示具有所选度量标准的最佳值的试验。例如,在该实验中,第三次试验产生最小的错误率。

要确定优化所选度量标准的试验,实验管理器使用最佳点标准'闵观察'.有关更多信息,请参阅贝叶斯优化算法(统计和机器学习工具箱)best(统计和机器学习工具箱)

评估结果

要在实验中测试最佳试验,请先使用最低错误率选择结果表中的行。

要显示所选试用的混淆矩阵,请单击混淆矩阵

要执行其他计算,请将培训的网络导出到工作区。

  1. 在这一点实验经理ToolStrip,点击出口

  2. 在对话框窗口中,输入导出网络的工作区变量的名称。默认名称是trainedNetwork

  3. 使用导出的网络作为helper函数的输入testSummary.例如,在MATLAB命令窗口中,输入:

testsummary(训练有素)

此函数以多种方式评估网络:

  • 它预测整个测试集的标签并计算测试错误。由于实验管理器确定了最佳网络而不将网络暴露于整个测试集,因此测试错误可以高于自定义度量的值艰难

  • 它计算标准错误(testErrorSE)和近似95%的置信区间(testerror95ci.)通过将测试中的每个图像的分类作为具有一定的成功概率的独立事件来处理泛化误差率。使用此假设,错误分类的图像的数量遵循二项式分布。这种方法通常被称为沃尔德方法

  • 它显示了一些测试图像以及它们预测的类和这些类的概率。

该函数在MATLAB命令窗口中显示这些统计信息的摘要。

********************************************
测试错误率:0.1801标准误差:0.0038 95%置信区间:[0.1726,0.1876]
********************************************

要记录对实验结果的观察,请添加注释。

  1. 在结果表中,右键单击艰难最佳试验的细胞。

  2. 选择添加注释

  3. 在里面注释窗格,在文本框中输入您的观察。

有关更多信息,请参阅排序,过滤和注释实验结果

关闭实验

在里面实验浏览器窗格,右键单击项目的名称并选择关闭项目.实验管理器关闭项目中包含的所有实验和结果。

也可以看看

应用

功能

相关话题