关于网络架构:选择网络配置

这些文章将研究一个主题,解释一些背景知识,并回答我从MATLAB中听到的一些问题®社区。


本专栏的主题是关于深度学习网络架构。我选择的问题反映了常用用法,而不是学术用例。我会总结一下这个话题,然后看看四个问题:


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

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

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

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

在选择网络体系结构之前,重要的是要了解您拥有什么样的用例和可用的公共网络。

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

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

递归神经网络(RNN): RNN通过连接来跟踪以前的信息,从而做出未来的预测。与cnn不同的是,每个输入都假定是一个独立的事件,rnn可以处理可能相互影响的数据序列。一个例子是在自然语言处理中,前一个单词会影响下一个单词的可能性。

长短期记忆(LSTM): LSTM网络是用于序列和信号数据的一种常用RNN。我会在第三个问题中讲得更详细。


生成式对抗网络(Generative adversarial network, GAN):虽然我在下面的问题中没有涉及到这些内容,但最近GAN已经变得越来越流行。gan可以基于现有数据生成新的数据(想象一下那些不是真实的人的图像)。我认为这是令人兴奋的,有点未来主义;您可以在
生成式对抗网络(gan)的设计与训练
视频和
训练生成对抗网络(GAN)
的例子。

第一季度

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

非常好的问题。简单的答案就是你可能希望CNN能对图片进行分类

这是为什么。

让我们从CNN和LSTM网络是什么开始,以及它们是如何被普遍使用的。

美国有线电视新闻网

当谈到卷积神经网络时,有些人会说“卷积神经网络”,但每当我试图在对话中放弃这个词时,我总是觉得我在努力表现得很酷,但实际上我并不酷。

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

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

这个主题有很多变体,但cnn的一些常见配置如下:

系列网络

AlexNet的一个例子。

系列层沿着直线。

DAG网络

举个GoogLeNet的例子。

多条线路和连接

是DAG的典型特征。

LSTM

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

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


这个图演示了一个简单的LSTM网络分类

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

第二季

我可以把预先训练的CNN(训练分类输出)训练它为回归问题吗?

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

这是一个
快速入门指南
,它为更多这类问题提供了方便的参考。

第三季

时间序列回归有很多选择!我如何知道该选择哪种架构?

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

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

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

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

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

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

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

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

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

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

第四季度

我想构建一个识别图像的分类器,但我的数据集有限。是否有一种网络架构在使用小数据集时工作得更好?

网络架构和预先训练的网络是携手并进的。预训练模型是一个已经经过训练的神经网络。网络的权重和偏差根据输入数据进行调整,网络可以更快地为新任务进行重新训练。这个过程被称为迁移学习,有时需要更少的图像和更小的数据集。另一种探索方法是通过模拟或扩充“创造”更多数据。

关于何时使用特定网络体系结构的更多信息,我们将它们放在一起
提示和技巧
这也包括预先训练的网络信息。

现在,我要说的是,您应该使用任何您想要的网络,而不管数据集的大小,但是可以考虑使用预先训练过的网络,以减少输入数据的需求,或者考虑增加数据集的方法。我的下一篇专栏文章将讨论预先训练过的网络和模型,所以请关注这个主题的更多内容。

这就是我现在的全部内容!我希望您喜欢这篇关于网络架构的专栏文章。如果你有其他想要讨论的深度学习话题,请在下面的表格中选择一个话题或问题。

谢谢你的建议!