所有关于网络架构:选择一个网络配置

这些文章将讨论一个主题,解释一些背景,并回答我从MATLAB听到的几个问题®社区。


本专栏的主题是关于深度学习网络架构。我所选择的问题反映的是常见的用法,而不是学术用例。我将对主题进行总结,然后看四个问题:


1.我应该使用什么架构来分类图像?
2.我可以把一个预先训练好的CNN(训练用于分类输出)训练用于一个回归问题吗?
3.我如何知道选择哪种技术进行时间序列回归?
4.对于一个小型数据集,我是否应该使用一个网络架构?

网络架构定义了深度学习模型的结构方式,更重要的是定义了它的设计目的。架构将决定:

  • 模型的准确性(网络架构是影响准确性的众多因素之一)
  • 模型能预测什么
  • 模型所期望的输入和输出
  • 层的组合以及数据如何在层中流动

大多数人都是从别人的层次组合开始训练的。当你第一次开始做任何事情的时候,向专家请教可能是个好主意。一段时间以来,深度学习研究人员一直在探索不同的网络架构和层的组合。他们在google、ResNet或SqueezeNet(举几个流行网络的例子)架构上取得的成果令人印象深刻。第一次开始时,您可以在解决类似问题的已发布架构的成功基础上进行构建,而不是从头开始。
深度学习工具箱™支持许多预训练的网络。万博1manbetx看到
预先训练的深度神经网络
完整的名单。

在选择网络架构之前,重要的是要理解您拥有哪种用例以及您可以使用的常见网络。

在开始深度学习时,您可能会遇到以下常见的架构:

卷积神经网络(CNN): CNN通常与图像关联,作为输入数据,但它们也可以用于其他输入数据,我将在问题1中讨论这些细节。

递归神经网络(RNN):递归神经网络连接着以前的信息,可以对未来进行预测。与假定每个输入都是独立事件的CNNs不同,RNNs可以处理可能相互影响的数据序列。一个例子是在自然语言处理中,前面的单词会影响下一个单词的可能性。

LSTM (Long-short term memory): LSTM网络是一种常用的处理序列和信号数据的RNN。我会在第三个问题中详细说明。


生成对抗网络(GAN):虽然我在下面的问题中没有提到这些,但它最近变得更受欢迎了。GANs可以在现有数据的基础上生成新的数据(想想那些实际上不是真实的人的图像)。我觉得这很刺激,还有点未来感;你可以了解更多关于甘斯在
如何设计和训练生成对抗网络(GANs)
视频和
列车生成对抗网络(GAN)
的例子。

第一季度

我想要一个模型来分类图像。我应该使用哪种架构?

非常好的问题。简单的回答就是你可能想要一个CNN来分类图像。

这是为什么。

让我们从CNN和LSTM网络开始,以及它们的常用用法。

美国有线电视新闻网

当谈到卷积神经网络时,有些人会说“ConvNet”,但每当我尝试在对话中使用这个词时,我总是觉得自己在努力扮酷,而实际上我并不是这样。

cnn由许多层组成,但遵循某种类似于卷积| ReLU |池的模式,这种模式反复重复(一遍又一遍)。由于它们在局部空间模式匹配方面非常出色,因此通常用于图像分类,在图像特征提取方面也通常优于其他方法。请记住,cnn的核心是卷积。将输入图像与一系列的过滤器进行卷积,在不失去相邻像素之间空间相互作用的情况下,突出图像中的特征。

深度学习简介:什么是卷积神经网络?(44)

这一主题有许多变体,但cnn的一些常见配置是:

系列网络

这是AlexNet的一个例子。

系列层次遵循直线。

DAG网络

谷歌网的一个例子。

多线路及连接

都是DAG的典型症状。

LSTM

长短时记忆网络主要与时间序列和序列数据有关。现在,LSTM网络在做出决定之前会记住一部分数据——它们在上下文中看到数据,这有助于更好地进行关联。

经验法则是,时间序列数据通常最适合于LSTM网络,而图像数据在CNNs上可靠地工作良好。信号数据是证明这一规则的例外。人们同时使用CNNs和LSTM网络来获取信号数据。我写了一
文章
关于深度学习的非图像应用,包括一个你可以使用CNN进行语音识别的例子。


这个图说明了一个简单的LSTM网络分类:

这个图说明了一个简单的LSTM网络的体系结构回归:

第二季

我可以把一个预先训练好的CNN(训练用于分类输出)训练用于一个回归问题吗?

是的!您需要更改输出层
classificationOutputLayer
regressionOutputLayer
,有一个简单的
文档的例子
这将帮助你完成这个过程。

这是一个
快速入门指南
深度学习工具箱,为更多这类问题提供了方便的参考。

第三季

对于时间序列回归,有很多可用的选择!我如何知道选择哪种架构?

我的下意识反应是总是建议LSTM网络!然而,有许多可用的技术是有原因的,其中一些技术在某些场景下会工作得更好。在没有更多信息的情况下,我无法具体回答这个问题,所以让我们来看看几个可能的场景。

时间序列回归场景#1我的输入是低复杂度的时间序列数据。我有一系列数据点,我想用它们来预测未来的事件。

在这种情况下,你最好使用机器学习。这里有一个简短的视频(5:56),看看如何使用机器学习预测比特币的波动。的
此示例的源代码
也可用。
点击这里观看视频。
风险管理中的机器学习应用:使用Regression Learner App预测比特币波动(5:56)

时间序列回归场景#2:我有来自多个传感器的数据,希望预测剩余的使用寿命(机器在需要修理或更换之前的时间)。

我和我的同事在工业自动化领域的客户身上看到了这个问题,他们需要在问题变得危险或昂贵之前发现问题。这一次,您可能想在机器学习回归上使用LSTM网络。这种方法减少了手动识别特征的需要,对于多个传感器来说,这将是一个重要的任务。

这里有一个
例子
您可以从下面了解如何预测LSTM网络的剩余使用寿命。

时间序列回归场景#3我有想去噪的音频数据。

这里你可以用CNN。这种方法的重要之处在于,在将信号传送到网络之前,先将信号转换成图像。这意味着信号通过傅里叶变换或其他时频操作变成图像表示。使用图像提供了一种方法来查看在原始信号中可能无法可视化的特征。由于傅里叶变换本质上就是一幅图像,所使用的网络可以是为图像设计的预先训练的网络。

这里有一个
例子
演示如何使用CNN去噪语音。
还有一件事我要告诉大家的是在情形3中小波也是一种半流行的方法,从时间序列数据中提取信息,然后将其作为CNN的输入。有一个漂亮的
帐面价值
德克萨斯大学奥斯汀分校的研究人员介绍了他们如何使用小波和深度学习将大脑信号转换为单词和短语。

现在,再一次,你可以做你想做的。您很有可能在场景1中使用LSTM网络,或在场景2中使用CNN。这些场景只是为了给你一个起点。

第四季度

我想构建一个识别图像的分类器,但我有一个有限的数据集。是否有网络架构与小型数据集更好地工作?

网络架构和预先训练的网络是密不可分的。一个预先训练的模型是一个已经训练过的神经网络。网络的权值和偏差会根据输入数据进行调整,并且网络可以更快地为新任务重新训练。这个过程称为迁移学习,有时需要更少的图像,使用更小的数据集。探索的另一个途径是通过模拟或增强“创建”更多数据。

关于何时使用特定网络架构的更多信息,我们汇总了一些
提示和技巧
也包括预先训练过的网络信息。

目前,我认为您应该使用任何您想使用的网络,而不考虑数据集大小,但是可以考虑使用预先训练的网络来减少输入数据,或者考虑增强数据集的方法。我的下一篇专栏文章将介绍预先训练过的网络和模型,所以请关注这个主题的更多内容。

这就是我现在要说的!我希望您喜欢这篇关于网络架构的专栏文章。如果你有其他深度学习的主题,你想看到讨论,在下面的表格中弹出一个主题或问题。

谢谢你的建议!