0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文详解深度学习的5 种架构

C语言专家集中营 来源:未知 作者:工程师3 2018-05-28 16:49 次阅读

连接主义体系结构已存在 70 多年,但新的架构和图形处理单元 (GPU) 将它们推到了人工智能的前沿。深度学习架构是最近 20 年内诞生的,它显著增加了神经网络可以解决的问题的数量和类型。本文将介绍 5 种最流行的深度学习架构:递归神经网络 (RNN)、长短期记忆 (LSTM)/门控递归单元 (GRU)、卷积神经网络 (CNN)、深度信念网络 (DBN) 和深度叠加网络 (DSN),然后探讨用于深度学习的开源软件选项。

深度学习不是单个方法,而是一类可用来解决广泛问题的算法和拓扑结构。深度学习显然已不是新概念,但深度分层神经网络和 GPU 的结合使用加速了它们的执行,深度学习正在突飞猛进地发展。大数据也助推了这一发展势头。因为深度学习依赖于监督学习算法(这些算法使用示例数据训练神经网络并根据成功水平给予奖惩),所以数据越多,构建这些深度学习结构的效果就越好。

深度学习与 GPU 的兴起

深度学习由不同拓扑结构的深度网络组成。神经网络已存在很长一段时间,但多层网络(每个层提供一定的功能,比如特征提取)的开发让它们变得更加实用。增加层数意味着各层之间和层内有更多相互联系和更多权值。在这里,GPU 可为深度学习带来助益,使训练和执行这些深度网络成为可能(原始处理器在这方面的效率不够高)。

GPU 在一些关键方面与传统多核处理器不同。首先,一个传统处理器可能包含 4 - 24 个通用 CPU,但一个 GPU 可能包含 1,000 - 4,000 个专用数据处理核心。

一文详解深度学习的5 种架构

与传统 CPU 相比,高密度的核心使得 GPU 变得高度并行化(也就是说,它可以一次执行许多次计算)。这使得 GPU 成为大型神经网络的理想选择,在这些神经网络中,可以一次计算许多个神经元(传统 CPU 可以并行处理的数量要少得多)。GPU 还擅长浮点矢量运算,因为神经元能执行的运算不止是矢量乘法和加法。所有这些特征使得 GPU 上的神经网络达到所谓的高度并行(也就是完美并行,几乎不需要花精力来并行化任务)。

深度学习架构

深度学习中使用的架构和算法数量丰富多样。本节将探讨过去 20 年来存在的深度学习架构中的 5 种。显然,LSTM 和 CNN 是此列表中最古老的两种方法,但也是各种应用中使用最多的两种方法。

一文详解深度学习的5 种架构

些架构被应用于广泛的场景中,但下表仅列出了它们的一些典型应用。

现在,让我们了解一下这些架构和用于训练它们的方法。

递归神经网络

RNN 是一种基础网络架构,其他一些深度学习架构是基于它来构建的。典型多层网络与递归网络之间的主要差别是,递归网络没有完整的前馈连接,它可能拥有反馈到前几层(或同一层)的连接。这种反馈使 RNN 能保留对过去的输入的记忆并按时间为问题建模。

RNN 包含丰富的架构(接下来我们将分析一种名为 LSTM 的流行拓扑结构)。关键区别在于网络中的反馈,这可以在隐藏层、输出层或二者的某种组合中体现出来。

一文详解深度学习的5 种架构

RNN 可以按时间展开并通过标准反向传播进行训练,或者使用一种沿时间反向传播 (BPTT) 的反向传播变形来训练。

LSTM/GRU 网络

LSTM 是 Hochreiter 和 Schimdhuber 于 1997 年共同创建的,最近几年,作为一种用于各种用途的 RNN 架构,LSTM 变得越来越受欢迎。您可以在每天使用的产品(比如智能手机)中发现 LSTM。IBM 在 IBM Watson®中应用了 LSTM,在对话语音识别上取得了里程碑式的成就。

LSTM 脱离了基于典型神经元的神经网络架构,引入了记忆细胞的概念。记忆细胞可以作为输入值的函数,短时间或长时间地保留自身的运算值,这使得该细胞能记住重要的信息,而不只是它最后计算的值。

LSTM 记忆细胞包含 3 个控制信息如何流进或流出细胞的门。输入门控制新信息何时能流入记忆中。遗忘门控制何时遗忘一段现有信息,使细胞能记忆新数据。最后,输出门控制细胞中包含的信息何时用在来自该细胞的输出中。记忆细胞还包含控制每个门的权值。训练算法(通常为 BPTT)基于得到的网络输出错误来优化这些权值。

一文详解深度学习的5 种架构

2014 年,推出了 LSTM 的一个简化版本,叫做门控递归单元。此模型有两个门,抛弃了 LSTM 模型中存在的输出门。对于许多应用,GRU 拥有类似于 LSTM 的性能,但更简单意味着更少的权值和更快的执行速度。

GRU 包含两个门:更新门和重置门。更新门指示保留多少以前细胞的内容。重置门定义如何将新输入与以前的细胞内容合并。GRU 可以通过将重置门设置为 1 并将更新门设置为 0 来模拟标准 RNN。

一文详解深度学习的5 种架构

GRU 比 LSTM 更简单,能更快地训练,而且执行效率更高。但是,LSTM 更富于表达,有更多的数据,能带来更好的结果。

卷积神经网络

CNN 是一种多层神经网络,该网络的创作灵感来自动物的视觉皮质。该架构在图像处理应用中特别有用。第一个 CNN 是由 Yann LeCun 创建的,当时,该架构专注于手稿字符识别,比如邮政编码解释。作为一种深度网络,早期的层主要识别各种特征(比如边缘),后来的层将这些特征重新组合到输入的更高级属性中。

LeNet CNN 架构包含多个层,这些层实现了特征提取,然后实现了分类(参见下图)。图像被分成多个接受区,其中注入了随后可从输入图像中提取特征的卷积层。下一步是池化,它可以(通过降采样)降低提取的特征的维度,同时保留最重要的信息(通常通过最大池化)。然后执行另一个卷积和池化步骤,将结果注入一个完全连接的多层感知器中。此网络的最终输出层是一组节点,这些节点标识了图像的特征(在本例中,每个节点对应一个识别出的数字)。您可以使用反向传播训练该网络。

一文详解深度学习的5 种架构

深层处理、卷积、池化和完全连接的分类层的使用,为深度学习神经网络的各种新应用开启了一扇门。除了图像处理之外,CNN 还成功应用到了视频识别和各种自然语言处理任务中。

人们最近应用 CNN 和 LSTM 来生成图像和视频说明系统,使用自然语言总结图像或视频内容。CNN 实现了图像或视频处理,LSTM 经过训练可以将 CNN 输出转换为自然语言。

深度信念网络

DBN 是一种典型的网络架构,但它包含一种新颖的训练算法。DBN 是一种多层网络(通常是深度网络,包含许多隐藏层),其中的每对连接的层都是一个受限玻尔兹曼机 (RBM)。通过这种方式,将 DBN 表示为一些叠加的 RBM。

在 DBN 中,输入层表示原始感知输入,每个隐藏层都学习此输入的抽象表示。输出层的处理方式与其他层稍有不同,它实现了网络分类。训练分两步进行:无监督预训练和监督调优。

一文详解深度学习的5 种架构

在无监督预训练过程中,会训练每个 RBM 来重构它的输入(例如,第一个 RBM 将输入层重构到第一个隐藏层)。用类似方式训练下一个 RBM,但将第一个隐藏层视为输入(或可视)层,通过使用第一个隐藏层的输出作为输入来训练 RBM。此过程一直持续到完成每一层的预训练。完成预训练后,开始进行调优。在此阶段,可对输出节点使用标签来提供它们的含义(它们在网络的上下文中表示的含义)。然后使用梯度下降学习或反向传播来应用整个网络训练,从而完成训练过程。

深度叠加网络

最后要介绍的一种架构是 DSN,也称为深凸网络。DSN 不同于传统的深度学习框架,因为尽管它包含一个深度网络,但它实际上是各个网络的深度集合,每个网络都有自己的隐藏层。此架构是对一个深度学习问题的一种回应:训练的复杂性。深度学习架构中的每一层的训练复杂性都呈指数级增长,所以 DSN 未将训练视为单一问题,而将它视为单独训练问题的集合。

DSN 包含一组模块,每个模块都是 DSN 的整体分层结构中的一个子网。在此架构的一个实例中,为 DSN 创建了 3 个模块。每个模块都包含一个输入层、一个隐藏层和一个输出层。模块彼此堆叠,一个模块的输入包含前一层的输出和原始输入矢量。这种分层使整个网络能学习比单个模块更复杂的分类。

一文详解深度学习的5 种架构

DSN 允许隔离训练各个模块,这使得它们能并行训练,因而具有很高的效率。监督训练实现为每个模块上的反向传播,而不是在整个网络上的反向传播。对于许多问题,DSN 表现得都比典型 DBN 更好,这使它们成为了一种流行且高效的网络架构。

开源框架

这些深度学习架构肯定是可以实现的,但从头开始可能很耗时,而且也需要时间来优化它们并让它们变得成熟。幸运的是,可以利用一些开源框架来更轻松地实现和部署深度学习算法。这些框架支持 Python、C/C++Java®等语言。让我们看看 3 种最流行的框架和它们的优缺点。

Caffe

Caffe 是最流行的深度学习框架之一。Caffe 最初是在一篇博士论文中发布的,但现在已依据 Berkeley Software Distribution 许可进行发布。Caffe 支持许多深度学习架构,包括 CNN 和 LSTM,但它明显不支持 RBM 或 DBM(不过即将发布的 Caffe2 将会支持它们)。

图像分类和其他视觉应用中已采用 Caffe,而且 Caffe 支持通过 NVIDIA CUDA Deep Neural Network 库实现基于 GPU 的加速。Caffe 支持采用开放多处理 (Open Multi-Processing, OpenMP) 在一个系统集群上并行执行深度学习算法。为了保证性能,Caffe 和 Caffe2 是用 C++ 编写的,它们还为深度学习的训练和执行提供了 Python 和 MATLAB 接口

Deeplearning4j

Deeplearning4j 是一种流行的深度学习框架,它专注于 Java 技术,但包含适用于其他语言的应用编程接口,比如 Scala、Python 和 Clojure。该框架依据 Apache 许可而发布,支持 RBM、DBN、CNN 和 RNN。Deeplearning4j 还包含兼容 Apache Hadoop 和 Spark(大数据处理框架)的分布式并行版本。

人们已应用 Deeplearning4j 来解决众多问题,包括金融领域中的欺诈检测推荐系统、图像识别或网络安全(网络入侵检测)。该框架集成了 CUDA 来实现 GPU 优化,而且可通过 OpenMP 或 Hadoop 进行分发。

TensorFlow

TensorFlow 是 Google 开发的一个开源库,是从闭源 DistBelief 衍生而来。可以使用 TensorFlow 训练和部署各种神经网络(CNN、RBM、DBN 和 RNN),TensorFlow 是依据 Apache 2.0 许可而发布的。人们已应用 TensorFlow 来解决众多问题,比如图像说明、恶意软件检测、语音识别和信息检索。最近发布了一个专注于 Android 的堆栈,名为 TensorFlow Lite。

可以在 Python、C++、Java 语言、Rust 或 Go(但 Python 最稳定)中使用 TensorFlow 开发应用程序,并通过 Hadoop 分散执行它们。除了专业的硬件接口之外,TensorFlow 还支持 CUDA。

Distributed Deep Learning

IBM Distributed Deep Learning (DDL) 被称为“深度学习的喷气式引擎”,这个库链接到了 Caffe 和 TensorFlow 等领先框架中。可在服务器集群和数百个 GPU 上使用 DDL 来加速深度学习算法。DDL通过定义最终路径来优化神经元计算的通信,最终的数据必须在GPU之间进行。通过轻松完成 Microsoft 最近设置的一个图像识别任务,证明深度学习集群的瓶颈能够得以解决。

结束语

深度学习是通过一系列架构来表示的,这些架构可为各种各样的问题领域构建解决方案。这些解决方案可以专注于前馈的网络,或者是允许考虑以前的输入的递归网络。尽管构建这些类型的深度架构可能很复杂,但可以使用各种开源解决方案(如Caffe,Deeplearning4j,TensorFlow和DDL)来快速启动和运行。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4729

    浏览量

    128890
  • 深度学习
    +关注

    关注

    73

    文章

    5500

    浏览量

    121113
  • 卷积神经网络

    关注

    4

    文章

    367

    浏览量

    11863

原文标题:深度学习架构

文章出处:【微信号:C_Expert,微信公众号:C语言专家集中营】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    深度学习的硬件架构解析

    深度学习在这十年,甚至是未来几十年内都有可能是最热门的话题。虽然深度学习已是广为人知了,但它并不仅仅包含数学、建模、学习和优化。算法必须在优
    发表于 11-18 16:00 5742次阅读

    详解机器学习深度学习的区别

    深度学习这几年特别火,就像5年前的大数据样,不过深度学习其主要还是属于机器
    发表于 09-06 12:48 2474次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>详解</b>机器<b class='flag-5'>学习</b>和<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的区别

    详解】FPGA:深度学习的未来?

    (FPGA)提供了另个值得探究的解决方案。日渐流行的FPGA设计工具使其对深度学习领域经常使用的上层软件兼容性更强,使得FPGA更容易为模型搭建和部署者所用。FPGA架构灵活,使得研
    发表于 08-13 09:33

    如何在交通领域构建基于图的深度学习架构

    学习架构因为这篇文献对于交通领域中的各种问题、方法做了个比较清楚的综述,所以是篇很有价值的文献,很适合刚进入这个方向的同学。
    发表于 08-31 08:05

    新芯片架构瞄准深度学习和视觉处理

    深度学习本质上是以组算法为基础,透过具有多个处理层、由线性与非线性交易组成的深度绘图,尝试在数据中建模高层级抽象。ThinCI架构的独特之
    发表于 11-03 15:17 1877次阅读
    新芯片<b class='flag-5'>架构</b>瞄准<b class='flag-5'>深度</b><b class='flag-5'>学习</b>和视觉处理

    深度好文,详解PowerVR Furian GPU架构的改变(二)

    昨日,《深度好文,详解PowerVR Furian GPU架构的改变()》展示了Furia
    发表于 04-28 16:54 2145次阅读

    深度学习的三基本结构及原理详解

    深度学习是计算机领域中目前非常火的话题,不仅在学术界有很多论文,在业界也有很多实际运用。本篇博客主要介绍了三基本的深度学习
    发表于 11-15 11:53 4.8w次阅读

    读懂深度学习与机器学习的差异

    机器学习深度学习变得越来越火。突然之间,不管是了解的还是不了解的,所有人都在谈论机器学习深度学习
    发表于 11-16 01:38 3074次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b>读懂<b class='flag-5'>深度</b><b class='flag-5'>学习</b>与机器<b class='flag-5'>学习</b>的差异

    解读深度学习的发展

    在2018清洁发展国际融资论坛上,北京交通大学人工智能研究院常务副院长、教授于剑先生从专业角度回顾了人工智能的发展历程,并介绍了深度学习的适用范围和所面临的问题。他指出,深度学习是机器
    的头像 发表于 10-05 17:29 2288次阅读

    MIT深度学习基础知识 编码器-解码器架构分析

    本文以 7 架构范例简要介绍深度学习,每种范例均提供 TensorFlow 教程链接。
    的头像 发表于 02-21 15:53 1.1w次阅读
    MIT<b class='flag-5'>深度</b><b class='flag-5'>学习</b>基础知识 编码器-解码器<b class='flag-5'>架构</b>分析

    深度学习的三学习模式介绍

    深度学习个广阔的领域,它围绕着一种形态由数百万甚至数十亿个变量决定并不断变化的算法——神经网络。似乎每隔天就有大量的新方法和新技术被提
    的头像 发表于 10-23 14:59 1.3w次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>的三<b class='flag-5'>种</b><b class='flag-5'>学习</b>模式介绍

    什么是深度学习(Deep Learning)?深度学习的工作原理详解

    学习中的“深度词表示用于识别数据模式的多层算法或神经网络。DL 高度灵活的架构可以直接从原始数据中学习,这类似于人脑的运作方式,获得更多
    的头像 发表于 04-01 10:34 1.1w次阅读

    深度学习的七策略

    ,需要执行些策略。在本文中,我们将讨论七深度学习策略,这些策略可以帮助人们更好地发掘深度学习
    的头像 发表于 08-17 16:02 1940次阅读

    什么是深度学习算法?深度学习算法的应用

    什么是深度学习算法?深度学习算法的应用 深度学习算法被认为是人工智能的核心,它是
    的头像 发表于 08-17 16:03 2143次阅读

    详解pcb地孔的作用

    详解pcb地孔的作用
    的头像 发表于 10-30 16:02 1637次阅读