社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

深度学习训练和推理有何不同?

机器学习AI算法工程 • 4 年前 • 340 次点击  


向AI转型的程序员都关注了这个号👇👇👇

机器学习AI算法工程   公众号:datayx


要理解什么是深度神经网络的“训练(training)”,我们可以把它类比成在学校中学习。神经网络和大多数人一样——为了完成一项工作,需要接受教育。


具体来说,经过训练(training)的神经网络可以将其所学应用于数字世界的任务——例如:识别图像、口语词、血液疾病,或者向某人推荐她/他接下来可能要购买的鞋子等各种各样的应用。这种更快更高效的版本的神经网络可以基于其训练成果对其所获得的新数据进行「推导」,在人工智能领域,这个过程被成为“推理(inference)”。


没有训练,就不可能会有推理。这很容易讲通,因为我们人类大多时候就是这样获取和使用知识的。正如我们不需要一直围着老师、满架的书架或名牌院校转也能阅读莎士比亚的十四行诗一样,推理并不需要其训练方案中的所有基础设施就能做得很好。


所以,就让我们把AI分解成训练和推理两个过程,看看它们各自是如何工作的。

训练深度神经网络

尽管教育过程(或者训练)的目标都是一样的——获得知识(knowledge),但神经网络的训练和我们人类接受教育的过程还是有着很大的不同。神经网络是对人类大脑的初步模仿————神经元之间的所有互连。但是,不同于我们的大脑,人类大脑中的神经元可以连接到特定物理距离内任何其它神经元,而人工神经网络却不是这样——它分为很多不同的层(layer)、连接(connection)和数据传播(data propagation)的方向。

训练一个神经网络时,训练数据被输入该网络的第一层,同时一个神经元会基于所执行的任务为该输入分配一个权重——即该输入正确与否的程度。

在一个用于图像识别的网络中,第一层可能是用来寻找图像的边缘。第二层可能是寻找这些边所构成的形状——矩形或圆形。第三层可能是寻找特定的特征——比如闪亮的眼睛或按钮式的鼻子。每一层都会将图像传递给下一层,直到最后一层;最后的输出由该网络所产生的所有这些权重总体决定。

但这就是训练和我们的教育过程的不同之处。假设我们有一个任务是识别图像中的猫:神经网络会在获取了所有的训练数据,并计算了权重之后才能得出结论说图像中是否是「猫」。其只能通过训练算法得到“正确”或“错误”这样的反馈。

训练需要密集的计算

如果该算法告诉神经网络它错了,它依然不知道什么才是正确的答案。这个错误会通过网络的层反向传播回来,该网络则须做出心的猜测。在每一次尝试中,它都必须考虑其它属性——在我们的例子中是「猫」的属性——并为每一层所检查的属性调整权重高低。然后它再次做出猜测,一次又一次……直到其得到正确的权重配置,从而最终可以在所有的尝试中都能几乎得到正确的答案,知道这是一只猫。

现在你得到了一个数据结构,其中所有的权重基于其通过训练数据集中所学到的内容基础上进行了调平。这是一种经过了精心优化微调的美丽事物。但问题在于,这个过程却是个算力消耗巨大的怪兽。曾在谷歌和斯坦福大学做过研究,并在百度硅谷实验室担任过首席科学家的吴恩达曾说过,训练一个百度的汉语语音识别模型不仅需要 4 TB 的训练数据,而且在整个训练周期中还需要 20 exaflops(百亿亿次浮点运算)的算力。这样的算力需求,绝不是一部智能手机所能达到的。

神经网络训练好了,已经为推理做好了准备

准确分配加权了的神经网络本质上是一个笨重的巨型数据库。此前,你为了让它学习而准备的各种东西(在我们的教育,这些就好比是我们所需的所有铅笔、书本、老师的教导等)已经远远多于它在完成某一特定任务时所需的内容。

在现实世界中,如果有人想使用这些训练,你真正所需的是一种可以保持学习并能将其学习成果应用于其从未见过的数据的快速应用,这就是推理:只需要少得多的真实世界数据,就能快速得出正确答案(实际上是对什么是正确的的预测)。

尽管这是计算机科学的一个全新领域,但我们仍有两种主要的方法可以对迟钝的神经网络进行修改,以使其速度更快并改善应用在跨多个网络运行时所造成的延迟。

推理是如何实现的?

第一个方法着眼于神经网络中训练之后就不再激活的部件。这些部分已不再被需要,可以被“修剪”掉。第二个方法是寻找方法将神经网络的多个层融合成一个单一的计算步骤。

这类似于数字图像的压缩。设计师可能设计了这些巨大的、美丽的、数百万像素宽和高的图像,但如果要将它们放到网上,就需要将它们转换成 jpeg 格式。对人眼来说,它们看起来基本上完全相同,只是分辨率不一样。推理也是类似的,你可以得到预测的几乎同样的准确度,但简化、压缩和优化可以提升运行时的性能。

这意味着我们可以一直使用推理。你的智能手机的声控助手使用了推理,谷歌的语音识别、图像搜索和垃圾邮件过滤应用也都是用了推理。百度也在语音识别、恶意程序检测和垃圾消息过滤中使用了推理。Facebook 的图像识别和亚马逊与 Netflix 的推荐引擎全都依赖于推理。

GPU具备并行计算(同时进行多个计算)能力,既擅长训练,也擅长推理。使用 GPU 训练的系统可以让计算机在某些案例中实现超过人类水平的模式识别和对象检测。

训练完成后,该网络可被部署在需要“推理”(对数据分类以“推理”出一个结果)的领域中。而具备并行计算能力的 GPU 可以基于训练过的网络运行数十亿的计算,从而快速识别出已知的模式或对象。

你可以看到这些模型和应用将会越来越聪明、越来越快和越来越准确。训练将越来越简单,推理也将为我们生活的方方面面带来新的应用。

 END

阅读过本文的人还看了以下文章:


【全套视频课】最全的目标检测算法系列讲解,通俗易懂!


《美团机器学习实践》_美团算法团队.pdf


《深度学习入门:基于Python的理论与实现》高清中文PDF+源码


python就业班学习视频,从入门到实战项目


2019最新《PyTorch自然语言处理》英、中文版PDF+源码


《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码


《深度学习之pytorch》pdf+附书源码


PyTorch深度学习快速实战入门《pytorch-handbook》


【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》


《Python数据分析与挖掘实战》PDF+完整源码


汽车行业完整知识图谱项目实战视频(全23课)


李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材


笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!


《神经网络与深度学习》最新2018版中英PDF+源码


将机器学习模型部署为REST API


FashionAI服装属性标签图像识别Top1-5方案分享


重要开源!CNN-RNN-CTC 实现手写汉字识别


yolo3 检测出图像中的不规则汉字


同样是机器学习算法工程师,你的面试为什么过不了?


前海征信大数据算法:风险概率预测


【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类


VGG16迁移学习,实现医学图像识别分类工程项目


特征工程(一)


特征工程(二) :文本数据的展开、过滤和分块


特征工程(三):特征缩放,从词袋到 TF-IDF


特征工程(四): 类别特征


特征工程(五): PCA 降维


特征工程(六): 非线性特征提取和模型堆叠


特征工程(七):图像特征提取和深度学习


如何利用全新的决策树集成级联结构gcForest做特征工程并打分?


Machine Learning Yearning 中文翻译稿


蚂蚁金服2018秋招-算法工程师(共四面)通过


全球AI挑战-场景分类的比赛源码(多模型融合)


斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)


python+flask搭建CNN在线识别手写中文网站


中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程



不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

长按图片,识别二维码,点关注


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56573
 
340 次点击