2020-2-29 深度学习笔记12 - 深度学习应用 1(大规模深度学习)

第十二章 应用

官网

本章主要介绍如何使用深度学习来解决计算机视觉、语音识别、自然语言处理以及其他商业领域中的应用。

一般而言,这些方法使用代价函数的梯度寻找模型(近似于某些所期望的函数)的参数。 当具有足够的训练数据时,这种方法是非常强大的。

大规模深度学习

尽管机器学习模型中单个生物性的神经元或者说是单个特征不是智能的,但是大量的神经元或者特征作用在一起往往能够表现出智能。 所以必须着重强调神经元数量必须很大这个事实。

如今的人工神经网络的规模也仅仅和昆虫的神经系统差不多。

由于规模的大小对于神经网络来说至关重要,因此深度学习需要高性能的硬件设施和软件实现。

  • 快速的CPU实现
    强调通过设计一些特定的CPU上的操作可以大大提升效率。 一条重要的准则就是,通过特殊设计的数值运算,我们可以获得巨大的回报。 除了选择定点运算或者浮点运算以外,其他的策略还包括了如通过优化数据结构避免高速缓存缺失、使用向量指令等。

  • GPU 实现
    许多现代神经网络的实现基于图形处理器。它为视频游戏所设计的特性也可以使神经网络的计算受益。 在通用GPU发布以后,使用显卡训练神经网络的热度开始爆炸性地增长。 这种通用GPU可以执行任意的代码,而并非仅仅渲染子程序

同一个Theano程序可以在CPU或者GPU上运行,而不需要改变调用Theano的方式。 其他库如Tensorflow和Torch也提供了类似的功能。

  • 大规模的分布式实现
    分布式的推断是容易实现的,因为每一个输入的样本都可以在单独的机器上运行。 这也被称为数据并行。同样地,模型并行也是可行的,其中多个机器共同运行一个数据点,每一个机器负责模型的一个部分。 对于推断和训练,这都是可行的。
    但是梯度下降的标准定义完全是一个串行的过程: 第 t t 步的梯度是第 t 1 t-1 步所得参数的函数。 这个问题可以使用异步随机梯度下降解决。 在这个方法中,几个处理器的核共用存有参数的内存。 每一个核在无锁情况下读取这些参数并计算对应的梯度,然后在无锁状态下更新这些参数。 由于一些核把其他的核所更新的参数覆盖了,因此这种方法减少了每一步梯度下降所获得的平均提升。 但因为更新步数的速率增加,总体上还是加快了学习过程。

  • 模型压缩
    在许多商业应用的机器学习模型中,一个时间和内存开销较小的推断算法比一个时间和内存开销较小的训练算法要更为重要。减少推断所需开销的一个关键策略是模型压缩。 模型压缩的基本思想是用一个更小的模型取代原始耗时的模型,从而使得用来存储与评估所需的内存与运行时间更少。

  • 动态结构
    加速数据处理系统的一种策略是构造一个系统,这个系统用动态结构描述图中处理输入的所需计算过程。 在给定一个输入的情况中,数据处理系统可以动态地决定运行神经网络系统的哪一部分。 单个神经网络内部同样也存在动态结构,给定输入信息,决定特征(隐藏单元)哪一部分用于计算。 这种神经网络中的动态结构有时被称为条件计算
    级联的分类器、决策树、开关都是动态结构。

  • 深度网络的专用硬件实现
    长期以来使用较低的精度(8和16位之间)在更短的时间内完成推断也是可行的。
    单个CPU或GPU核心的进展速度已经减慢,并且最近计算速度的改进来自于核心的并行化(无论CPU还是~GPU)。

发布了151 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42555985/article/details/104569000
今日推荐