深度学习CNN RNN算法

深度学习CNN RNN算法

技术开发 编程 技术框架 技术发展

 

深度学习CNN RNN算法

深度学习的起源

许多人都熟悉“深度学习”这个术语,因为它作为解决困难和计算上昂贵问题的可靠方法而受到广泛关注。然而,特别是在该领域的新手中,对这些系统最初开发的方式几乎没有关注。如果没有此上下文,有时很难确定特定应用程序需要哪个特定框架或体系结构。在这篇文章中将了解深度学习RNN与CNN之间的区别。

现代深度学习系统基于人工神经网络(ANN),这是一种基于大脑结构松散建模的计算系统。

神经网络:深度学习的基础

神经网络不是独立的计算算法。相反,它们代表一种结构或框架,用于组合机器学习算法以解决特定任务。

神经网络由层组成,其中每层包含许多人工神经元。神经元之间的连接类似于大脑内的突触,其中信号可以从一个神经元传递到另一个神经元。层之间的连接由从一层到下一层的神经元之间的链接定义。

传统的NN由多个层组成,每个层执行特定的功能,有助于解决手头的问题。第一个是输入层,它承担着一种感觉的角色。在图像识别任务中,这可以被认为是眼睛,而它将接受语音识别系统中的音频数据。输入层后跟一个或多个隐藏层,最终链完成输出层。输出层可以被认为是最终决策者,而隐藏层是真实学习发生的地方。

数据通过变换从输入“移动”,顺序地通过每个隐藏层,并终止于输出层。这通常被称为前馈神经网络。

虽然传统的NN在许多任务中证明是成功的,但是对其真正强度的认识始于引入非常大量的数据和处理它所需的计算能力。本质上,深度学习系统是非常大的神经网络,使用大量数据进行训练。随着认识到这些系统具有巨大的未开发潜力,基础结构的组成成为一个重要的研究课题。

深度学习历史上的一个重要里程碑是引入了递归神经网络(RNN),它构成了框架构成的重大变化。

递归神经网络

RNN使用的架构与传统的NN没有什么不同。不同之处在于RNN引入了内存的概念,它以不同类型的链接的形式存在。与前馈NN不同,某些层的输出被反馈到前一层的输入中。这种添加允许分析顺序数据,这是传统NN无法实现的。此外,传统的NN限于固定长度的输入,而RNN没有这样的限制。

在反向方向上包含层之间的链接允许反馈循环,其用于帮助基于上下文学习概念。就深度学习应用程序的功能而言,它在很大程度上取决于需求(或目标)和数据。

对于包含重复模式的时间序列数据,RNN能够识别并利用与时间相关的上下文。这是通过对识别前一个和后一个令牌的模式施加更多权重来实现的,而不是单独评估。例如,考虑一个学习识别口语的系统。通过考虑最近说出的单词来预测下一句话,这样的系统将受益匪浅。

在这个主题上,学习序列数据的流行框架称为长短期记忆网络(LSTM)。这是一种能够学习长期关系的RNN。例如,如果自动完成任务中下一个单词的预测取决于句子或段落中较早的上下文,则LSTM旨在帮助实现此目的。LSTM在声学建模和词性任务方面也取得了成功。

RNN有不同的种类,通常也依赖于任务。RNN的类型由与输出数量相关的输入数量来描述。四种不同的类型是:

一对一,非正式地称为香草RNN。该变体具有一个输入,例如单词或图像,并输出单个标记,例如单词或布尔值。

一对多,其中一个输入用于创建多个输出。

多对一,其中几个输入用于创建单个输出。

多对多,分析几个输入以生成多个输出。

要了解哪些最适合特定工作,有必要审查RNN与CNN有效的一些应用程序。

RNN的应用

RNN已成功应用于多种类型的任务中。其中一些包括:

图像分类,其中检查图像并进行单个确定,例如“白天图片”与“夜间图片”。

这是一对一映射的示例。

图像字幕,其中图像根据显示的内容自动给出标题。这可能包括复杂的动作,例如:“狐狸跳过狗”。

此任务需要一对多RNN,其中输入是单个图像,输出是由多个单词组成的短语。

时间序列预测,例如在给定历史值的情况下预测股票价格。

此任务涉及使用多对一RNN,其中许多先前的股票价格用于预测单个未来价格。

自动语言翻译,其中一种语言的书面文本或口语作为输入,并输出表示相同文本的不同语言。

这是多对多RNN的示例,其中分析了几个单词作为输入,并且输出也是几个单词的长度。

自然语言处理,例如社交媒体帖子中的情绪分析。

根据情绪的复杂性,该RNN可以是多对一或多对多的类型。例如,如果情绪是“正面”或“负面”,那么只有一个输出。然而,如果情绪更复杂并且与诸如“积极和有趣”,“消极和愤怒”或“消极和有趣”的其他修饰符相结合,那么它将适合于多对多实现。

文本分类和句子完成。RNN广泛用于文本分类,优于其他众所周知的算法,例如支持向量机(SVM)。

使用RNN也成功地实现了分段手写识别和语音识别系统。

卷积神经网络

在比较RNN与CNN时,NN框架的下一个重要创新是CNN。CNN的定义特征是它在某些层中执行卷积运算 - 因此,称为卷积神经网络。该架构与传统的NN略有不同,从单个层的构成开始。

在CNN中,第一层始终是卷积层。这些是使用三个空间维度定义的:长度,宽度和深度。这些层未完全连接 - 这意味着来自一个层的神经元不会连接到下一层中的每个神经元。最终卷积层的输出是第一个完全连接层的输入。

CNN交互式演示识别手写数字从数学上讲,卷积是一种在两个矩阵之间发生的分组函数。更一般地,它将两个功能组合成第三个,从而合并信息。在实践中,它们可以被认为是过滤器或特征选择的机制。单个层可以负责精确定位图像中的非常亮的像素,并且后续层识别这些高光一起表示图像中对象的边缘。

卷积神经网络体系结构

除了卷积层之外,通常在它们之间添加池化层。池化层负责通过降低其维度来简化数据。这有效地缩短了培训所需的时间,并有助于遏制过度拟合的问题。卷积和合并层之后是完全连接的层。

在最终的完全连接的层中,第一个中的每个神经元都连接到下一个神经元。此阶段的过程着眼于哪些特征最准确地描述了特定的类,结果是根据深度组织的单个概率向量。例如,在车辆识别系统中,需要考虑许多特征。

汽车的侧视图可能只显示两个轮子。孤立地看,这个不完整的描述可能与摩托车相匹配。因此,将存在非零概率,尽管很小,汽车将被归类为摩托车,反之亦然。重要的是,诸如窗户和/或门的存在之类的附加特征将有助于更准确地确定车辆类型。输出层生成与每个类对应的概率。假设概率最高的是最佳选择。在这个识别汽车的例子中,摩托车的概率较低,因为除其他外,没有可见的门。

用于计算机视觉

CNN最常见的应用是计算机视觉的一般领域。其示例是医学图像分析,图像识别,面部检测和识别系统以及全运动视频分析。

其中一个系统是AlexNet,它是CNN,在赢得2012年ImageNet大规模视觉识别挑战赛时获得了关注。它是一个由8层组成的CNN,其中前五个是卷积的,最后三个是完全连接的层。

CNN的其他应用

CNN一直是研究和测试其他任务的主题,它在解决传统的自然语言处理(NLP)  任务方面非常有效  。具体来说,它在语义分析,句子建模和搜索查询检索方面取得了令人瞩目的成果。

CNN已被用于药物发现领域。AtomNet是一个深度学习NN,它训练化学相互作用的3D表示。它发现了化学特征,并已被用于预测用于对抗疾病的新型生物分子。

最后,值得注意的是,CNN已经应用于更传统的机器学习问题,例如游戏。Checkers和Go都是CNN学习在专业级别上玩的游戏。

RNN vs CNN - 他们不是互斥的!

如果不提及这两种方法彼此不相互排斥,RNN与CNN的比较就不完整。乍一看,似乎它们可能用于处理不同的问题,但重要的是要注意某些类型的数据可以由任一架构处理。这方面的例子是图像分类和文本分类,其中两个系统都是有效的。此外,一些深度学习应用程序可能会受益于两种体系结构的组合。

假设被建模的数据,无论是代表图像还是其他方式,都具有时间属性。这是合并这些技术的理想情况。一种这样的混合方法被称为DanQ架构。它需要固定长度的DNA序列作为输入并预测DNA的特性。卷积层发现序列基序,其是被认为具有生物学功能的短复发模式。重复层负责捕获长期关系或主题之间的依赖关系。这允许系统学习DNA的语法,从而改进预测。

DanQ建立在DeepSEA模型之上,该模型执行与DanQ相同的功能,但不包括RNN组件。DanQ模型的性能优于其前身,从而突出了为架构添加内存和反馈循环的重要性。类似地,RNN组件通过仅考虑已经由CNN过滤的更抽象的数据而受益,使得更容易发现长期关系。

RNN与CNN结论

毫无疑问,在比较RNN与CNN时,两者在深度学习领域都很常见。每种体系结构都有优点和缺点,这取决于所建模的数据类型。当选择一个框架而不是另一个框架,或者创建混合方法时,数据类型和手头的工作是最重要的考虑因素。

RNN用于数据包含时间属性的情况,例如时间序列。类似地,在数据是上下文敏感的情况下,如在句子完成的情况下,由反馈回路提供的存储器的功能对于足够的性能是至关重要的。

CNN是图像分类的首选,更常见的是计算机视觉。此外,CNN已用于无数任务,并且在某些领域优于其他机器学习算法。但是,CNN不能处理可变长度输入。

最后,当数据适合于CNN时,混合RNN和CNN方法可能是优越的,但具有可由RNN组件识别和利用的时间特性。

技术开发 编程 技术框架 技术发展