前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据是什么(续)

大数据是什么(续)

作者头像
木可大大
发布2018-07-25 15:05:14
4780
发布2018-07-25 15:05:14
举报
文章被收录于专栏:木可大大木可大大

背景

从亚马逊到Facebook,再到谷歌和微软,全球最顶尖、最有影响力的技术公司都将目光转向了人工智能(AI)。本文将介绍AI、机器学习以及深度学习,其中着重介绍深度学习是如何工作的,以及深度学习为何直到今天才开始成熟,最后,介绍开源的深度学习框架。

“人工智能(AI)”这个词由达特茅斯大学助理教授John McCarthy在1956年提出,作为一种统称,AI可用于指代可体现出智能行为的硬件或软件。按照McCarthy教授的说法,这是一种“可以制造出智能的机器,尤其是智能的计算机程序的科学和工程。”

机器学习

机器学习(ML)是AI的一个子集。所有机器学习都是AI,但并非所有AI都是机器学习。当今人们对AI的兴趣主要体现在对机器学习技术的关注中,使得这一技术快速得到显著进步。

机器学习算法可通过训练进行学习。最开始,可以为算法提供输出结果已知的样本数据,并将实际结果与预测结果的差异进行对比,随后对所输出内容的权重进行调优,借此改善预测结果的精确度,知道最终获得优化。因此机器学习算法的界定特征就在于通过经验结果进行改善所取得的质量。我们提供的数据越多就能创建出越好的预测引擎。

目前机器学习方法已经超过15种,每种都可以使用不同的算法结构通过收到的数据对预测进行优化。作为其中的一种方法,“深度学习”在很多全新领域实现了突破性的结果,下文将详细介绍。算法其实还有很多,其他算法虽然不像深度学习那样获得了最为广泛的关注,但也有自己的价值,因为可以使用与更广泛的用例中。除了深度学习,其它最实用的机器学习算法还包括:“Random forests(随机深林)”,通过穿件大量决策树对预测进行优化;“Bayesian networks(贝叶斯网络)”,使用基于概率的方法分析变量和变量之间的关系;“支持向量机(Vector machine)”,可通过多种分类样本并创建模型将新的输入内容分配给某一类。每种方法各有利弊,并能混合使用。针对特定问题选择哪种算法,主要取决于各种因素,包括可用数据集的本质特征等。实际上开发者通常趋向于通过多种实验确定最佳算法。

机器学习技术的用例因具体需求和想象力而各不相同。只要有合适的数据,我们就可以为无数用途构建所需的算法,例如:根据购买记录推荐顾客可能愿意购买的产品,预测汽车组装流水线的机器手什么时候会故障,预测邮件地址是否输入有误,估算某笔信用卡存在欺诈情况的可能性等。

深度学习

深度学习(Deep Learning)的概念由加拿大多伦多大学教授Geoffrey Hinton等人于2006年提出,它本质上是一种神经网络算法,其原理是通过模拟人脑进行分析学习,算法训练时可以不用人工干预,因此它也属于一种无监督机器学习算法。从深度学习的概念提出至今,已历经十年多时间,期间,无论是国际互联网巨头Google、微软、百度,还是全世界各大学术研究机构,都投入了巨大的人力、财力用于理论和工业级应用的探索,并在字符识别(OCR)、图像分类、语音识别、无人自动驾驭、自然语言处理等众多领域内取得了突破性的进展,极大地推动了人工智能(AI)的发展。

2012年斯坦福大学的Andrew Ng和Jeff Dean教授共同主导的Google Brain项目通过使用深度学习让系统能够自动学习并识别猫,这项目研究引起了学术界何工业界极大的轰动,激起了全世界范围研究深度学习的热潮。2016年3月,Google旗下DeepMind公司开发的AlphaGo以4:1的总比分战胜了世界围棋冠军、职业九段选手李世石,这让人们对人工智能(AI)的认知越到一个新的阶段。

深度学习在众多领域的成功应用,离不开学术界及工业界对该技术的开放态度,在深度学习发展初始,相关代码就被开源,使得深度学习“飞入寻常百姓家”,大大降低了学术界研究及工业界使用的门槛。本节对当前主流的开源深度学习框架发展趋势进行分析。

深度学习是如何工作的

鉴于其重要性,我们有必要对深度学习的工作原理进行介绍。深度学习需要使用人造“神经网络”,这是一种相互连接的“神经元”的集合。人造神经元可以接受一种或多种输入。神经元会针对输入结果执行数学运算,并产生可输出的结果。输出的结果取决于每类输入的“权重”以及神经元的“输入-输出函数”配置。输入-输出函数各异。神经元可以是:1.一种线性单位,输出结果与输入总权重成比例;2.一种阈值单位,输出结果为两个级别中的一种,取决于总输入是否高于某一特定值;3. 一种S型代为,输出结果频繁变化,而不像输入那样呈现线性变化的态势。

多个神经元相互连接组成神经网络,一个神经元输出可以成为另一个神经元的输入,如下图所示。

神经网络可通过组织整理呈现为多层神经元(这也是“深度”这个词的由来)。其中“输入层”负责接收由网络处理的信息,例如一组图片。“输出层”负责提供结果。输入和输出层之间还有“隐藏层”,大部分活动均在这一层中发生。通常来说,神经网络上每一层神经元的输出内容均可成为下一层神经元的输入内容之一。如下图所示。

以图像识别算法举例说明。假设要识别图片中的人脸。将数据装入神经网络后,第一层负责识别局部对比模式,例如图片边缘,这是一种底层特征。随着图片在整个网络中流动,逐渐提取出高层特征,例如从边缘到鼻子,再从鼻子到面孔,如下图所示。

在输出层面,根据训练效果,神经网络会就图片是每种特定类型的可能性给出概率(人脸:97%;气球:1%;树叶:2%)。

通常来说,神经网络的训练过程需要大量已经进行过分类的样本。随后算法会通过检测出的错误和神经元之间的连接权重进行调整,借此改善效果。优化过程的重复性极高,训练完成后即可部署系统并对未分类图片进行评估。

上文描述的是一种很简单的神经网络,实际上神经网络的结构可能各异,并且大部分都非常复杂。各种常见变体包括:同层神经元之间的额不同连接,每层神经元数量的变化,以及将神经元的输出结果流向前一层网络(递归神经网络)的连接。

神经网络的设计和完善需要投入相当多的技能。例如针对特定应用调整网络结构,提供事宜的训练数据集,根据进展调整网络结构,以及多种方法的混合使用等。

为何深度学习直到今天才开始成熟

由于新算法的陆续完善,所需要数据的大量丰富,用于训练的硬件日益强大,以及云服务对开发者的逐渐催化,AI的实际应用效果在近些年有了大幅改进。

1. 算法的改进

虽然深度学习算不上一种新技术,早在1965年就有人提出了第一个实际有效的多层神经网络规范,但最近十年深度学习算法的革新催生了截然不同的结果。

识别图像中物体的能力随着卷积神经网络(CNN,Convolutional Neural Network)的发展产生了突飞猛进的提高。受到动物视觉脑皮层工作原理启发设计而来的CNN中,神经网络中的每一层均可从当判断特定模式是否存在所用的刷选器。2015年,微软基于CNN的计算机视觉系统在对图片中物体进行识别方面实现了比人类更高的准确度(计算机:95.1%;人类:94.9%)。

与此同时,随着递归神经网络(RNN,Recurrent Neural Network)的诞生,语音和手写识别方面也取得飞速进展。不同于卷积神经网络仅向下馈送的运作方式,RNN可通过反馈连接让数据呈环路流动。RNN还出现了一种更强大的新类型:长短期记忆(LSTM,Long Short Term Memory)模型。在额外的连接和内存细胞的帮助下,RNN可以记住自己在数前部操作之前看到的数据,并使用这些数据对后续需要关注的内容进行解释:这一特性对语音识别产生了巨大的帮助,因为对下一个词的理解通常会受到之前所处理词汇的影像。从2012年开始,谷歌就在使用LSTM驱动Android中的语音识别系统。

2. 专用硬件

图像处理器(GPU, GraphicsProcessing Unit)是一种特殊设计的电子电路,可大幅缩短为深度学习训练神经网路所需的时间。

现代化的GPU最初诞生于二十世纪九十年代末,当时主要是为了3D游戏和3D开发应用程序进行加速。在3D环境中平移和缩放镜头需要重复用到一种名为矩阵计算的数据运算过程,串行架构的微处理器,包括当今大部分计算机所用的CPU很不适合用来处理此类任务。为了更高效地执行举证计算,GPU通常会使用大规模并行架构来制造(Nvidia M40包含3072个内核)。

神经网络的训练会设计大量矩阵计算。因此人们发现原本针对3D游戏设计的GPU其实很适合用来对深度学习过程加速。这样做获得了巨大的收益:一颗GPU即可让神经网络的训练时间缩短5倍,针对一些较大规模的问题甚至可实现10倍甚至更高的加速。在配合针对深度学习框架进行优化的软件开发工具包之后,甚至还可以进一步加快训练速度。

3. 海量的数据

深度学习所用的神经网络通常需要用大量的数据集进行训练,样本数量从数千起步,甚至可高达数百万。好在数据的创建速度和可用型也经历了指数形式的增长。今天,随着我们大数据时代,人类平均每天会生成2.2EB(23亿GB)数据,全球数据总量中有90%是过去24个月创建的。

4. 云服务

开发者对机器学习的应用还受到云端机器学习基础架构和业界领先云供应商所提供服务的推动。谷歌、亚马逊、微软,以及IBM均提供了云端基础架构,这也是的机器学习能力的开发成本和难度大幅降低。

此外他们还提供了正在飞速发张的一系列云端机器学习服务,开发者可将其(从图像识别语音翻译)直接用于自己的应用程序内。谷歌的机器学习服务针对下列领域提供了易于访问的服务:视觉(物体识别、显性内容检测、人脸检测、图像情绪分析);语音(语音识别和语音到文字转换)文字分析(实体识别、情绪分析、语言检测和翻译);以及职员工作检索(机会呈现和基于资历匹配)。

开源深度学习框架

下面将对目前一些优秀的开源深度学习框架进行介绍,包括基于GPU的单机开源深度学习框架和融合了GPU的开源分布式深度学习框架。

1. 单机开源深度学习框架

目前拥有众多的学术机构如国际顶级名校加州大学伯克利分校,以及互联网巨头如Google、微软等开源的深度学习工具,比较成熟的基于GPU的单机开源深度学习框架有:

Theano:深度学习开源工具的鼻祖,由蒙特利尔理工学院开发于2008年将开源。框架使用Python语言开发。与许多学术界和工业界有影响力的深度学习框架都构建在Theano之上,并逐步形成了自身的生态系统,这其中就包含了著名了Keras,Lasagne和Blocks。

Torch:Facebook和Twitter主推的一款开源深度学习框架,Google和多个大学援救机构也在使用Torch。出于性能的考虑,Torch使用一种比较小众的语言(Lua)作为其开发的语言,目前在音频、图像及视频处理方面有着大量的应用。大名鼎鼎的AlphaGo便是基于Torch开发的,只不过在Google开源TensorFlow之后,AlphaGo将迁移到TensorFlow上

TensorFlow:Google开源的一筐深度学习工具,使用C++语言开发,上层提供Python API。在开源之后,在工业界和学术界引起了极大的震动,因为TensorFlow曾经是著名Google Brain计划的一部分,Google Brain项目的成功曾经吸引了众多科学家和研究人员王深度学习这个“坑”里面跳,这也是当今深度学习如此繁荣的重要原因,足见TensorFlow的影响力。TensorFlow一直在往分布式方向发展,特别是在Spark平台上迁移。

2. 分布式开源深度学习框架

Google研究院JeffyDean在2012发表了一篇《Large Sacle DistributedDeep Networks》 对分布式环境下的深度学习算法设计原理进行了阐述,给出了深度学习在分布式环境下的两种不同的思路:规模并行化(Model parallelism)和数据并行化(Model Parellelism)。模型并行化将训练的模型分割并发送到各Worker节点上;数据并行化数据进行切分,然后将模型副本发送到各Worker节点,通过参数服务器(Parameter Server)对训练的参数进行更新。

目前开源分布式深度学习框架大多数采用是数据并行化的方式进行设计。目前有两大类:框架自身具备分布式模型训练能力:构建在Hadoop生态体系内,通过分布式文件系统(HDFS)、资源调度系统(Yarn)及Spark计算平台进行深度学习模型训练。其中框架自身具备分布式模型训练能力的开源深度学习框架有:

DSSTNE:亚马逊开源的一套深度学习工具,英文全名为Deep Sacalable Sparse Tensor Network Engine(DSSTNE),由C++语言实现,解决稀疏数据场景下的深度学习问题。值得一提的是,亚马逊在是否走开源的道路上一直扭扭捏捏,开源DSSTNE,似乎也是在Google、Facebook等巨头抢占开源深度学习领域高迪之后的无奈之举。

Paddle:百度开源的并行分布式开源深度学些框架,由C++语言实现并提供Pyhton API。Paddle框架已经经过百度内部多个产品线检验,包括搜索光宝中的点击率预估、图像分类、光学字符识别、搜索排序、计算机病毒检测等。

由于Hadoop生态体系已经占据了企业级大数据市场的大部分份额,因此目前许多开源分布式都在往Hadoop生态体系迁移,这其中由Caffe、TensorFlow,也有百度的Paddle。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木可大大 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档