MATLAB 的实验管理器 (Experiment Manager) 是一个强大的工具,旨在帮助你设计和运行机器学习或深度学习实验,特别是在你需要比较多个实验条件、不同数据集、训练方法或网络架构时。

主要功能

  1. 设计实验

    • 你可以使用 内置训练函数(如 trainnet)或者定义 自定义训练函数 来进行训练。
    • 通过选择不同的超参数(如学习率、动量等),你可以对模型进行不同配置的训练,比较这些训练条件下的结果。
    • 实验模板:实验管理器提供了预配置的实验模板,可以帮助你快速开始。例如,图像分类、回归分析、序列分类、音频分类、信号处理等任务的模板,涵盖了深度学习和机器学习的常见应用场景。
  2. 比较实验结果

    • 你可以比较不同的数据集、预处理步骤、超参数或网络架构在相同任务中的表现。实验管理器会展示不同试验的结果和性能指标,帮助你选择最优配置。
  3. 超参数优化

    • 通过 贝叶斯优化穷举搜索(Exhaustive Sweep)来调优超参数。贝叶斯优化是一个用于高效寻找超参数最优值的算法,它在每个实验回合后会调整搜索空间,以更有效地找到最佳超参数组合。
    • 统计与机器学习工具箱(Statistics and Machine Learning Toolbox)是进行贝叶斯优化所需要的附加工具箱。
  4. 并行实验

    • 如果你有 并行计算工具箱MATLAB 并行服务器,你可以在多个处理器或 GPU 上并行运行多个试验,减少实验的总体运行时间。
  5. 实验浏览器

    • 实验浏览器面板 显示了实验和结果的层级结构。你可以看到每个实验的状态,并能够查看每个实验的类型和结果。
    • 实验的类型通过图标来表示,例如:
      • 蓝色的锥形瓶图标:表示使用 trainnet 训练的内置训练实验。
      • 紫色的烧瓶图标:表示使用自定义训练函数的自定义训练实验。
      • 橙色的圆底烧瓶图标:表示使用用户自定义的实验函数的通用实验。
  6. 自定义训练循环和可视化

    • 除了使用 trainnet,你还可以创建 自定义训练循环 来实现更复杂的训练方案,比如使用生成对抗网络(GAN)进行训练,或者设计自定义的学习率调度。
    • 在实验过程中,你还可以定义 训练后自定义指标 来评估每个实验的结果,比如计算特定的误差率或准确率。
  7. 多种实验类型

    • 图像分类回归语义分割时间序列预测等任务都可以通过不同的实验模板进行设置。
    • 你也可以利用 迁移学习,比如从多个预训练的模型中选择最合适的进行微调。

如何使用实验管理器

  1. 启动实验管理器

    • 通过 MATLAB 工具栏的 Apps 选项卡,找到并点击 Experiment Manager 图标。
    • 你也可以通过命令窗口输入 experimentManager 来启动它。
  2. 设置实验

    • 创建一个新的项目或使用预配置的模板来设置实验。
    • 配置实验的描述、超参数、训练数据、网络架构等。
  3. 运行实验

    • 配置好实验参数后,你可以选择运行实验并观察结果。可以选择使用 穷举搜索贝叶斯优化 来优化超参数,或者使用 并行计算 来加速实验的训练过程。
  4. 分析结果

    • 实验结束后,结果会在 实验浏览器 中显示。你可以查看不同试验的性能指标(如准确率、损失函数等),并根据结果做出决策。
  5. 保存与导出

    • 训练完成后,你可以将最优的模型导出到 MATLAB 工作区,或者导出为其他可用格式,以便进一步使用。

实验管理器的优势

  • 高效的实验管理:能够组织和管理大量的实验,并清晰地展示每个实验的结果。
  • 灵活的配置选项:支持自定义训练函数、超参数调优、不同的数据集和网络架构测试。
  • 优化算法支持:提供贝叶斯优化等高效的超参数优化方法。
  • 并行计算支持:支持在多核处理器或多个 GPU 上并行执行实验,显著提高实验的运行效率。
  • 可视化和结果比较:允许用户对不同配置的实验结果进行可视化并进行比较,帮助快速筛选最优配置。

适用场景

  • 深度学习任务:如图像分类、语音识别、自然语言处理、目标检测等。
  • 机器学习任务:如回归分析、分类任务、聚类分析等。
  • 复杂的超参数调优:当需要通过系统化的方式对多个超参数进行调整时,实验管理器可以帮助你更高效地进行实验优化。

这个实验的目标是使用 序列到序列回归(Sequence-to-sequence Regression)来预测引擎的 剩余使用寿命(RUL),并比较使用 贝叶斯优化 调整超参数时模型的表现。该实验会对以下几个超参数进行优化:

  • 数据阈值等级:影响数据的预处理和输入网络的方式。
  • LSTM 层深度:决定长短期记忆网络(LSTM)中的层数,可能影响模型的能力来捕捉时间序列中的长时间依赖。
  • 隐藏单元数量:LSTM 中每一层的隐藏单元的数量,直接影响网络的表达能力。
  • 初始学习率:网络训练时的学习率,影响梯度下降的步长,过大可能导致不收敛,过小则训练过程过慢。

实验的主要内容

  1. 贝叶斯优化

    • 使用 贝叶斯优化 来寻找最佳超参数组合。贝叶斯优化可以通过历史实验结果智能地选择最优的超参数,从而减少不必要的计算量。
    • 贝叶斯优化的策略是最小化 MeanMaxAbsoluteError 作为优化目标。
  2. 设置函数

    • SequenceRegressionExperiment_setup:这个函数用于设置实验的初始条件,包括数据的加载、网络架构的配置、损失函数、优化器等。通过该函数,超参数值会被传递并影响训练过程。
  3. 训练后自定义度量

    • 每次实验试验完成后,都会计算并显示一些度量值。MeanMaxAbsoluteError 用于衡量模型的预测误差,并且在每次试验后进行最小化优化。这个度量有助于了解模型在预测引擎剩余使用寿命时的准确性。
  4. 优化方向

    • 目标是最小化 MeanMaxAbsoluteError,即使得模型的预测误差尽可能小。

实验结构

  • 超参数调优:通过贝叶斯优化自动调整数据阈值、LSTM 层数、隐藏单元数和学习率,以寻找最佳的超参数组合。
  • 评估指标:使用 MeanMaxAbsoluteError 来评估模型的表现。
  • 训练与验证:通过不同的配置训练和验证模型,并比较不同超参数组合下的性能。

文件和数据

  • 该实验包含 4 个相关的文件,其中包含了设置函数、超参数定义、度量函数和其他相关的辅助文件。
  • 更新日志:最后一次更新发生在 2025年4月19日,这意味着实验配置和文件最近有所更新。

优化目标

该实验优化目标是通过最小化 MeanMaxAbsoluteError 来提升引擎剩余使用寿命预测的准确性。贝叶斯优化可以高效地调整超参数,以便在不同的配置下找到最佳的模型表现。

Experiment Manager贝叶斯优化 (Bayesian Optimization)MATLAB 中提供了非常强大的功能,帮助用户优化深度学习模型的超参数。通过在 实验管理器 中设置贝叶斯优化,你可以通过智能搜索找到最佳的超参数配置,以提高模型的性能,减少过拟合,并加速训练过程。

贝叶斯优化的基本概念

贝叶斯优化是一种在高维空间中寻找全局最优解的高效算法,尤其适用于优化计算成本高昂的函数。对于深度学习模型而言,超参数调优是一个复杂且计算密集的任务。传统的穷举搜索方法(如网格搜索)会遍历所有可能的超参数组合,而贝叶斯优化则通过每次试验后更新超参数的分布,逐步缩小搜索空间,从而更高效地找到最优解。

贝叶斯优化的优势在于,它通过建模每次试验结果的概率分布来智能地选择下一组超参数,而不是盲目地穷举所有可能的组合。

本例的目标与任务

在本例中,我们的目标是使用 卷积神经网络 (CNN)CIFAR-10 数据集 进行图像分类任务的训练,并通过贝叶斯优化来调优以下超参数:

  • SectionDepth:控制网络的深度。网络的总层数为 9 * SectionDepth + 7,即随着深度的增加,网络会更加复杂。
  • InitialLearnRate:初始学习率,影响训练时的更新步长。学习率过低会导致训练时间过长,过高则可能导致模型无法收敛。
  • Momentum:随机梯度下降(SGD)中的动量。动量能够增加更新的惯性,从而加速收敛并减少震荡。
  • L2Regularization:L2 正则化,用于防止模型过拟合。

贝叶斯优化的实施步骤

  1. 定义超参数的范围和类型
    在实验中,你需要为每个超参数定义一个搜索范围,例如:

    • 对于 InitialLearnRate,你可能希望搜索 [0.0001, 0.1] 之间的值。
    • 对于 Momentum,你可以选择从 [0.5, 0.9] 范围内搜索。
    • SectionDepth 可以是整数,表示卷积层的深度。

    每个超参数都可以选择 real(实数),integer(整数),或 categorical(分类)类型。如果需要,你还可以选择是否对某些超参数进行对数变换,以适应不同的尺度。

  2. 优化目标
    你需要为贝叶斯优化指定一个目标指标。在本例中,优化目标是 ErrorRate(错误率),即模型在测试集上的分类误差。贝叶斯优化算法会在试验过程中自动根据错误率优化超参数组合。

  3. 实验配置与执行
    实验管理器 中,你可以设置实验的 最大试验次数最大运行时间。这些设置会限制贝叶斯优化的搜索空间,确保实验不会超时或计算过多次。

  4. 训练数据与网络架构
    实验的 设置函数 (setup function) 会加载数据并配置网络架构。对于卷积神经网络,数据增强(例如随机平移和翻转)帮助防止模型过拟合,而网络架构包括多个卷积层、池化层和全连接层。每一层的滤波器数量是根据 SectionDepth 动态调整的。

  5. 训练与验证
    训练过程中,实验管理器会在每个周期(epoch)进行一次验证,评估模型在验证集上的表现。训练时,学习率根据设定的调度规则逐渐降低,以避免训练过程中的噪声,并让模型参数趋近于损失函数的最小值。

  6. 评估与结果分析
    每次试验完成后,实验管理器会计算并展示模型的 误差率,并显示混淆矩阵等信息,帮助你评估模型在不同超参数设置下的表现。最好的结果会在表格中突出显示。

  7. 并行计算
    如果你有 并行计算工具箱,你可以在多个 GPU 或处理器上同时运行多个试验。这能大大加快超参数优化过程,提高效率。

自定义指标与训练过程

在贝叶斯优化的过程中,你可以自定义训练后的 度量函数,如 ErrorRate,它会计算模型的分类误差。这是一个非常有用的功能,因为你可以根据自己的需求调整优化目标。

function metricOutput = ErrorRate(trialInfo)
    % 随机选择5000个测试图像
    idx = randperm(numel(YTest),5000);
    XTest = XTest(:,:,:,idx);
    YTest = YTest(idx);

    % 评估训练好的网络
    YPredicted = classify(trialInfo.trainedNetwork, XTest);
    
    % 计算误差率
    metricOutput = 1 - mean(YPredicted == YTest);
end

训练与优化的执行

你可以通过 Experiment Manager 来运行实验,并且每次试验都会根据前一次的结果自动调整超参数值,从而逐步优化模型。实验管理器会通过 贝叶斯优化算法 来探索超参数空间,从而找到最优的超参数组合。

并行执行
  • Sequential:按顺序一个接一个地执行试验,适合计算资源有限时使用。
  • Simultaneous:同时执行多个试验,适合多核或多GPU的计算环境。
  • Batch:将实验作为批处理任务卸载到集群中,适合大规模实验。

评估与结果

实验完成后,实验管理器会显示每次试验的误差率和其他相关的评估指标。你可以查看 混淆矩阵 来评估最佳试验的分类效果,并进一步分析模型在不同类别上的表现。

导出模型

一旦找到最佳的网络配置,你可以将训练好的网络导出到 MATLAB 工作区,以便进行后续分析或部署。可以使用如下命令:

export > Trained Network

总结

通过 实验管理器贝叶斯优化,你能够高效地调整深度学习模型的超参数,自动化搜索最优解,减少计算成本,并提高模型的性能。这对于需要进行大量实验和超参数调整的深度学习任务非常有帮助。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐