一文简述如何为自己的项目选择合适的神经网络
2018年07月23日 由 yuxiangyu 发表
959353
0
你的预测建模问题适合选择何种神经网络?对于初学者而言,深度学习领域很难知道要使用什么类型的网络。因为有许多类型的网络可供选择,每天都会有新的方法被发布和讨论。
更糟糕的是,大多数神经网络足够灵活,即使在使用错误类型的数据或预测问题时,也可以工作(进行预测)。
在这篇文章中,你会学到三种主要类型的人工神经网络的建议用法。
阅读这篇文章后,你会了解:
- 在解决预测建模问题时要关注哪种类型的神经网络。
- 何时使用,或不使用,或者可以尝试在项目中使用MLP,CNN和RNN。
- 在选择模型之前,要考虑使用混合模型并清楚地了解项目目标。
让我们开始吧。
这篇文章分为五个部分; 他们是:
- 要关注什么神经网络?
- 何时使用多层感知器?
- 何时使用卷积神经网络?
- 何时使用递归神经网络?
- 混合网络模型
要关注什么神经网络?
深度学习是使用现代硬件的人工神经网络的应用。它使开发,训练和使用比过去更大(更多层)的神经网络成为可能。
研究人员提出了数千种类型的特定神经网络,它们往往是对现有模型的修改或调整。有时也会有全新的方法。
作为一名从业者,我建议你等到模型出现后普遍适用后再使用。因为很难从每天或每周发布的大量出版物的中梳理出效果良好的那个。
我建议你一般关注三种类型的人工神经网络。即:
- 多层感知器(MLP)
- 卷积神经网络(CNN)
- 递归神经网络(RNN)
这三类网络提供了很大的灵活性,并且经过数十年的证明,它们在各种各样的问题中都是有用和可靠的。并且在过去的几十年里已经证明它们在许多问题中是有用和可靠的。他们还有许多变种,以帮助他们专门处理不同的预测问题框架和不同数据集。
现在我们知道要关注哪些网络,让我们看看何时可以使用每哪一类神经网络。
何时使用多层感知器?
多层感知器(简称MLP)是经典的神经网络。它由一层或多层神经元组成。数据被馈送到输入层,可能存在提供抽象层次的一个或多个隐藏层,并且在输出层(也称为可见层)上进行预测。
有关MLP的更多详细信息,请参阅:
https://machinelearningmastery.com/neural-networks-crash-course/
MLP适用于分类预测问题,其中输入被指定类或标签。
它也适用于回归预测问题,即给定一组输入,预测一个实值量。数据通常以表格格式提供,如CSV文件或电子表格。
使用MLP用于:
它非常灵活,通常可用于学习从输入到输出的映射。
这种灵活性使它可以应用于其他类型的数据。例如,图像的像素可以转换为一行长数据并馈送到MLP中。文档的单词也可以被转换为一行长数据并馈送到MLP。甚至对时间序列预测问题的滞后观察也可以转换为长数据并馈送到MLP。
因此,如果你的数据不是表格数据集(例如图像、文档或时间序列)的形式,我建议至少测试你的问题的MLP。结果可用作比较的基线点,以确认其他可能看起来更适合添加值的模型。
尝试MLP On:
何时使用卷积神经网络?
卷积神经网络(CNN)被设计用于将图像数据映射到输出变量。
事实证明它非常有效,它是涉及将图像数据作为输入的任何类型的预测问题的首选方法。
有关CNN的更多详细信息,请参阅帖子:
https://machinelearningmastery.com/crash-course-convolutional-neural-networks/
使用CNN的好处是能够开发二维图像的内部表示。这允许模型在数据中的变体结构中学习位置和比例,这在处理图像时很重要。
使用CNN:
总而言之,CNN适合与具有空间关系的数据一起工作。
CNN输入一般是是二维的,场或矩阵,但也可以改变为一维,允许它开发一维序列的内部表示。
这使CNN更普遍地用于具有空间关系的其他类型的数据。例如,文本文档中的单词之间存在顺序关系。在时间序列的时间步长中存在存在关系。
虽然不是专门针对非图像数据开发的,但CNN在诸如使用文本分类进行情绪分析和相关问题中实现了最先进的结果。
尝试使用CNN:
何时使用递归神经网络?
递归神经网络(RNN)被设计用于处理序列预测问题。序列预测问题有多种形式,最好用支持的输入和输出类型来描述。
序列预测问题的一些例子包括:
- 一对多:从作为输入的观察映射到具有多步的作为输出的序列。
- 多对一:多步序列作为输入映射到类或数量的预测。
- 多对多:多步序列作为输入映射到具有多步的作为输出的序列。
多对多的问题通常被称为序列到序列,或简称为seq2seq。
有关序列预测问题类型的更多详细信息,请参阅帖子:
https://machinelearningmastery.com/models-sequence-prediction-recurrent-neural-networks/
传统的RNN很难训练。
长短期记忆网络(LSTM)可能是最成功的RNN,因为它克服了训练RNN的问题,所以它被广泛应用。
有关RNN的更多详细信息,请参阅帖子:
https://machinelearningmastery.com/crash-course-recurrent-neural-networks-deep-learning/
一般而言,RNNs和LSTM在处理单词和段落序列(通常称为自然语言处理)时最为成功。
这包括以时间序列表示的文本序列和口语序列。它们还用作生成模型,需要序列输出,不仅需要文本,还需要生成手写等应用程序。
RNN用于:
- 文字数据
- 语音数据
- 分类预测问题
- 回归预测问题
- 生成模型
递归神经网络不适用于表格数据集。也不适合图像数据输入。
不使用RNN:
RNN和LSTM已经在时间序列预测问题上进行了测试,但结果却很差。至少可以说,自回归方法,甚至线性方法通常表现得比它更好。LSTM通常优于应用于相同数据的简单MLP。
更多信息,请参阅帖子:
machinelearningmastery.com/suitability-long-short-term-memory-networks-time-series-forecasting/
然而,它仍然是一个活跃的领域。
也许可以尝试RNN:
混合网络模型
CNN或RNN模型很少单独使用。
这些类型的网络在更大的模型(具有一个或多个MLP层)中用作层。从技术上讲,这些是混合类型的神经网络架构。
也许最有趣的工作来自将不同类型的网络混合在一起成为混合的模型。
例如,思考一下,有这一样一个模型,它使用一堆层,输入端为CNN,中间为LSTM,输出端为MLP。这样的模型可以读取图像输入序列(如视频),并生成预测。这称为CNN LSTM架构。
这种类型的网络也可以堆叠在特定的架构中以解锁新功能,例如可重复使用的图像识别模型,这个模型使用非常深的CNN和MLP网络,可以添加到新的LSTM模型并用于给照片配字幕。同样地,encoder-decoder LSTM网络可用于具有不同长度的输入和输出序列。
重要的是要先清楚地了解你和你的利益相关者对项目的要求,然后找到满足你特定项目需求的网络架构(或者自己开发一个)。
有关帮助你考虑数据和预测问题的良好框架,请参阅帖子:
https://machinelearningmastery.com/how-to-define-your-machine-learning-problem/
总结
在这篇文章中,你了解了三种主要类型的人工神经网络的建议用法。
具体来说,你学到了:
- 在解决预测建模问题时要关注哪种类型的神经网络。
- 何时使用,或不使用,或者可以尝试在项目中使用MLP,CNN和RNN。
- 在选择模型之前,要考虑使用混合模型并清楚地了解项目目标。
更多系统模型及数据集点击“这里”下载