12. 深度学习实践:应用篇

本文深入探讨了深度学习在大规模应用中的实践,包括CPU和GPU实现、模型压缩以及专用硬件的发展。重点讨论了计算机视觉的预处理,语音识别的HMM-GMM模型和深度学习的进展,以及自然语言处理中的N-gram和神经语言模型。深度学习在推荐系统和知识表示、推理与问答等领域也展现出广阔的应用前景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

尽管深度学习的目标是设计能够处理各种任务的算法,但截至目前,其应用仍需一定程度的特化,我们重点关注CV,语音识别,NLP,以及其他商业领域的应用。

1. 大规模深度学习

DL基于联结主义,大量神经元作用在一起往往能够表示智能。神经元数量必须很大。相比上个世纪80年代,如今NN的精度和任务复杂度进一步提升,一个关键因素是网络规模的巨大提升。但即便如此,NN的规模也仅和昆虫级别差不多。


每个神经元的联结量,已接近高级生物水平(数字表示对应年份的成果)

神经元的数量,达到昆虫级别,和人类仍差距很大

1.1 快速的CPU实现

传统的NN用单机CPU训练(那会儿也没啥用),如今看来不可取。在大规模使用GPU之前,研究者们通过设计一些特定的CPU上的操作来大大提升计算效率,例如调整定点运算等。

1.2 GPU实现

现代NN的实现基于GPU(图形处理器/显卡),其最初是为图形应用而开发的专用硬件。视频游戏系统的消费市场,刺激了GPU的发展,在游戏设计上的特性,很好的转到了NN的计算上来。

1.2.1 为何能从游戏转到NN上?

  • 并行化:视频游戏渲染需要快速、并行地执行计算。游戏环境和角色模型通过3D坐标实现,为了将其转化为2D显示器上的坐标,显卡需要并行地对许多矩阵执行乘法和除法。然后,显卡继续在每个像素上执行计算。这些计算是非常简单的,不涉及CPU常遇到的那种复杂分支运算等。例如,同一个刚体内的每个顶点都会乘上相同矩阵。各个计算过程完全独立,因此可并处处理。
  • 带宽高:游戏视频的计算过程中,还涉及处理大量内存缓冲,以及描述每一个需要被渲染对象的纹理的位图信息,这些要求使得显卡设计时,拥有高度并行特性,和很高的内存带宽。

NN算法所需要的性能特性是相同的。训练时通常不涉及大量分支运算和控制指令。计算中大量参数每次迭代都要更新,带来很大缓冲,内存带宽常为瓶颈。NN可被分为多个单独的神经元,并独立于同一层内其他神经元进行处理,带来并行。因此,GPU很适合NN的训练。

1.2.2 GPU的火爆

人们发现了GPU用于科学计算,发布了通用GPU,用显卡训练NN的风潮开始了。NVIDIA发布了CUDA编程语言。软硬环境的齐备,通用GPU成为训练NN的理想平台。

在GPU上写高效代码是一个难题。在GPU上获得良好性能所需技术和传统CPU不同,例如GPU中,大多数可写内存位置并不会被高速缓存,计算某个值两次往往比计算一次然后从内存中读取更快。GPU代码天生多线程,不同线程之间要仔细协调好。GPU中常见设定是一个组中的所有线程都同时执行同一指令,意味着难以执行分支操作。

为解决这个问题,人们建立了一个包含高效操作的软件库,如包含卷积和矩阵乘法,然后从库中调用所需的操作来建立模型。例如 ML库 Pylearn2 中的算法均基于调用Theano和cuda-convnet 提供的高性能操作来指定。分层好处在于,简化对多种硬件的支持,因为Theano程序可在CPU/Gpu模式下运行,无需改变调用方式。其他还包括TensorFlow,Torch等。

1.2.3 大规模的分布实现

把训练或者推断的任务,分摊到多个机器上实现。

  • 数据并行:每台机器跑一部分样本(每台都部署模型,多个安检口)
  • 模型并行:每台机器负责一部分模型(数据在各台上流动,训的训,推的推)

作者简要提了,不再赘述。

1.2.4 模型压缩

商业应用中,一个时间内存开销都小的推断算法,比训练算法更为重要。对不需个性化设计的应用,只需一次训练,然后成千上万用户使用,例如部署到手机上。减少推断所需开销的一个策略:模型压缩,用一个更小的模型取代原始耗时的模型。

了解下概念,不再赘述。

1.2.5 动态结构

加速数据处理系统的一种策略:动态结构。给定一个输入,系统可动态决定运行NN的哪部分。也被称为条件计算。由于模型结构中许多部分可能只跟输入的一小部分有关,只计算那些需要的特征可起到加速的目的。决策树模型就是动态结构的一个例子,它是一堆if-else的集合。借鉴过来,训练一个决策树,其中每个节点使用NN做出决策(1992年)。

1.2.6 专用硬件实现

自从NN研究以来,硬件设计者已在致力于加速NN的专用硬件实现。如近年来的FPGA的长足发展足以证明(有人用FPGA强大的计算能力来做NN训练)。在针对诸如手机等低功率设备开发新的硬件设计,并且想要用于DL的一般公众应用(如语音识别等)时,研究专用硬件能够进一步推动其发展。2015年研究表明,低精度实现的工作是一个方向。

2. 计算机视觉

视觉是一个对人类以及许多动物毫不费力,但对计算机充满挑战的任务。DL中常用标准基准任务包括对象识别和OCR。大多数CV中的深度学习往往用于对象识别或者某种形式的检测(复现人类能力)。

2.1 预处理

原始输入往往以深度学习架构难以表示的形式出现。CV通常只需要相对少的预处理。图像应该标准化,使得像素在相同并且合理的范围内。将图像格式化为具有相同比例,严格上说是唯一一种必要的预处理。然而,即使这种操作也并不总是必要的,一些现代CNN接受可变大小的输入,并可动态调整池化大小以保持输出大小的恒定。其他CNN模型具有可变大小输出,尺寸可随输入自动缩放,例如图像逐像素标注模型。

数据集增强,可看做是只对训练集预处理的方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值