人工智能

应用机器学习和深入学习

MATLAB的最佳模型:深度学习基础知识

这篇文章来自希瑟·高尔,MATLAB产品营销。你可以跟着她在社交媒体: @heather.codes , @heather.codes , @HeatherGorr , @heather-gorr-phd 。这篇文章讲述了令人难以置信的建模竞赛在YouTube上生活, MATLAB的最佳模型:深度学习基础知识 指导你如何选择最好的模型 。深入学习模型,有不同的方法来评估什么是“最佳”模型。它可能是一个比较不同网络(问题1)或b)找到合适的参数为一个特定的网络(问题2)。 这可以有效地管理和快?使用较低的代码工具MATLAB,实验管理器应用程序!

方法

我们创建了两个问题图像分类和timeseries回归。数据集的基础上,我们考虑两种类型的模型:卷积(CNN)和长期短期记忆(LSTM)网络。下图显示了一些常见的网络用于不同的数据类型。
图1:公共数据集和网络
我们医生的例子用于重复性(+,合理大小的数据集liverstream !)和使用应用MATLAB的探索,火车,很快和比较模型。我们将讨论更多的我们进入细节!

问题1:图像分类

对于我们的第一个问题,我们相比CNN模型分类类型的花。cnn是非常普遍的,因为他们涉及一系列的操作,通常我们可以理解:玲珑,数学运算和聚合。
图2:卷积神经网络(CNN)图
从以前的帖子您可能还记得,我们在这个领域有一些很棒的起点!我们使用转移学习,你更新pretrained网络与您的数据。

选择网络

我们开始通过探索pretrained模型使用深层网络设计师应用这提供了一个合理的整体网络架构来帮助我们选择之前调查的细节。
图3:Pretrained深陷网络设计模型
我们想要不同程度的复杂性对我们的竞争,所以我们决定squeezenet,googlenet,inceptionv3

比较网络

接下来,我们需要训练和验证所有3网络和比较结果!的实验管理器应用程序非常有助于保持组织和自动化这一部分。
这个医生的例子走过设置和运行实验:
cd (setupExample (' nnet / ExpMgrTransferLearningExample ')); setupExpMgr (“FlowerTransferLearningProject”);
图4:设置网络参数在实验管理器应用程序
正如你可能知道的,训练网络可以花一些时间!我们在这里训练3人,所以你要考虑你的硬件和问题之前运行。你可以调整设置使用gpu并行和运行实验容易通过应用程序。
提前一点时间我开始实验,以确保我们有时间比较,跑在我的Linux机器multi-GPU行动!

评委的分数

我们的模型是怎么表现的?我们有一些标准用来评估:
  • 精度
  • 速度
  • 整体质量
  • Explainability
大多数这些措施可以很快发现在app - explainability更低,更微妙的!
图5:分类结果在实验管理器应用程序
我们发现,在这个例子中,inceptionv3执行最好的的准确性(91.9%),但需要长,因为它是一个更复杂的建筑比别人。看下一个亚军,googlenet可能是一个更好的妥协,因为它更快和仍然有同样好的验证精度(91%)。squeezenet模型训练速度最快,但更糟糕的准确性,但我不会排除它!每个问题都是不同的时候什么最重要!最后,我们检查的混淆矩阵看起来非常相似和平衡。这是一个非常重要的视觉,以确保你没有不平衡精度在类…这让我们我们最后的标准。

Explainability

能够解释模型是越来越重要,模型explainability是一个活跃的研究领域领域的深入学习。本节我们将保持简短,我们有更多的关于这些话题。基本上,你明白发生了什么,尤其是如果出现错误(开发人员,团队,甚至用户需要了解)。有一些好的技巧等网络激活和可视化和其他策略。
最后几个技巧,确保文档,如果你一直使用pretrained模型,确保训练数据和模型信息透明和公正。

调优

深度学习的很大部分是优化网络一旦你满意的方法。有许多改进的参数来调整层架构,解决者和数据表示。再次,应用程序将帮助您可以检查和调整参数容易深陷网络设计师,然后执行一个参数使用实验管理器。
我们跟着一个医生的例子显示在解决三个googlenet和一个简单的“默认”网络:
cd (setupExample (' nnet / ExperimentManagerClassificationExample ')); setupExpMgr (“MerchandiseClassificationProject”);
我们不会进入可用解决的细节在这篇文章中,但这是一个伟大的方式来探索如果你忘记和动量随机梯度下降法的区别(个)和均方根传播(RMSProp)手!还有很多的医生包括一个快速概述所有可用参数调优。
图6:探索结果在实验管理器应用程序
我们这里的实验和googlenet表现更好(尽管显然需要更长的时间来训练)。有趣的是,没有明确的准确性比较差的解决者——更多的数据可能会帮助检查这一点。不过,解决了一个很大的差别在默认的算法以最小层(80% vs 70)。这是情况值得入住的类型如果你看到这样的变化!

问题2:时间序列回归

接下来,我们集中在timeseries回归问题。首先,让我们思考的总体体系结构。
cnn是广泛用于许多问题,但是有些时候模型需要知道信息从之前的时间步骤。这就是递归神经网络(RNN)派上用场,因为他们保留内存系统,使它们适合timeseries,视频,文本和其他顺序问题。在深度学习术语中,cnn是前馈,RNN的饲料向后携带一些内存的输入和输出层。
在本例中,我们着重研究LSTM这是一个RNN与盖茨额外的输入和输出。这有助于保持长期趋势的数据,重要的时间序列问题。下面的例子比较了两个网络。
图7:RNN的比较(左)和LSTM网络(右)
LSTMs,你通常不需要尽可能多的层cnn——艺术是在选择最佳参数表示的数据和趋势。虽然我遇到过很深的LSTMs,通常和很少的层网络可以学习得很好。例如,深层网络设计师有一个模板6层:输入,lstm,辍学,fullyConnected, softmax,分类或回归层。这是一个简单的架构,数据准备和层参数有很大的影响。
图8:深层网络设计师6层模板
我们用上述同样的方法比较不同使用实验管理器和网络参数医生的例子剩余使用寿命预测发动机(原则):
cd (setupExample (' nnet / ExperimentManagerSequenceRegressionExample ')); setupExpMgr (“TurbofanSequenceRegressionProject”);

选择参数

我们比较两个主要网络参数:阈值LSTM深度。阈值代表一个截断值响应数据和LSTMDepth层数。
图9:比较主要的网络参数
使用一个自定义度量MeanMaxAbsoluteError,帮助可能包括任何方法你喜欢判断拟合优度。我们检查了setupfunction跑实验,焦急地等待着结果!
图10:运行实验和比较的结果

评委的分数

回归问题,数值预测,常见的测量精度之间RMSE(根均方误差)和预测数据。理想情况下,RMSE尽可能接近于零。
图11:RMSE结果
最好的模型(以最小的RMSE)是网络最小最小的阈值(150)和深度(1)。在这种情况下,没有任何改善的结果基于网络的深度,所以简单时需要考虑的是设置LSTMs和将帮助explainability如上所述。
医生有很好的例子展示LSTM培训和评估几个问题的更多细节包括视频,音频和文本。遗憾的是,我们不能在一个小时也许下次做更多的比较我们可以进入更复杂的问题现在我们已经介绍了基础知识!查看更多的例子在这里

总结

我们可以火车,比较和评估这些美丽的模型(在一个小时!)希望这可以给你一种如何选择网络为您的数据和如何设置实验来优化和比较网络。使用应用程序和仔细思考的标准在这一过程中非常有用。如果你想了解更多关于设置你自己的实验中,这些访问2从乔Hicklin视频教程
我们会再次为我们的建模大赛——订阅@matlab YouTube频道敬请期待更多保持联系的社交媒体和评论。让我们知道你想看到下一个!
|
  • 打印
  • 发送电子邮件

评论

要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。