CN110163233A - 一种使机器胜任更多复杂工作的方法 - Google Patents

一种使机器胜任更多复杂工作的方法 Download PDF

Info

Publication number
CN110163233A
CN110163233A CN201811116592.8A CN201811116592A CN110163233A CN 110163233 A CN110163233 A CN 110163233A CN 201811116592 A CN201811116592 A CN 201811116592A CN 110163233 A CN110163233 A CN 110163233A
Authority
CN
China
Prior art keywords
data
algorithm
machine
service
learning
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201811116592.8A
Other languages
English (en)
Inventor
王伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shaanxi Aishang Iot Technology Co Ltd
Original Assignee
Shaanxi Aishang Iot Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shaanxi Aishang Iot Technology Co Ltd filed Critical Shaanxi Aishang Iot Technology Co Ltd
Publication of CN110163233A publication Critical patent/CN110163233A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

本方案涉及一种使机器胜任更多复杂工作的方法,具体采用一种规范的方法或者模型,将不同功能单元(或称为服务)通过定义良好的接口或契约联系起来形成系统,解决IT系统的智能处理的问题,使各种机器模拟人的思维过程和智能行为(如学习、推理、思考、规划等),胜任更多的复杂工作,使人类的智能、智慧得以物化与延伸。

Description

一种使机器胜任更多复杂工作的方法
技术领域
本发明涉及一种使机器胜任更多复杂工作的方法,尤其是人工智能技术的应用方法。
背景技术
伴随着移动互联网的成熟,智能手机、可穿戴等具有数据功能的设备大量面市,它们的大部分功能是依赖于网络而实现,使得更多的数据变得在线(也是互联网的特点),数据开始和所处的场景及人有了关系(信息需要从人和物理世界来获取),这种线下信息逐渐比互联网世界更加重要,使得以前线上的服务向线下及传统行业延伸,如智能硬件、共享单车、自动驾驶、机器人、无人机等会在未来扮演更加重要的角色,每个纽扣也可能会成为一个联网设备,甚至将传感器武装到牙齿;联网的设备(物)越来越多,带来的结果就是数据的持续暴增;基于数据与网络,各行业积极通过建立物联网应用使其产品、设备或者服务在使用过程中反馈数据,再利用这些数据升级服务或产品,进而调整自身的未来战略和商业模式。
计算机、网络等科学技术的不断进步,促使社会进入科技发达、生活便利、信息流通快、人们交流密切的高速发展的阶段,移动互联网、手机、平板电脑、PC、智能设备以及遍布地球各个角落的各种各样的传感器、RFID、网络应用(服务)、社会动态、科技探索、医疗记录、电子商务、地理空间等等,广义上都是数据的来源或者承载方式,各行各业每天都在产生数量巨大的数据或者数据碎片且一直存在,只是网络时代数据变得在线了且数量越来越多,计量单位也从Byte、KB、MB、GB、TB发展到PB、EB、ZB、YB甚至BB、NB、DB来衡量,当数据以越来越大的量级不断增长的时候,需要使用特定的技术进行更好地管理和处理,从海量数据信息中提取洞见以对生活、商业或生产实践进行更好的指导。
数据信息总量的变化导致了信息形态的变化,在线也让数据搜集变得非常容易,大数据概念几乎应用到了所有人类致力于发展的领域中;数据和大数据的范围在扩大,价值也在扩大,逐渐从功能价值转变为数据价值,以至于可以快速影响社会;大数据标志着人类在寻求量化和认识世界的道路上前进了一大步,过去不可计量、存储、分析和共享的很多东西都被数据化了,拥有大量的数据和更多不那么精确的数据为我们理解世界打开了一扇新的大门;大数据往往是利用众多技术和方法,综合源自多个渠道、不同时间的信息而获得的,而科学进步越来越多地由数据来推动,海量数据给数据分析既带来了机遇,也构成了新的挑战;因此需要新的统计思路和计算方法,数据库、记录数据库都可以开发出深层次信息,说明数据比流程更重要,用数据核心思维方式思考问题、解决问题,反映了当下IT产业的变革。
网络服务可以理解为基于WEB的无缝集成,与平台、语言无关的具有独立功能的模块;Web服务作为炙手可热的技术,如何应用到企业的IT系统和商业流程之中、并给企业带来直接的经济效益,一直备受国内外企业管理者的高度关注和推崇。而近年出现的被誉为下一代Web服务的基础架构的SOA(Service-oriented architecture,面向服务架构),就是基于互联网把一些服务组织起来,完成不同的需求,也可以提高系统的健壮性,可维护性,可扩展性,可移植性。SOA究竟是什么众说纷纭,有人说是一种架构,有人说是一种方法论,有人说是一种思想,当然也可以理解为一个组件模型。
SOA是在计算环境下设计、开发、应用、管理分散的逻辑(服务)单元的一种规范,这个定义决定了SOA的广泛性。SOA的目标在于让IT变得更有弹性,以更快地响应业务单位的需求,实现实时企业(Real-Time Enterprise)。SOA也不仅仅是一种开发的方法论,它还包含管理,如应用SOA后,管理者可以方便的管理这些搭建在服务平台上的应用,通过分析服务之间的相互调用,公司管理人员可以方便的拿到什么时候、什么原因、哪些商业逻辑被执行的数据信息,从而帮助企业管理人员或应用架构师迭代地优化企业业务流程、应用系统。
SOA的一个中心思想是使得企业应用摆脱面向技术的解决方案的束缚,轻松应对企业商业服务变化、发展的需要;企业环境中单个应用程序是无法包容业务用户的(各种)需求的;服务被定义用来支持业务流程,各种服务组件的操作贯穿在流程和逻辑实现过程中。
传统的应用集成方法难于快速适应基于企业现代业务变化不断产生的需求,SOA中围绕服务的所有模式都是以基于标准的技术实现的,SOA帮助企业信息系统迁移到"leave-and-layer"架构之上,在不用对现有的企业系统做修改的前提下,系统可对外提供Web服务接口,因为已经被可以提供Web服务接口的应用层做了一层封装,所以在不用修改现有系统架构的情况下可以将系统和应用迅速转换为服务。SOA不仅覆盖来自于打包应用、定制应用和遗留系统中的信息,而且还覆盖来自于如安全、内容管理、搜索等IT架构中的功能和数据;因为基于SOA的应用能很容易地从这些基础服务架构中添加功能。
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节;有时也特指API的说明文档,也称为帮助文档;也可以理解为应用程序接口(Application Program Interface),是一组定义、程序及协议的集合,一个主要功能是提供通用功能集,程序员通过调用API函数对应用程序进行开发,可以减轻编程任务;同时也是一种中间件,为各种不同平台提供数据共享;可以通过API接口实现计算机软件之间的相互通信。根据单个或分布式平台上不同软件应用程序间的数据共享性能,可以将API分为四种类型:远程过程调用(RPC),通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信;标准查询语言(SQL),是标准的访问数据的查询语言,通过数据库实现应用程序间的数据共享;文件传输,文件传输通过发送格式化文件实现应用程序间数据共享;信息交付,指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享;应用于API的标准包括如SQL API,还有一些其它类型的标准尚在制定之中。
API可以应用于所有计算机平台和操作系统,以不同的格式连接数据(如共享数据缓存器、数据库结构、文件框架),每种数据格式要求以不同的数据命令和参数实现正确的数据通信,但同时也会产生不同类型的错误,因此除了具备执行数据共享任务所需的知识以外,这些类型的API还必须解决很多网络参数问题和可能的差错条件,即每个应用程序都必须清楚自身是否有强大的性能支持程序间通信。交付API方式能降低了系统复杂性,当应用程序需要通过多个平台实现数据共享时,采用信息交付API类型比较理想。API与图形用户接口(GUI)或命令接口有差别,API接口属于一种操作系统或程序接口,后两者属于直接用户接口。
有些公司会将API作为其公共开放系统,即制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式API;开放API(OpenAPI)也是服务型网站常见的一种应用,网站的服务商将网站服务封装成一系列API开放出去供第三方开发者使用,所开放的API被称作OpenAPI;网站提供开放API后,可以吸引一些第三方开发人员在该平台上开发商业应用;OpenAPI作为互联网在线服务的发展基础,已经成为越来越多互联网企业发展服务的选择。
大数据技术是随着云计算、Web服务、物联网等的发展,IT产业界一次颠覆性的技术变革,物联网使更多的物理对象变得在线,Web服务使更多的数据变得在线;云计算(Cloud Computing)是分布式计算(Distributed Computing)、并行计算(ParallelComputing)、效用计算(Utility Computing)、网络存储(Network StorageTechnologies)、虚拟化(Virtualization)、负载均衡(Load Balance)、热备份冗余(HighAvailable)等传统计算机和网络技术发展融合的产物,为数据资产提供了保管、访问的场所和渠道,数据由此成为真正有价值的资产,也成为人工智能和智能化的基础,最关键的则变成数据本身以及如何运用数据;数据被解释是信息,信息常识化是知识,数据解释、数据分析都将产生不可估量的价值。
数据科学(Data Science)是一个多方面的学科,包括机器学习和其他分析过程,统计学和相关的数学分支越来越多地从高性能科学计算中借鉴,以便最终从数据中发现洞察,并使用这些新发现的信息,数据科学产生各种不同的结果,但它们都具有共同的洞察力;一些数据科学和机器学习相关领域,人工智能(AI)技术提供助力,从AI到数据科学,二者间的许多中间步骤已经被AI以某种形式开发和完善了;数据挖掘(Data Mining)是商业智能的一个子领域,作为机器学习的姊妹术语是数据科学的关键,可以将数据科学视为数据挖掘的超集;当下,数据挖掘似乎被划分为机器学习和数据科学之间的概念;有人将数据挖掘定义为“从数据中提取模式的特定算法的应用”,这表明数据挖掘的重点在于算法的应用,而不是算法本身;从某种意义上说,机器学习的科学成分更重一些,而数据挖掘的技术成分更重一些,通过了解机器学习和数据挖掘业界成熟的案例,可以对机器学习和数据挖掘有一个直观的理解。
数据挖掘:尿布与啤酒故事中,数据挖掘技术对历史数据进行分析的结果,反映了数据的内在规律,市场调查人员和分析师对这一数据挖掘结果进行调查分析,从而揭示出隐藏在“尿布与啤酒”背后的美国人的一种行为模式,将尿布与啤酒摆放在一起销售量双双增长。
决策树:决策树用于电信领域故障的快速定位,是比较常见的应用场景,技术实现上用到了决策树可以快速分析和定位出问题,给用户一个满意的答复。
图像识别:小米面孔相册功能的背后其实使用的是深度学习技术,自动识别图片中的人脸,然后进行自动识别和分类;支付宝扫脸支付的人脸识别技术基于神经网络,让计算机学习人的大脑,并通过“深度学习算法”大量训练,让它变得极为“聪明”,能够“认人”,实现人脸识别不需要用户自行提交照片;图片内容识别是比图片识别更难的,如图片语义的理解和提取,百度的百度识图能够有效地处理特定物体的检测识别(如人脸、文字或商品)、通用图像的分类标注;未来Google的图形识别引擎不仅能够识别出图片中的对象,还能够对整个场景进行简短而准确的描述:通过一种递归神经网络(RNN)将一种语言的语句转换成向量表达,并采用第二种RNN将向量表达转换成目标语言的语句;而Google将以上过程中的第一种RNN用深度卷积神经网络CNN替代,这种网络可以用来识别图像中的物体;通过这种方法可以实现将图像中的对象转换成语句,对图像场景进行描述,但实现起来十分复杂。
自然语言识别:如苹果的Siri,语音识别一直是重要研究课题,但是该技术的发展普遍受到错误率高、麦克风敏感度差异、噪声环境等因素的阻碍;将深层神经网络(DNNs)技术引入语音识别,降低了错误率、提高了可靠性,使语音翻译技术得以广泛应用。
深度学习:能够得到更好地表示数据的特征,模型的层次、参数很多,容量足够,有能力表示大规模数据;在人类和大量数据的帮助下,计算机通过深度学习技术的确可以表现得十分强大,掀起了人工智能的又一次热潮,但其本身并不是完美的,离真正的AI还差很远。
人们对人工智能的认识莫衷一是,但凡和自动化沾边的软件、机器等常常被认为是人工智能,也常常被等同于机器人;“阿尔法狗”则让一些人把人工智能与计算机程序画上了等号,甚至推特之前对内容进行的优化也被一些人认为推特在努力“让人工智能变得更加智能”;人工智能在很多情况下是以不可视的形态存在的,如苹果手机的“Siri”就是只闻其声不见其形;相反,以机器人甚至人形机器人形态出现的机器,有许多并未达到人工智能的程度。
人工智能在过去五六十年里起起伏伏,有强人工智能和弱人工智能之说,直到今天也没有一个公认的统一的定义。大数据的产生、计算能力、带宽、深度学习这些技术的发展使得人工智能开始从后台走到前台,今天的语音识别已经是触手可达,图像方面、自然语言理解、机器人技术都是如此;最初的人工智能还是研究人员通过模仿人类来制定特定的认知和推理过程,结构复杂种类繁多的数据出现以后,人类定义的过程就不好使了,期待机器自己能够从数据中学习,人工智能技术得到社会各界空前的重视,最重要的原因就是大数据。
机器学习作为人工智能的一个大的方向,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科,其专门研究计算机是怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构,使之不断改善自身的性能;机器学习本质上是跨学科的,是数据科学的核心组成,目标是从数据中自动获取洞察力,关心的问题是如何构建计算机程序使用经验自动改进,采用计算机科学、统计学和人工智能等方面的技术,研究的主要工作是促进经验自动改进的算法,可以应用于各种不同领域;机器学习与古典统计学有很多共同点,因为它使用样本来推断和概括;数据统计更多地侧重于描述性(尽管可以通过外推来预测),机器学习对描述性分析的关注很少,并且仅将其用作中间步骤以便能够进行更好预测;机器学习也通常被认为是模式识别的同义词,‘模式识别’这个术语意味着实际上是更不复杂和更简单化的过程;学习能力是智能行为的一个非常重要的特征,不具有学习能力的系统很难称之为一个真正的智能系统,而机器学习则希望(计算机)系统能够利用经验来改善自身的性能;在计算机系统中,“经验”通常是以数据的形式存在的,因此机器学习不仅涉及对人的认知学习过程的探索,还涉及对数据的分析处理;机器学习的涉及面也很宽,常用在数据挖掘上的方法通常只是“从数据学习”,还可以用在一些机器学习的子领域甚至与数据挖掘关系不大,如增强学习与自动控制等,增强学习主要应用于学习控制移动机器人,在工厂中学习最优操作工序以及学习棋类对弈等。
机器学习的算法有很多,可以从两个方面进行理解:一个是学习方式,另一个是算法类似性。根据数据类型的不同,对一个问题的建模可以有不同的方式,首先会考虑算法的学习方式,在机器学习领域有几种主要的学习方式。监督式学习:在监督式学习下,输入数据被称为“训练数据”,每组训练数据都有一个明确的标识或结果,如对防垃圾邮件系统中的“垃圾邮件”、“非垃圾邮件”,对手写数字识别中的“1”、“2”、“3”、“4”等,在建立预测模型的时候,监督式学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断地调整预测模型,直到模型的预测结果达到一个预期的准确率;非监督式学习:在非监督式学习下,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构;半监督式学习:在半监督式学习下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构,以便合理地组织数据进行预测;强化学习:在强化学习下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅作为一种检查模型对错的方式,输入数据直接反馈到模型,模型必须对此立刻做出调整。
根据算法的功能和形式的类似性,可以对算法进行分类,如基于树的算法、基于神经网络的算法等;当然,机器学习的范围非常庞大,有些算法很难明确归到某一类,而对于有些分类来说,同一分类的算法可以针对不同类型的问题。回归算法:回归算法是试图采用对误差的衡量来探索变量之间的关系的一类算法,回归算法是统计机器学习的利器;基于实例的算法:基于实例的算法常常用来对决策问题建立模型,这样的模型常常先选取一批样本数据,然后根据某些近似性把新数据与样本数据进行比较,从而找到最佳的匹配,因此基于实例的算法常常被称为“赢家通吃学习”或者“基于记忆的学习”;正则化算法:正则化算法是其他算法(通常是回归算法)的延伸,根据算法的复杂度对算法进行调整,正则化算法通常对简单模型予以奖励,而对复杂算法予以惩罚;决策树算法:决策树算法根据数据的属性采用树状结构建立决策模型,常用来解决分类和回归问题;贝叶斯算法:贝叶斯算法是基于贝叶斯定理的一类算法,主要用来解决分类和回归问题;基于核的算法:基于核的算法中最著名的莫过于支持向量机(SVM),基于核的算法是把输入数据映射到一个高阶的向量空间,在这些高阶向量空间里,有些分类或者回归问题能够更容易地解决;聚类算法:聚类算法通常按照中心点或者分层的方式对输入数据进行归并,所有的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类;关联规则学习:关联规则学习通过寻找最能够解释数据变量之间关系的规则,来找出大量多元数据集中有用的关联规则;人工神经网络算法:模拟生物神经网络,是一类模式匹配算法,通常用于解决分类和回归问题,人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法(深度学习就是其中的一类算法);深度学习算法:深度学习算法是对人工神经网络的发展,在计算能力变得日益廉价的今天,深度学习算法试图建立大得多也复杂得多的神经网络;降低维度算法:与聚类算法一样,降低维度算法试图分析数据的内在结构,不过降低维度算法通过非监督式学习,试图利用较少的信息来归纳或者解释数据,这类算法可以用于高维数据的可视化,或者用来简化数据以便监督式学习使用;集成算法:集成算法用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测,集成算法的主要难点在于究竟集成哪些独立的、较弱的学习模型,以及如何把学习结果整合起来,这是一类非常强大的算法,同时也非常流行。
机器学习中浅层学习发在上世纪,是第一次浪潮;深度学习是第二次浪潮,正在兴起。当前各大科技公司在深度学习领域积极探索,研究侧重于建立、模拟人脑进行分析学习的“神经网络”,拥有强大计算能力和数据资源的巨头公司,也因深度学习进入了一个全面领跑的新阶段。最初的神经网络非常简单,包括输入层,隐含层和输出层,共三层,输入和输出层通常由应用决定,隐含层包含神经元,隐含层跟输入和输出层之间的链接可供训练,通过训练神经网络实现从输入到输出的一个非线性映射过程。
人工智能的发展及受重视得益于于三大技术汇流:一是互联网技术的发展,产生广泛、海量的数据;二是计算机处理能力和运算速度的提高,能高效识别文字,能听声辨图;三是以深度学习为核心的算法的演进;以前人们觉得不可企及的领域,因为计算机、人工智能科学家探究人的决策过程,调整、优化算法,训练机器,让我们看到了不一样的结果和进展。
深度学习(DL、Deep Learning)是机器学习的一个子类,是应用深层神经网络技术(即具有多个隐藏层的神经网络架构)来解决问题,是一个类似数据挖掘的过程,它采用深层神经网络架构(通常会结合线性和非线性的关系),是特定类型的机器学习算法,在早期的在线搜索急剧爆发之前已经存在,由于学术研究和工业的蓬勃发展,其在不同领域取得了巨大成就;深度神经网络(DeepNeural Networks,DNN)指包括3个层以上隐含层的神经网络(现在主流的模型包含九个隐含层),通常每层都有上千上万级的神经元,整个网络有百万级至百亿级的参数空间,具有非常强大的学习能力和特征提取能力;深度学习推动“大数据+深度模型+数据发现挖掘”时代的来临,和机器学习一样提供一套框架,即有两个条件的一套语言系统,第一要有驾驭这个模型和计算的能力,第二对问题要足够的了解;其最成功的一个例子是卷积神经网络,他确实和我们对视觉神经系统的了解尤其是早期的视觉皮层细胞关系非常大。
深度神经网络的出现得益于大数据和云计算,因为数据量够大,计算机系统够强大,机器本身才能学习出各种复杂的特征。DNN出现之后被广泛研究应用于多种领域并取得了突破性进展,如深度神经网络应用于语音识别将识别精度提升了20-30%,用于图像分类和识别,误差降低了10%,还用于OCR识别,信息检索,手写字识别,金融等等应用;DNN模型在其他领域中的成功应用,如用于数据中心的功耗模型,用于服务器系统的功耗智能管理等。
国外在做人工智能的机构主要有Google、Facebook、Microsoft、Amazon、Netflix等,著名的猫脸实验:Google建立了一个9层的深度神经网络,在16000个CPU组成的服务器上运行,然后让Youtube的视频作为神经网络的输入,在没有人工干预的情况下运行几天,结果机器就学会了识别视频中所有的猫脸;Facebook聚集了世界上那么多人的照片,可能侧重图像识别和分类;Microsoft在语音识别和实时翻译上引领国际前沿;Netflix是北美最大的在线电影点播系统,采用深度神经网络的方法来实现用户的电影推荐;Amazon也成立了人工智能实验室,他们好像通过人工智能的方法分析用户行为,实现更有效的商品推荐系统。
国内做人工智能的企业主要是BAT三家,阿里(Alibaba)在搜索和广告系统中采用了机器学习的方法,优化器CTR预估,搜索结果页排序以及个性化体系,阿里的性化体系中面临的挑战包括,大数据的稀疏性、长尾效应和大量的噪音,网购行为本身的复杂性,在多样性和准确性面临双重挑战;腾讯的人工智能技术主要在语音识别、图片搜索、广告点击率预测以及微信的语音合成和自然语言理解等应用中,最近的会议上指出其人工智能在GPU平台上的并行实现已经初步搭建起来,在小规模的CPU+GPU集群加速,效果貌似还不错;华为在香港的诺亚方舟实验室也在做人工智能,有消息称没有把人工智能定位为新业务(不是另外开创一个产业),而是定位为一种使能技术,通过把人工智能技术应用于现有的产品和解决方案,更好地为客户创造价值,提升产品和解决方案的竞争力,也改善面向客户的服务,提升内部的效率,并且使得智能手机走向智慧化;百度将人工智能作为它的一个增强科技核心力量的追求,以后会利用百度的大数据攻克大规模物体的无监督识别以及自然语言的理解等难题;在学习大数据时面临的挑战是如何有效处理不断增加的海量数据和分布式系统的可扩展性正面临瓶颈,需要人工智能算法专家和硬件系统的专家联合解决。
人工智能领域学术界的三个泰斗分别被Google,Facebook和百度挖走,形成三家分立的局面,这三家公司又都具备大数据的宝贵资源,希望能在算法角度大力推进人工智能领域的突破性演变;另外,围棋比赛后AlphaGo非常火,使用了深度增强学习的技术,经过了非常长的训练时间,引用了大量数据做self-play,最终是以压倒性的优势4:1战胜了当时的世界冠军李世石;今年年初Master重新回到大家视野里,可以对围棋高手60连胜了。
机器人的深度学习关键在于大数据,工业机器人的大数据可以有两个来源:一是通过与人一起工作,让机器人学习人的动作;另一种是让机器人在现场生产,找到最合适的自动化生产模式,再将该模式复制到其他工厂中去,从而让更多企业更快、更低成本地应用机器人;机器人装有传感器,对收集到的信息进行分析进而培训,能够在实时环境中进行深度学习与积累;ABB通过传感器控制、人工智能等方式教导、训练机器人学习新移动路径,完成新动作,实现作业场景,研究让机器人学会深度学习,如生产线当中,组装工序是一个高强度的岗位,工人体力将影响产品的质量和生产效率,人与机器人协作让机器人做体力活,让人做他擅长的工作,最终使机器人能够处理未知的环境和情况并加以解决,如新数据、新图像等。
当下人们平时的学习和生活中,有意无意地会用到一些机器学习算法;市面(尤其是互联网)上也因此而活跃着大量有关机器学习的优秀的开源框架、平台、系统、库和工具包,基于Python、Java、C等的很多机器学习算法基本都被前人实现并成为互联网共享资源(存在很多“脏”或者“乱”的开源代码),最受欢迎的开源项目大多与垃圾邮件过滤、人脸识别、推荐引擎、数据处理相关,大多数是基于现今最流行的语言以及平台,推广以及扩展了机器学习领域的很多重要算法,从中也可以找到LDA等主题模型以及HMM等隐马尔科夫模型。
比较的流行的平台或系统,如TensorFlow是谷歌的第二代机器学习系统,内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用;PaddlePaddle是百度研发的深度学习平台,具有易用,高效,灵活和可伸缩等特点,为百度内部多项产品提供深度学习算法支持;Apache SINGA是基于大型数据集训练、大型深度学习模块的常规分布式学习平台,支持各种流行的深度学习模块;Scikit Flow—TensorFlow的简化接口,模仿Scikit学习,用户可在预测分析和数据挖掘中使用;VELES是分布式深度学习应用系统,用户只需要提供参数,剩下的都可以交给VELES,是三星开发的另一个TensorFlow;SpeeDO是为通用硬件设计的并行深度学习系统,不需要特殊的I/O硬件,支持CPU/GPU集群,可以很方便地在各种云端环境上部署,如AWS、Google GCE、Microsoft Azure等等;ROS为RobotOperating System(机器人操作系统)的简写,是一个面向机器人的开源元操作系统,它能够提供类似传统操作系统的诸多功能,如硬件抽象、底层设备控制、进程间消息传递和程序包管理等,此外它还提供相关工具和库,用于获取、编译、编辑代码以及在多个计算机之间运行程序完成分布式计算,ROS在某些程度上和其他常见的机器人架构有些相似之处,如:Player、Orocos、CARMEN、Orca和Microsoft Robotics Studio,对于简单的无机械手的移动平台来说,Player是非常不错的选择,ROS则被设计为适用于有机械臂和运动传感器的移动平台(倾角激光、云台、机械臂传感器);与Player相比,ROS更有利于分布式计算环境,而Player提供了较多的硬件驱动程序,ROS则在高层架构上提供了更多的算法应用(如集成OpenCV的视觉算法)。
比较流行的框架,如Torchnet是Facebook为加快AI研究而开源的深度学习框架;Hadoop和Spark是为了解决一个分布式计算效率问题而诞生的两种计算框架,适用于不同应用场景:Hadoop MapReduce平台网络和磁盘读写开销大,效率较低,难以高效地实现需要大量迭代计算的并行化算法,适用于数据密集型对时间要求不高的场景,如log分析这种长时间的大规模离线计算;Apache Spark是一个开源和兼容Hadoop的集群计算平台,是UCBerkeley AMP lab所开发的类Hadoop MapReduce的通用并行框架,是为了支持分布式数据集上的迭代作业而对Hadoop的补充,可用来构建大型的、低延迟的数据分析及机器学习等应用程序;LightGBM是微软开源的一个实现GBDT算法的框架,支持高效率的并行训练,旨在解决GBDT在海量数据遇到的问题,让GBDT可以更好更快地用于工业实践;Guagua是Hadoop迭代式计算框架,是PayPal的一个开源机器学习框架Shifu的子项目,主要解决模型训练的分布式问题;Chainer在深度学习的理论算法和实际应用之间架起一座桥梁,是一种灵活框架;Shifu是基于Hadoop的快速和可伸缩的机器学习框架;KeystoneML是用Scala编写的框架,旨在简化构造大规模、端到端的机器学习管道,基于Apache Spark构建;LightNet是轻量级,多功能,完全基于Matlab的深度学习框架,目的是为深度学习研究提供一个易于理解、易于使用和高效的计算平台;DeepLearningKit是针对iOS、OS X和tvOS的开源深度学习框架;GoLearn是谷歌所构建的Go语言的一体化机器学习库,目标是简单并且可定制,简单在于数据在库内被加载和处理,也可以理解为GoLearn是一款Go语言实现的机器学习框架;YCML是使用Objective-C编写的机器学习框架,也支持Swift;Accord是AForge.net的扩展,是一个基于.Net的机器学习与信号处理框架,包括了一系列对图像和音频的机器学习算法,如人脸检测、SIFT拼接等,同时支持移动对象的实时跟踪等功能,提供一个从神经网络到决策树系统的机器学习库。
比较流行的工具包和库,如DMTK是微软开源的分布式机器学习工具包,包括DMTK分布式机器学习框架、用于训练主题模型的LightLDA以及分布式词向量;CNTK是微软开源的用于语音识别的深度学习工具包,借助GPU的能力,该工具包的效率相当高;DSSTNE是亚马逊开源的深度学习工具,能同时支持两个图形处理器(GPU)参与运算,主要用作智能搜索和推荐;Scikit-learn是一个非常强大的Python机器学习工具包,通过在现有Python的基础上构建了NumPy和Matplotlib,提供了非常便利的数学工具;Deeplearning4j是为Java和Scala编写的首个商业级开源分布式深度学习库,为商业环境所设计,以即插即用为目标,通过更多预设的使用,避免太多配置,让非研究人员也能够进行快速的原型制作;MXNet是轻量级且灵活高效的深度学习库,允许使用混合符号编程和命令式编程;CaffeOnSpark是雅虎开源的基于Hadoop/Spark的分布式深度学习包;BigDL是英特尔开源的基于ApacheSpark的分布式深度学习库,支持高性能大数据分析;Swift AI是高性能的人工智能和机器学习库,完全用Swift编写,目前支持iOS和OS X,包括一组人工智能和机器学习的通用工具;Gorgonia是Go机器学习库,用于撰写和评估多维数组的数学公式,与Theano和TensorFlow理念相似,支持GPU/CUDA,支持分布式计算;Shark C++是快速、模块化、功能丰富的开源C++机器学习库,提供了各种机器学习相关技术,比如线性/非线性优化、基于内核学习算法、神经网络等;MLPACK是C++的机器学习库,亮点在于其扩展性、高速性和易用性,旨在让新用户通过简单、一致的API使用机器学习,同时为专业用户提供C++的高性能和最大灵活性;smile包含各种现有的机器学习算法的Java库,如邻接表和矩阵图算法、基于Swing的可视化库等;PredictionIO是开源的机器学习服务器,开发工程师和数据分析师可以使用它构建智能应用程序,还可以做一些预测功能,比如个性化推荐、发现内容等;Aerosolve支撑Airbnb定价建议系统的机器学习引擎;Vowpal Wabbit机器学习系统,利用诸如在线,散列,减少,缩减,学习,搜索,主动和交互式学习等技术推动机器学习技术的前沿发展;Apache SystemML是灵活的、可伸缩机器学习(ML)语言,使用Java编写,它提供自动优化功能,通过数据和集群特性保证高效和可伸缩,可在MapReduce或者Spark环境中运行;Shogun是一个基于C++的最古老的机器学习开源库,作为一个SWIG库,可以轻松地嵌入Java、Python、C#等主流处理语言中,它的重点在于大尺度上的内核方法,特别是“支持向量机”的学习工具箱,其中它包括了大量的线性方法,如LDA、LPM、HMM等等;Mahout是一个广为人知的、Apache Software旗下的一个开源项目,提供了众多的机器学习经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序,包含了聚类、分类、推荐等很多经典算法,并且提供了很方便的云服务接口;MLlib是Apache自己的Spark和Hadoop机器学习库,被设计用于大规模高速度地执行MLlib所包含的大部分常见机器学习算法,是基于Java开发的项目,同时可以方便地与Python等语言对接,用户可以自己设计针对MLlib编写代码,这是很具有个性化的设计;H2O是Oxdata的旗舰产品,是一款核心数据分析平台,一部分是由R语言编写的,另一部分是由Java和Python语言编写的,用户可以部署H2O的R程序安装包,之后就可以在R语言环境下运行了;Oryx也是由Hadoop所设计的机器学习开源项目,能够让机器学习的模型使用在实时的数据流上,如垃圾邮件过滤等;Weka是使用Java开发的用户数据挖掘的开源项目,作为一个公开的数据挖掘工作平台,集合了大量能够承担数据挖掘人物的机器学习算法,包括了对数据进行预处理、分类、回归、聚类等等,同时Weka实现了对大数据的可视化,通过Java设计的新式交互界面上,实现人与程序的交互;CUDA是我们众所周知的GPU加速套件,而CUDA-Convnet是一个基于GPU加速的神经网络应用程序机器学习库,它使用C++编写,并且使用了NVIDIA的CUDA GPU处理技术,目前这个项目已经被重组成为CUDA-Convnet2,支持多个GPU和Kepler-generation GPUs,Vuples项目与之类似使用F#语言编写,并且适用于.Net平台上;ConvNetJS是一款基于JavaScript的在线深度学习库,提供在线的深度学习训练方式,能够帮助初学者更快、更直观地理解算法,通过一些简单Demo给用户最直观的解释。
历经数年发展,Hadoop生态圈中的丰富工具深受用户喜爱,但Hadoop(Google内部已经逐渐有新的替代方案)总体效率较低,Hadoop MapReduce平台网络和磁盘读写开销大,难以高效地实现需要大量迭代计算的并行化算法,适用于数据密集型对时间要求不高的场景,如log分析这种长时间的大规模离线计算;而如机器学习等算法一般都有很多个步骤迭代计算的过程,计算需要在多次迭代后获得足够小的误差或者足够收敛才会停止,迭代时如果使用Hadoop的MapReduce计算框架,每次计算都要读/写磁盘以及任务的启动等工作,导致非常大的I/O和CPU消耗,Hadoop在迭代算法尤其是机器学习方面力不从心;另外,使用Hadoop时每个用例都需要多个不同的技术堆栈来支撑,在不同使用场景下,大量的解决方案往往捉襟见肘;在生产环境中机构往往需要精通数门技术,许多技术又存在版本兼容性问题,无法在并行工作中更快地共享数据。Apache Spark是一个开源和兼容Hadoop的集群计算平台,是UC Berkeley AMP lab(加州大学伯克利分校的AMP实验室Algorithms,Machines,and People Lab)所开发的类Hadoop MapReduce的通用并行框架,可用来构建大型的、低延迟的数据分析及机器学习等应用程序;作为Berkeley Data Analytics Stack(BDAS)的一部分,由大数据公司Databricks保驾护航,更是Apache旗下的顶级项目。
大数据机器学习和数据挖掘的并行化算法研究是近年科技领域一个研究热点之一,出现了很多数据处理框架,如Apache Samza、Apache Storm、Apache Spark等;分布式计算的实现方式也有很多种,如在CPU计算密集型的分布式场景中MPI是一个很好的选择,很多公司也会根据自己的业务场景的来设计自己的分布式框架,如百度李沐当时研究的Parameter Server项目就是一个不错的分布式框架,用来解决机器学习的分布式计算问题;国内外研究者和业界比较关注在Hadoop平台上进行并行化算法设计,而Spark和Hadoop本质上都是为了解决一个分布式计算效率问题而诞生的两种计算框架,适用于不同应用场景,Spark是一种与Hadoop相似的开源集群计算环境,是为了支持分布式数据集上的迭代作业而对Hadoop的补充,可称Hadoop生态圈的一员,可以通过名为Mesos的第三方集群框架在Hadoop文件系统中并行运行;从通信的角度讲,Hadoop的MapReduce计算框架的JobTracker和TaskTracker之间是通过heartbeat的方式来进行的通信和传递数据,导致执行速度非常慢;Spark的RDD全内存式的计算模型具有出色而高效的Akka和Netty通信系统,通信效率极高,在某些工作负载方面表现得更加优越,更有优势。
Apache Spark拥有Hadoop MapReduce的优点,而且启用了内存分布数据集,除了能够提供交互式查询外(在大型数据集上进行交互式分析时,数据科学家可以在数据集上做ad-hoc查询)还可以优化迭代工作负载,工作过程中数据被加载到集群主机的分布式内存中而不需要读写HDFS,数据可以被快速的转换迭代并缓存用于后续的频繁访问需求,使得Apache Spark系统具有更快的速度、更高的性能和支持交互式计算和复杂算法;ApacheSpark提供了多种语言的库,包括SQL、DataFrames、MLlib、GraphX、Spark Streaming等,可以作为一个通用引擎来完成各种各样的运算(包括SQL查询、文本处理、机器学习等),开发者可以在同一个应用程序中无缝组合使用这些库,也可以通过建立Java、Scala、Python、SQL(应对交互式查询)的标准API完成各行业、各场景具体应用;Spark提供了80多个高级运算符确保易用性,支持多种资源管理器,包括Hadoop YARN,Apache Mesos及其自带的独立集群管理器,与现有Hadoop v1(SIMR)和2.x(YARN)生态兼容而形成Spark生态系统,使得机构可以进行无缝迁移;方便下载和安装,方便的shell(REPL:Read-Eval-Print-Loop)可以对API进行交互式的学习;借助高等级的架构提高生产力,从而可以将精力放到计算上,高级API剥离了对集群本身的关注,Spark应用开发者可以专注于应用所要做的计算本身;Spark是在Scala语言中实现的,Scala用于应用程序框架的代码非常简洁,而且Spark和Scala能够紧密集成,Scala可以像操作本地集合对象一样轻松地操作分布式数据集;Spark也得到了mahout越来越好的支持,发展到1.5版本基本具备了全平台特点;Spark社区为满足数据分析师、算法工程师做了很多的工作,如对Python,R语言的支持(DataFrame就是从R里借鉴过来以方便R数据科学家)。
Apache Spark在数据的批处理和实时流处理方面有着得天独厚的优势,也包含了很多数据执行操作的组件:GraphX支持内置的图操作算法,尤其适用于有很多连接节点的数据集;计算方法方面,Bagel作为Pregel on Spark,可以用Spark进行图计算,是一个非常有用的小项目,自带例子实现了Google的PageRank算法;还附带了一个Web UI,当运行Spark应用程序时,Web UI会默认打开4040端口进行监听,用户可以在其中查看有关任务执行器和统计信息的详细信息,甚至还可以查看任务在执行阶段所花费的时间,从而帮助用户进一步优化性能。为了方便一般应用领域的数据分析人员使用所熟悉的R语言在Spark平台上完成数据分析,Spark提供了一个称为SparkR的编程接口,使得可以在R语言的环境里方便地使用Spark的并行化编程接口和强大计算能力;SparkR是一个为R提供了轻量级的Spark前端的R包,提供了一个分布式的data frame数据结构,解决了R中的data frame只能在单机中使用的瓶颈,它和R中的data frame一样支持许多操作,比如select,filter,aggregate等等,类似dplyr包中的功能很好的解决了R的大数据级瓶颈问题;SparkR也支持分布式的机器学习算法,比如使用MLib机器学习库;SparkR为Spark引入了R语言社区的活力,吸引了大量的数据科学家开始在Spark平台上直接开始数据分析之旅。
Spark-Shell是个伟大的创新(原来的shell下,python只能用于单机工作),而Scala语言的优势使得写spark程序就和写普通的shell脚本(或者类似python程序)一样容易,写的每一行代码都可以被放到一个百台甚至几千台的规模上去运行;以前的统计/机器学习依赖于数据抽样,从统计的角度来看,如果足够随机可以很精准的反映全集的结果,但事实上往往很难做好随机,通常结果也会很不准;也经常是在小数据集上单机运行看效果不错,全量后就出现和单机效果不一样的情况;现在大数据通过全量数据解决了这个问题,而全量数据需要有强大的处理能力,spark不仅具备强大的处理能力,而且SparkShell带来了传说中的即席查询,使得代码完全在spark-shell上边写边运行边看结果;spark抽样也很方便,用sample函数想要多少就可以有多少,如几十G容量的博文数据,cache了之后几秒就可以count完成,完整地count也就用十几秒时间;Spark也提供算法,用的最多的是贝叶斯、word2vec、线性回归等,使用spark-shell是算法工程师或者分析师的首选,可以说docker颠覆了部署,spark-shell颠覆了算法工程师的日常工作。
Apache Spark在集群内存中持久化/缓存RDD(弹性分布式数据集),以显著地提升交互速度。存储等级可以通过RDD.cache()操作上的persist()操作访问,可以方便地指定MEMORY_ONLY选项;Spark使用Least Recently Used(LRU)算法来移除缓存中旧的、不常用的RDD,从而释放出更多可用内存;同样还提供了一个unpersist()操作来强制移除缓存/持久化的RDD;RDD(从Spark 1.3版本开始已被DataFrame替代)是Apache Spark的核心理念,它是由数据组成的不可变分布式集合,其主要进行两个操作:transformation和action;Transformation是类似在RDD上做filter()、map()或union()以生成另一个RDD的操作,而action则是count()、first()、take(n)、collect()等促发一个计算并返回值到Master或者稳定存储系统的操作;Transformations一般都是lazy的,直到action执行后才会被执行;Spark Master/Driver会保存RDD上的Transformations,如果某个RDD丢失(即salves宕掉)可以快速地转换到集群中存活的主机。
Shark基本上就是在Spark的框架基础上提供和Hive一样的HiveQL命令接口,为了最大程度的保持和Hive的兼容性,Shark使用了Hive的API来实现query Parsing和LogicPlan generation,最后的PhysicalPlan execution阶段用Spark代替HadoopMapReduce;通过配置Shark参数,Shark可以自动在内存中缓存特定的RDD,实现数据重用,进而加快特定数据集的检索;同时,Shark通过UDF用户自定义函数实现特定的数据分析学习算法,使得SQL数据查询和运算分析能结合在一起,最大化RDD的重复使用;当下Spark终止Shark开启SparkSQL,是在对实时计算友好支持基础上优化通用大数据处理;Apache Spark附带的SQL接口使得用户可以直接使用SQL查询来与数据进行交互,这些查询统统是由Spark的执行引擎来处理的,通过Spark Engine,Spark SQL提供了一个便捷的途径来进行交互式分析,使用一个被称为SchemaRDD类型的RDD;SchemaRDD可以通过已有RDDs建立,或者其他外部数据格式,比如Parquet files、JSON数据,或者在Hive上运行HQL;SchemaRDD非常类似于RDBMS中的表格,一旦数据被导入SchemaRDD,Spark引擎就可以对它进行批或流处理;Spark SQL提供了两种类型的Contexts-SQLContext和HiveContext,扩展了SparkContext的功能;SparkContext提供了到简单SQL parser的访问,而HiveContext则提供了到HiveQL parser的访问,HiveContext允许企业利用已有的Hive基础设施。
Spark提供Broadcast Variables向slave nodes进行广播,使得节点上的RDD操作可以快速访问Broadcast Variables值。实际生产中,通过指定key在RDDs上对数据进行合并的场景非常常见,很可能会出现给slave nodes发送大体积数据集的情况(让其负责托管需要做join的数据),而网络IO比内存访问速度慢数百倍,这里很可能存在巨大的性能瓶颈。Spark提供了一个非常便捷地途径来避免可变的计数器和计数器同步问题——Accumulators,在一个Spark context中通过默认值初始化,这些计数器在Slaves节点上可用,但是Slaves节点不能对其进行读取,它们的作用就是来获取原子更新,并将其转发到Master,Master是唯一可以读取和计算所有更新合集的节点。
Spark Streaming是构建在Spark上处理Stream数据的框架,提供了一个可扩展、容错、高效的途径来处理流数据,同时还利用了Spark的简易编程模型,基本的原理是将Stream数据分成小的时间片断(几秒),以类似batch批量处理的方式来处理这小部分数据(将流数据转换成micro batches,从而将Spark批处理编程模型应用到流用例中);SparkStreaming模块提供一组API,用于编写对数据的实时流执行操作的应用程序,它会先将传入的数据流划分为微批次,然后再对数据执行操作;Spark Streaming构建在Spark上,一方面是因为Spark的低延迟执行引擎(100ms+),虽然比不上专门的流式数据处理软件,也可以用于实时计算,另一方面相比基于Record的其它处理框架(如Storm),一部分窄依赖的RDD数据集可以从源数据重新计算达到容错处理目的;此外小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法,方便了一些需要历史数据和实时数据联合分析的特定应用场合;这种统一的编程模型让Spark可以很好地整合批量处理和交互式流分析。Spark Streaming中的核心抽象是Discretized Stream(DStream),DStream由一组RDD组成,每个RDD都包含了规定时间(可配置)流入的数据;Spark Streaming通过将流入数据转换成一系列的RDDs,再转换成DStream,每个RDD都包含两秒(设定的区间长度)的数据,在Spark Streaming中,最小长度可以设置为0.5秒,因此处理延时可以达到1秒以下;SparkStreaming同样提供了window operators,它有助于更有效率在一组RDD(a rollingwindow of time)上进行计算;同时,DStream还提供了一个API,其操作符(transformations和output operators)可以帮助用户直接操作RDD。
MLlib(Machine Learnig lib)是Apache旗下的Spark和Hadoop机器学习库,被设计用于大规模高速度地执行MLlib所包含的大部分常见机器学习算法,是基于Java开发的项目,同时可以方便地与Python等语言对接,用户也可以自己设计编写MLlib代码,很具个性化;MLlib运行可以借助、充分利用Spark的快速内存计算、迭代效率高的优势,使机器学习的模型计算时间大大缩短,将机器学习的模型计算性能提到另一片天地。MLLib提供了一组API,主要用于对大型数据集运行机器学习算法,在整个Spark生态系统中的位置很关键,是对常用的机器学习算法的实现库,同时包括相关的测试和数据生成器,支持常见的机器学习问题如分类、回归、聚类、协同过滤、降维以及底层优化等,还可以对算法进行扩充;MLlib基于RDD,可以与Spark SQL、GraphX、Spark Streaming无缝集成,可以以RDD为基石与子框架联手构建大数据计算中心;MLlib是MLBase其中之一,MLBase分为MLlib、MLI、MLOptimizer和MLRuntime四部分,ML Optimizer会选择它认为最适合的已经在内部实现好了的机器学习算法和相关参数,来处理用户输入的数据,并返回模型或别的帮助分析的结果;MLI是一个进行特征抽取和高级ML编程抽象的算法实现的API或平台;MLRuntime基于Spark计算框架,可以将Spark的分布式计算应用到机器学习领域。
MLlib架构主要包含:底层基础包括Spark的运行库、矩阵库和向量库;算法库包含广义线性模型、推荐系统、聚类、决策树和评估等算法;实用程序包括测试数据的生成、外部数据的读入等功能。底层基础部分主要包括向量接口和矩阵接口,这两种接口都会使用Scala语言基于Netlib和BLAS/LAPACK开发的线性代数库Breeze,MLlib支持本地的密集向量和稀疏向量,并且支持标量向量,同时支持本地矩阵和分布式矩阵,支持的分布式矩阵分为RowMatrix、IndexedRowMatrix、CoordinateMatrix等,关于密集型和稀疏型的向量Vector的示例,疏矩阵在含有大量非零元素的向量Vector计算中会节省大量的空间并大幅度提高计算速度,标量LabledPoint在实际中也被大量使用;算法库的核心内容为一些Spark中常用的算法。
Apache Spark 2.0版本是基于Spark社区经验总结而成,特性有:ANSI SQL与更合理的API,机器学习管道持久化,Spark作为编译器,使用一个新的API:StructuredStreaming模块等等。
Apache Spark 2.2.0版本更是包括:Structured Streaming的生产环境支持,扩展SQL的功能,R中引入了新的分布式机器学习算法,MLlib和GraphX中添加了新的算法等等,构建流应用程序、高级分析。
虽然Apache Spark有极佳的人气,但是它也不是完美无缺的。主要支持的三种分布式部署方式是standalone、spark on mesos和spark on YARN,其中独立部署是最简单直接的方法,而后两种部署方式较为复杂;频繁的版本发布使的API更改而增加额外的开销;所支持开发语言的新功能更新时间有差异;样例和文档很基本,参考意义不是很大;如果数据没有达到一定的量级,可以选用更简单的解决方案。
高性能硬件近年也得到了快速发展,NVIDIA基于最新Volta架构的Tesla V100是为加速人工智能、高性能计算、数据中心应用推出的顶级GPU,可以帮助在AI和HPC创新中占得先机;NVIDIA Tesla V100加速器基于全新Volta GV100 GPU,Volta是功能强大的GPU架构,而GV100是突破100 TFLOPS深度学习性能极限的处理器,GV100将CUDA核心和Tensor核心相结合,在GPU中提供AI超级计算机的性能;借助Tesla V100加速的系统,过去需要消耗数周计算资源的AI模型只需几天即可完成训练,随着训练时间的大幅缩短,NVIDIA TeslaV100可助力AI解决各类新型问题。
Tesla V100采用与Tesla P100相同的SXM2主板外形,主要区别是GPU由GV100代替GP100,与其前身GP100 GPU及其他Pascal架构的显卡相比,GV100在人工智能方面有非常出色的表现。
新的Tensor Core是Volta GV100最重要的特征,是其提供大型神经网络训练所需性能的关键,除CUDA C++接口可直接编程Tensor Core外,CUDA 9 cuBLAS和cuDNN库还包含了使用Tensor Core开发深度学习应用和框架的新库接口;NVIDIA也和许多流行的深度学习框架合作以使用Tensor Core在Volta架构的GPU系统上进行深度学习研究,也致力于在其他框架中添加对Tensor Core的支持。
Tesla V100的架构设计初衷即为了实现更高的可编程度,让用户能够在更复杂多样的应用程序中高效工作,Volta是首款支持独立线程调度的GPU,可在程序中的并行线程之间实现更精细的同步与写作,提高线程写作的灵活性,最终实现更高效、更精细的并行算法;目前已经用于NVIDIA首款深度学习和分析专用工作站DGX Station;阿里云、百度和腾讯等企业均已在其云服务中部署Tesla V100;华为、浪潮和联想等原始设备制造商也已采用Tesla V100来构建新一代加速数据中心;在深度学习方面与NVIDIA合作的组织机构已有很多家,覆盖金融、汽车、教育、互联网等各类领域。
有些硬件系统的设计本身也考虑了人工智能的本领,如IBM的基于IBM"DeepQA"(深度开放域问答系统工程)技术开发的沃森处理器主要应用在一些大数据的金融分析、实时语音翻译等领域,得到业界不错的肯定和反响;沃森系统工作时一般不连接至互联网,不会通过网络进行搜索,依靠内存资料库作答,比赛时也并不需要接入互联网,而是利用多个算法应对竞赛中的挑战。
建造一个能与人类回答问题能力匹敌的计算系统,需要具备足够的速度、精确度和置信度,并且能使用人类的自然语言回答问题,作为"沃森"超级电脑基础的DeepQA技术可以读取数百万页文本数据,利用深度自然语言处理技术产生候选答案,根据诸多不同尺度评估那些问题;IBM研发团队为"沃森"开发的100多套算法可以在3秒内解析问题,检索数百万条信息然后再筛选还原成"答案"输出成人类语言;每一种算法都有其专门的功能,其中一种算法被称为"嵌套分解"算法,它可以将线索分解成两个不同的搜索功能,听起来比较晦涩但却非常实用。
发明内容
如何解决IT系统的智能处理的问题,使各种机器模拟人的思维过程和智能行为(如学习、推理、思考、规划等),胜任更多的复杂工作,使人类的智能、智慧得以物化与延伸。
本方案涉及一种使机器胜任更多复杂工作的方法,具体采用一种规范的方法或者模型,将不同功能单元(或称为服务)通过定义良好的接口或契约联系起来形成系统。
规范的方法或者模型有几个关键点:从服务集成的角度设计应用软件,并考虑复用现有的服务,优先使用开源的、可替代的技术和方法(例如消息机制);描述一套完善的开发模式来帮助应用连接到服务上,这些模式制定用于描述服务、通知及发现服务、与服务进行通信的一系列机制,如服务API;服务既可以定义为功能又可同时对外定义为对象、应用等,适应于任何现有系统,使得系统在集成时不必刻意遵循任何特殊定制;服务作为核心,使应用程序集中起来提供更加丰富、目的性更强的商业流程,更加真实地反映与业务模型的结合;服务同业务、流程结合起来,更加精确地表示业务模型、更好地支持业务流程(从业务流程的角度来看待技术),流程赋予业务模型里的组件以生命,更加清晰地定义它们之间的关系,定义同业务模型进行交互操作的专门方法;确保与其他模块、应用或者模块、应用之间进行方便的调用;构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互;可以是SOA,也可以综合SOA和其他系统架构以更好的融合与互促。
不同功能单元(或称为服务)可以是基于互联网和软件技术把多层技术、服务或者模块组织起来,也可以称为不同功能模块的服务化,之后其他模块或应用即可调用,使得同业务、流程结合在一起的服务,更加精确地表示业务模型、更好地支持业务流程,不同功能模块的服务化可以是将不同层面的人工智能技术服务化形成多层次人工智能服务,使更多承载模块或者应用的机器具备人工智能(AI)的能力和不同的智能水平或智慧,如使服务端机器具有一定的智能水平、输出人工智能服务的能力或智慧,更多的终端机器可以访问不同层次的人工智能服务、享受服务端的智慧而更加智能,更多应用系统具备“云端大脑”的可能,并应用于多种场景下,使机器胜任更多复杂工作,推动科技进步和社会发展。
所述机器是一个广义上的称呼,不仅包括提供服务的服务器或服务端机器,也包括可连接网络服务的分散设备或终端机器;而终端机器可以是单个设备、传感器、物联网终端、移动设备、嵌入式系统或单台计算机等,服务端机器也可以是单个服务器、分布式系统、云计算系统、大数据系统或其他集群
接口或契约可以采用中立的方式进行定义,独立于实现服务的硬件平台、操作系统和编程语言的方法或者机制,如将服务封装成一系列API,也可以开放出去供第三方使用,提供开放API。
实现多层次的人工智能服务,需要先利用适于机器系统的开发、运行工具组建计算平台(环境或系统架构),再分析应用场景需求(问题),然后开发或选择合适的算法或者算法组合,形成一个能辅助或替代人类完成一定工作,能模拟人的某些思维过程、智能行为(如学习、推理、思考、规划、成长等)和智慧服务的机器大脑,使人类的智能得以物化与延伸。
开发、运行工具可以是开源的或商业的系统、框架、库或者工具包等。选用时,需要考虑有些工具版本的发布周期及频繁度,需要注意其API的变化,避免增加额外的开销;有些工具所支持多种开发语言的地位不同,一般不能在同一时间更新新功能,选用最新版本时,应该首先考虑使用优先发布的语言进行实现;Apache Spark是一款很好的大数据处理框架,但是如果数据没有达到一定的量级,也可以选用更简单的解决方案。
计算平台可以通过不同的组件来支撑批、流和交互式应用:可用于在数据流传入时构建实时分析,也可以有效处理各种来源的大量数据,还可以处理自定义数据源;可用于从传入事件流计算趋势数据;将物联网系统生成的大量数据推送到后端进行处理,以固定的间隔(每分钟,小时,周,月等)构建数据管道,还可以基于一组可配置的事件触发操作;可以批量处理离线数据并提供机器学习库,可以在用户的数据集上轻松应用机器学习算法;还可以通过一个大型数据集来实验不同的算法,将工具或组件(如MLib与SparkStreaming)组合轻松拥有一个实时机器学习系统。也可应用于电子系统、自动控制系统、智能硬件、物联网、网络服务,资源配置、商业应用、web、APP、小程序、数据处理(大数据分析、数据挖掘)、从数据学习改善机器性能、工业设计开发过程、对环境(人、自然、社会、环境、地理等)的认知与学习等等具体场景需求。
智慧服务包括为移动应用、物联网应用、网络服务、商业系统、云技术、大数据技术及其他网络系统提供中枢决策、资源配置等提供模拟人脑各项能力,以接口形式提供的服务。
服务端机器硬件系统可以基于CPU服务器(CPU集群)、基于CPU+GPU的系统基于APU的高密度系统或其他基于其他分布式系统的实现,还可以从更底层硬件进行的探索和研究,比如在FPGA上实现或设计专门的集成电路;分布式系统设计方面,算法专家和系统专家可以协同,协同方式可能既要修改算法使之跟底层硬件架构匹配,又要求系统专家设计计算能力强大的单机器,又要设计高密度整合、高效通信的服务器。
多层次的人工智能服务有:技术人员定义算法,机器辅助,针对浅层次应用的初级服务;应用或开发机器学习算法,针对中层次应用的中级服务;应用神经网络尤其是深度学习模型的完成,针对深层次应用的高级服务;其他更高级的服务等。
浅层次应用的初级服务,一般由技术人员定义简单算法,机器辅助,研究人员通过模仿人类来制定特定的认知和推理过程,形成算法在计算机上运行以实现让机器处理问题,如求和、排序、逻辑判断等简单功能的算法软件,使机器替代人完成一定的工作,如对数据获取、整理、存储、管理等过程。
中层次应用的中级服务,主要通过应用或开发机器学习算法,由机器自动完成一定的应用,如自动定理推理为解决问题提供了自动求解方案;企业数据应用如大数据分析中,数据挖掘为从数据库中挖掘提炼出具有必然性和蕴含本质规律的数据提供了规则、聚类等数据处理、建模、评估等标准;动态系统、机器人控制等系统控制方面的增强学习与自动控制等;能代替人脑思维进行工作的智能软件;还有符号计算、机器翻译、远程诊断、信息检索、问题求解与专家系统、逻辑推理与逻辑证明、图片搜索、广告点击率预测等。
可以针对具体应用需要,开发或应用机器学习算法中回归算法、基于实例的算法、正则化算法、决策树算法、贝叶斯算法、基于核的算法、聚类算法、关联规则学习、降低维度算法、集成算法及其他针对应用开发的算法等完成服务,机器学习算法往往不会有一个固定的算法流程,而是把问题转化为最优化的问题(如ML、MAP和EM都是这样),然后用不同的方法来优化这个问题,得到尽可能好的结果;实际使用中需要不断地调参实验,而能理解算法犹如让一个黑盒变的透明,是对使用者的基本要求;如机器学习算法的使用,即使知道接口也至少需要调一些参数来进行实际使用,如线性回归(Linear Regression),分类与逻辑回归(Logistic Regression),广义线性模型(Generalized Linear Models GLM),生成学习模型(Gneerative Learning algorithms),神经网络(Neural Network),支持向量机(Support vector machines),聚类(Clustering),推荐系统(Recommender systems),异常检测,强化学习,其他如偏差分析、降维等,基本都是这样。
ML最大似然估计(Maximum Likelihood)是一种统计方法,用来求一个样本集的相关概率密度函数的参数;在统计计算中,EM最大期望(Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variabl),经常用在机器学习和计算机视觉的数据集聚(DataClustering)领域;MAP最大后验估计(Maximum a Posterior)是最大似然估计(MLE)的扩展并与其类似,都是假设在给定数据的情况下,分布的参数都是固定的数值,不同的是MAP介绍这个参数服从一个分布,即参数取到每个值的可能性不是相等的,而是服从一个分布的。
对一个问题的建模可以有不同的方式,先要考虑算法的学习方式:监督式学习的常见应用场景包括分类问题和回归问题,常见算法有逻辑回归和反向传递神经网络;非监督式学习常见的应用场景包括关联规则的学习及聚类等,常见算法包括Apriori算法和K-Means算法;半监督式学习应用的场景包括分类和回归,常见算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识的数据进行建模,然后在此基础上对标识的数据进行预测,如图论推理算法或拉普拉斯支持向量机等;强化学习常见的应用场景包括动态系统及机器人控制等,常见算法包括Q-Learning及时间差学习(Temporal DifferenceLearning)等。
机器学习的有些算法很难明确归到某一类,而对于有些分类来说同一分类的算法可以针对不同类型的问题。根据算法的功能和形式的类似性,如回归算法是统计机器学习的利器;基于实例的算法常常用来对决策问题建立模型;正则化算法是其他算法(通常是回归算法)的延伸,根据算法的复杂度对算法进行调整,通常对简单模型予以奖励,而对复杂算法予以惩罚;决策树算法根据数据的属性采用树状结构建立决策模型,常用来解决分类和回归问题;贝叶斯算法是基于贝叶斯定理的一类算法,主要用来解决分类和回归问题;基于核的算法是把输入数据映射到一个高阶的向量空间,在这些高阶向量空间里,有些分类或者回归问题能够更容易地解决;聚类算法通常按照中心点或者分层的方式对输入数据进行归并,所有的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类;关联规则学习通过寻找最能够解释数据变量之间关系的规则,找出大量多元数据集中有用的关联规则;降低维度算法与聚类算法一样,试图分析数据的内在结构,不过降低维度算法通过非监督式学习,试图利用较少的信息来归纳或者解释数据,这类算法可以用于高维数据的可视化,或者用来简化数据以便监督式学习使用;集成算法用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测,集成算法的主要难点在于究竟集成哪些独立的、较弱的学习模型,以及如何把学习结果整合起来,这是一类非常强大且流行的算法。
在企业数据应用的场景下,最常用的可能就是监督式学习和非监督式学习;强化学习则更多地应用在机器人控制及其他需要进行系统控制的领域;非监督学习解决真实世界中超大规模物体的识别,通过使用不加标签的数据直接训练,在不需要人工模型干预的情况下学习大规模数据中的规律、模式和特征等,理解通常人类大脑不能直接提取和抽闲出来的问题,可以充分挖掘大数据中隐藏的价值,更好地为人类服务;模型训练过程可以采用并行训练以提高训练速度,多个节点间训练不同数据时的协调和同步等问题,可以从算法、工具角度具体考虑、重新设计。
深层次应用的高级服务,主要使用神经网络算法尤其是深度学习算法的应用以及细化。
传统人工智能模型可能很好但计算的问题无法解决或者模型不够复杂,从统计和计算的角度讲机器学习是系统对它可能的误差的每个来源去做分解、了解和控制,从而控制整体的预测误差;一般需要做一些假设,但所有假设并不完美,可以用无偏的大数据这种非常复杂的模型去减少偏差。深度学习对于图像、语音这种特征不明显(需要手工设计且很多没有直观的物理含义)的问题,能够在大规模训练数据上取得更好的效果;可以完成语音识别、语音合成、自然语言理解、图像识别(如识别医学图像中的病变、识别卫星图像中的珍稀物种、照片、动物脸部等),大规模图像识别、OCR(光学字符识别)、复杂信息检索、手写字识别、金融应用、服务器系统的功耗智能管理、计算机体系结构的设计空间探索、商品和文艺品推荐等应用;达到机器代替人进行学习、适应、工作的高级应用。深度学习应用于语音识别的技术已经很成熟;视觉方面不仅仅是图像分类,在更广泛的视觉问题上,深度学习都产生了重大影响,如人脸识别,通用物体检测,图像分割,光学字符识别,玩游戏等;而文本理解也已经取得很好的结果,其中用到递归神经网络(RNN)。
神经网络(neural network,NN)最初包括输入层,隐含层和输出层共三层,输入和输出层通常由应用决定,隐含层包含神经元,隐含层跟输入和输出层之间的链接可供训练,通过训练神经网络实现从输入到输出的一个非线性映射过程;训练过程具体是在计算机上搭建一个很多层的神经网络,只需要制定多少层,并不需要给定具体的参数,计算机通过计算数据(大数据)来自动学习最终的网络参数,不一样的网络参数能够识别不同的物体,然后这个训练好的网络就可以自动识别物体了;数据是训练的关键,训练开始时那些万亿级的参数都是随机初始化的,不能完成识别任务;数据量大模型才能好,数据量太大需要训练的时间会比较长,和系统硬件有关;通过不停的给予数据,一遍一遍来训练,才能达到最终的识别模型,能够识别语音或者图像中的物体;神经网络学习到的是一堆各种各样的特征,有的物体可能一个特征能够描述,有的需要不同特征组合起来能够描述;输入的图像总类越多,网络越能知道什么物体需要什么特征组合来描述;一个好的神经网络训练完之后,不同的神经元代表不一样的特征。
主流的深度神经网络模型(DNN)包含九个隐含层,通常每层都有上千上万级的神经元,整个网络有百万级至百亿级的参数空间,具有非常强大的学习能力和特征提取能力,由计算机从数据中自动逐层提取特征的过程,不需要人类干预;一个深度神经网络模型表达很多物体,可能有十亿个参数、亿亿个神经元(数目不一定准确,但是一定远比人类大脑神经元数目少的多),所以只有经过复杂的训练才有可能拥有强大的学习能力,推理\归纳能力;深度神经网络的本质思想就是堆叠多个神经元层,每个层都提取一定的特征和信息,这一层的输出作为下一层的输入,实现对输入信息进行分级表达,以发现数据的分布式特征表示;深度神经网络模型的层次取决于问题本身的层次和复杂度,有些问题本身的表达能力要求多层次;多层神经网络根据应用不同,网络结构也会不一样,如MLP(multi-layerperceptron,多层感知机)、Autoencoder(自适应编码器)和CNN(convolutional neuralnetworks,卷积神经网络)三种模型。
模拟生物神经网络作为一类模式匹配算法,通常用于解决分类和回归问题,人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法;深度学习(Deep Learning)算法是对人工神经网络的发展,试图建立大得多也复杂得多的神经网络,很多是半监督式学习算法,用来处理存在少量未标识数据的大数据集;一般特指学习高层数的网络结构,这个结构中通常会结合线性和非线性的关系;深度学习算法自动提取分类所需的低层次或者高层次特征(该特征可以分级(层次)地依赖其他特征);其机制、行为等方面和大脑有一些关联性,能够吸收数据增长带来的红利特别适合大数据,也带来思维观念或解决问题方式的改变(端到端的学习),把原始数据放到系统里,中间的步骤通过学习的方法去完成;深度学习对于图像、语音这种特征不明显(需要手工设计且很多没有直观的物理含义)的问题,能够在大规模训练数据上取得更好的效果。
建模过程具体是在计算机上搭建一个很多层的神经网络,只需要制定多少层,并不需要给定具体的参数,计算机通过计算大数据来自动学习最终的网络参数,不一样的网络参数能够识别不同的物体,训练好的网络就可以自动识别物体了;基本本体模型建立之后,可以依靠机器学习扩展,包括本体概念的扩展及其之间的关系,是语义分析的基础,也是决策支持、规划分析、企业资源调度的基础之一,这对大数据的应用扩展非常具有现实意义;对一个问题的建模可以有不同的方式,也需要考虑算法的学习方式;使用深度学习模型时,要有驾驭这个模型和计算的能力以及对问题要有足够的了解。
当物联网发展到达一定规模时,借助条形码、二维码、RFID等能够唯一标识产品,传感器、可穿戴设备、智能感知、视频采集、增强现实等技术可实现实时的信息采集和分析,这些数据能够支撑智慧城市、智慧交通、智慧能源、智慧医疗、智慧环保、智能制造、机器人、智慧商业、智能家居等的理念需要,这些“智慧”应用将成为大数据即AI的主要来源和服务范围;在理解语音指令、分辨图像、驾驶汽车、商业营销以及打游戏方面,机器已经比人类做得更好,也能够处理海量数据,并迅速做出复杂的运算。
要使机器能自然行走在人类中间、融入社会,需要克服传统分类不同AI(如响应式机器、有限记忆机器、心智理论机器、自我意识机器)之间的界限;可以在前述各层次AI服务的基础上,集中精力打造理解记忆、学习以及基于过去经验作出决定的AI能力,并逐步设计或开发超越这些分类的机器或应用,使得计算机程序或机器逐步展示出自我管理、表达情绪、适应社会(环境)和创新性等更接近人类的能力,并提供更高级的服务;这也是机器理解人类智慧、AI发展成熟、真正达到人工智能(AI)要求的重要步骤。
本发明所涉及的使机器胜任更多复杂工作的方法,基于规范的方法或者模型(如SOA),不论终端机器设备还是服务端机器系统或者集群,都能很容易地从服务架构中添加功能,胜任更多复杂的工作,轻松实现不同层次的人工智能技术和不同需求的应用场景对应使用,更好发挥各分支人工智能技术的应用价值,更快地应对市场变化、降低在客户化和人员技能的投入,帮助企业管理人员或应用架构师迭代地优化他们的企业业务流程、应用系统,提升整个企业IT架构的控制能力,便于将服务封装成一系列API开放出去,吸引更多第三方在此基础上开发商业应用,获得更多的流量与市场份额,实现大平台发展、共享的途径,与开发者双赢,也为基于互联网和移动互联网等领域的创新应用提供了理论基础,促进多种科学与网络技术的深度融合(如物联网、大数据),带动多种信息科学(信息学、数据科学、经济学、控制学、仿生学、计算机学、商业等)领域的发展与突破,未来会在很大程度上影响信息产业的发展方向,进而促进社会发展、科技进步,加快智慧全球的步伐。分布式部署方式方面对于没有经验的新手来说难度很大,在安装依赖的时候可能会遇到一些问题,不正确时应用程序会在独立模式下工作,在集群模式下运行时会遇到类路径异常等问题;所用工具也主要为处理大量数据和运行机器学习算法而存在,计算效率较高但是以吃内存为代价,监控和测量内存使用也至关重要。文档教程和代码演练对于快速提升能力或者部署系统非常重要,有很多配置可以根据用例进行调整,默认配置不一定最好,要仔细阅读部署、内存配置等文档,根据需求及时作出调整,避免问题。
具体实施方式
人工智能通过所使用的数据规模来生存和改进,意味着随着时间的推移能够看到更好的人工智能,而且其发展会围绕着那些可以挖掘最大数据集的组织。加速科学发现、有效使用数据(尤其是大数据,如数据挖掘、可视化等)、使机器能够胜任更多复杂工作以及提供基于AI的智能服务等,需要复杂且精准的模拟、对大数据的强大处理能力、或是训练和运行复杂精妙的深度学习网络等,这些工作负载要求提升数据中心速度,以满足对指数级计算能力的需求,达到高效分析大量数据并且得到期望结果的目标。
服务端采用理想的硬件或者其组合,如采用NVIDIA Tesla V100等加速器、CPU/GPU集群或者其他分布式架构,硬件的瓶颈问题做理想化预估(认为拥有能够满足性能要求的硬件系统);在不考虑硬件系统瓶颈问题的基础上采用SOA思维,用成熟的开源系统、框架、工具包和源码或者商业服务搭建完备的人工智能(尤其是机器学习及其深度学习)计算环境和系统模型,实现多个层次的服务,可以定义为功能也可同时对外定义为对象、应用等,使得系统在集成时不必刻意遵循任何特殊定制,针对具体问题细分解决方案,并以服务形式提供API接口供具体应用调用;可用Python、Go、Java、C++等多种开发语言及其语言环境,针对具体问题需要,编写或直接使用开源库算法。
市面(尤其是互联网)上活跃着大量有关机器学习的优秀的开源系统、框架、平台、库和工具包,基于Python、Java、C等的很多机器学习算法基本都被前人实现并成为互联网共享资源(存在很多“脏”或者“乱”的开源代码),可以仔细甄别后根据应用需要择优选用;受欢迎的开源项目大多与垃圾邮件过滤、人脸识别、推荐引擎、数据处理等常用应用相关,并且大都是基于较流行的语言以及平台,推广以及扩展了机器学习领域的很多重要算法,如LDA等主题模型以及HMM等隐马尔科夫模型。
熟悉Java或Scala语言环境以及能与Python对接的情况下,可以优先使用Spark。Spark的设计初衷是为了支持迭代的工作,基于内存的计算模型天生就擅长迭代计算,多个步骤计算直接在内存中完成,只有在必要时才会操作磁盘和网络,非常符合很多机器学习算法的特点,是机器学习的理想平台;可以在Spark平台上轻松实现各种机器学习和数据挖掘并行化算法设计,实现浅层次应用的初级服务、中层次应用的中级服务或深层次应用的高级服务,并设计、开发形成相应API,以及为更高级的服务做储备。Apache Spark有机器学习和GPU机制(早前用户必须自己搭建),可以通过建立一些开源或商业系统提供并配置GPU加速器的支持。
机器学习的各种方法,大体分为监督式学习、半监督式学习、无监督式学习、增强学习和其他,每一类都有很多算法实现。监督学习,根据在学习过程中获得的经验技能,对没学习过的问题也可以做出正确解答,使计算机获得这种泛化能力;计算机在正确输出的不断更正和指引下,不断提高自己分析和解决问题的正确性;典型任务有预测数值型数据的回归、预测分类标签的分类、预测顺序的排列;主要应用于手写文字识别、声音处理、图像处理、垃圾邮件分类与拦截、网页检索、基因诊断、股票预测等。无监督学习不局限于解决有正确答案的问题,典型任务有聚类、异常检测;主要应用于人造卫星故障诊断、视频分析、社交网站解析、声音信号解析、数据可视化、监督学习的前处理工具等。强化学习被认为是人类主要的学习模式之一,使计算机获得对没学习过的问题也可以做出正确解答的泛化能力;与监督学习不同的是,没有正确输出的引导,也就是没有正确的答案;与无监督学习不同的是,需要对获取到的信息进行自我评估;典型任务有回归、分类、聚类、降维;主要应用于机器人的自动控制、计算机游戏中的人工智能、市场战略的最优化等。半监督学习的训练数据有部分被标识,部分没有被标识,这种模型首先需要学习数据的内在结构,以便合理的组织数据来进行预测;算法上,包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测;如深度学习(DeepLearning)是监督学习的匹配学习中人工神经网络延伸发展出来的,受限波尔兹曼机(Restricted Boltzmann Machine(RBM)),深度信念网络(Deep Belief Networks(DBN)),卷积网络(Convolutional Network),栈式自编码(Stacked Auto-encoders)以及其他如集成算法,用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测。
Apache Spark作为一个轻量级的内存集群计算平台,通过不同的组件来支撑批、流和交互式应用:分析方面,Spark在数据流传入构建实时分析时能够发挥很大作用,可以有效处理各种来源的大量数据,支持HDFS,Kafka,Flume,Twitter和ZeroMQ,还可以处理自定义数据源;趋势数据方面,Apache Spark可用于从传入事件流计算趋势数据;物联网方面,物联网系统会生成大量数据然后将其推送到后端进行处理,Apache Spark能够以固定的间隔(每分钟,小时,周,月等)构建数据管道,还可以基于一组可配置的事件触发操作;机器学习方面,因为Spark可以批量处理离线数据并提供机器学习库(MLib),所以用户的数据集上可以轻松应用机器学习算法;此外,用户可以通过一个大型数据集来实验不同的算法,将MLib与Spark Streaming组合轻松拥有一个实时机器学习系统。
Spark包括机器学习库MLlib、集群管理器、类Jupyter的互动笔记本、仪表板和作业预定等,MLlib非常强大,核心内容为一些常用的算法;也不断有新版本更新,增加Structured Streaming的生产环境支持、扩展SQL、R中引入了新的分布式机器学习算法、MLlib和GraphX中添加新算法等功能;随着新一代Spark系统的出现和逐步发展成熟,进行各种机器学习和数据应用并行化算法设计变得越来越容易。MLlib支持的分类算法有逻辑回归、支持向量机、朴素贝叶斯和决策树等,如导入训练数据集,然后在训练集上执行训练算法,最后在所得模型上进行预测并计算训练误差;分类算法属于监督式学习,使用类标签已知的样本建立一个分类函数或分类模型,应用分类模型能把数据库中的类标签未知的数据进行归类,分类在数据挖掘中是一项重要的任务,目前在商业上应用最多,常见的典型应用场景有流失预测、精确营销、客户获取、个性偏好等。MLlib支持的回归算法有线性回归、岭回归、Lasso和决策树等,如导入训练数据集,将其解析为带标签点的RDD,使用LinearRegressionWithSGD算法建立一个简单的线性模型来预测标签的值,最后计算均方差来评估预测值与实际值的吻合度;回归算法属于监督式学习,每个个体都有一个与之相关联的实数标签,并且希望在给出用于表示这些实体的数值特征后,所预测出的标签值可以尽可能接近实际值。MLlib也支持广泛使用的KMmeans聚类算法,如导入训练数据集,使用KMeans对象来将数据聚类到两个类簇当中,所需的类簇个数会被传递到算法中,然后计算集内均方差总和(WSSSE),可以通过增加类簇的个数k来减小误差,实际上最优的类簇数通常是1,因为这一点通常是WSSSE图中的“低谷点”;聚类算法属于非监督式学习,通常被用于探索性的分析,是根据“物以类聚”的原理,将本身没有类别的样本聚集成不同的组,这样的一组数据对象的集合叫做簇,并且对每一个这样的簇进行描述的过程,目的是使得属于同一簇的样本之间应该彼此相似,而不同簇的样本应该足够不相似,常见的典型应用场景有客户细分、客户研究、市场细分、价值评估。MLlib支持基于模型的协同过滤,其中用户和商品通过一小组隐语义因子进行表达,并且这些因子也用于预测缺失的元素,如导入训练数据集,数据每一行由一个用户、一个商品和相应的评分组成;假设评分是显性的,使用默认的ALS.train()方法,通过计算预测出的评分的均方差来评估这个推荐模型;实用程序部分包括数据的验证器、Label的二元和多元的分析器、多种数据生成器、数据加载器;协同过滤常被应用于推荐系统,这些技术旨在补充用户-商品关联矩阵中所缺失的部分。
应用时,了解清楚问题以及所涉及的对象非常关键,如推荐系统中应用了各种高深的算法、架构,但其基础原理是朴素的;更好的了解待推荐的内容、更好的了解要推荐给的人,才能更高效的完成内容与人之间的对接;如果没有对内容做好分析用户画像就做不好,只有把内容画像做好了才能进一步提升用户画像的品质;做内容画像的两个关键是:从多个维度刻画内容形成对应的标签体系和如何将这些标签用在内容上。
平台的使用也非常关键,如完成事情的每个参与者如果坚持自己擅长的方式,隐形成本会非常高,以Spark的Mlib为载体使所有开发人员共用spark算法平台,不仅易于平台维护也可以使大家信息共享更快,交流成本更低;基于此研发工程师只要将算法工程师提供的spark代码(Spark Mlib现有的或者自己实现的)做些调整优化,就可以直接运行看效果。如用Spark的Mllib来简单实践推荐算法,推荐算法耳熟能详的就是CF(协同过滤),用CF中ALS(alternating least squares)交替最小二乘做个例子,CF里面的算法有基于物品的,基于用户的,ALS是基于矩阵分解的,协同过滤之所以先支持ALS,也是因为ALS算法的并行度比较好,在Spark上也更能发挥该算法的优势。
对事物本质(如具体应用场景)的了解才能更好地理解一个算法,如协同算法是应用比较广泛的一个算法,但协同不应该只是一个算法而是一种模式;很多常见的模型其实都是协同模式,例如A1用户推荐文章B1,可能会把用户用向量做表征(文章也是),观察大量的用户A2,A3...AN是否点击过B1,使用逻辑回归/SVM等分类算法训练模型,再把A1,B1丢进模型,得到是否推荐;事实上这里用的是协同,本质上是相近用户选择的互相推荐。
对算法有了真正的理解后,确定什么场景使用什么算法。首先需要将具体场景对应到具体类别的问题上,如聚类的问题、分类的问题、还是回归类问题,定义了类别之后选择对应的算法,如聚类可以使用KMeans,LDA,K近邻等,分类可以贝叶斯,SVM等;场景要解决的问题往往不是这么直观明显,如上面提到的构建内容画像的问题就得到了两个子问题,每个子问题又需要划分成好多个步骤,每个步骤可能对应一个或者多个算法问题;明确并使用算法之后的效果也很可能完全不是想象的样子,还需要了解算法的核心以及潜在的需求,是否对数据的分布做了假设,特征和数据集的情况如何等;很多算法都做了一些粗暴的假设,这种假设会导致算法存在一些固有的问题,如果不了解可能会将缺点以为是特性,例如如果不了解Gini Importance的内部思想,理解数据时可能会造成误解,导致错误的认为先被选中的特征是很重要的(而其余的特征不重要),但实际上这些特征对响应变量的作用确实非常接近。
基于Spark做新词发现时,通过构建垂直领域词库,自动发现新热门词汇,相当于直接用spark计算出词的五个属性:凝固度、自由度、词频、idf以及重合子串;把数据转化为算法需要的格式,用现成的算法运行出结果或者模型,然后反复尝试直到得到能接受或者最优的结果;这个过程需要注意很多的细节,如新词发现没有现成的工具包,编写时第一步要获取语料,基于现有的平台资源中心挑出了上百万篇文章id,根据id到数据网关获取title,body字段,即用现有的平台需要一个SQL语句和几行Scala代码,SQL其实就是用Hive生成一个上百万篇文章的id列表;接着按规则做计算,比如算词的凝固度、重合子串,会遇到很多性能如采用Spark里的groupByKey还是reduceByKey的问题,实际情况是一个词出现太多次数,groupByKey不适用而需要用reduceByKey来完成;运行算法后得到了结果,因为按频次排序,可能出现结果不太好看的情况,这个时候就需要观察数据了,提出新的规则如最后得到的中文词结果,用一些简单规则进行过滤,过滤后效果会好很多,如没意义的生活词或者不成词的词就被去掉了。
再如基于Spark做智能问答,主要通过比较两个标题的相似度来实现。具体做法是透过word2vec解决一意多词的问题,接着将词转换为句子向量,这样任何一个问题都可以转换为一个向量,同理任何一篇博文的标题也可以转化为一个向量;word2vec采用搜索引擎(一般大部分网站都具备站内搜索服务)的数据来源,如大部分内容类网站的PV应该有相当一部分来自搜索引擎,因为搜索的query串都是用户遇到的问题,然后指向到解决这些问题的内容上,内容上直接拿用户的query作为word2vec的语料,得到一些常用的提问词,每个词用一个50维度的向量表示,当然不可能真的让一个问题和几百万内容直接做比较,一个简单有效的方式是先通过搜索引擎去搜,然后将搜索得到的top100结果做向量计算得到新的得分,基本相似度大于0.9的可以算作答案,大于0.7的就可以作为参考答案;word2vec计算出来的是用一个稠密的定长向量表示词,做法是直接把一个句子里的词的向量按位做加法,重新得到一个新的向量作为句子的向量,这种方式有句子越长信息损耗越大的缺陷,但用于标题性质的相似度效果还是很理想;而因为word2vec可以算出不同词汇之间关系,句子里很多词汇不相同的情况下,也能被算出他们很相似的结果。
Mahout也是广为人知的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序;它是基于Hadoop的机器学习和数据挖掘的一个分布式框架,用MapReduce实现了部分数据挖掘算法,解决了并行挖掘的问题;通过使用Apache Hadoop库,Mahout可以有效地扩展到Hadoop集群,Mahout可以用来实现文档集群、提出建议和组织内容;该项目目前已经有了多个公共发行版本,包含聚类、分类、推荐过滤、频繁子项挖掘等很多经典算法,提供了很方便的云服务接口:推荐引擎使服务商或网站会根据你过去的行为为你推荐书籍、电影或文章,还涉及ItemCF和UserCF等;聚类如Google news使用聚类技术通过标题把新闻文章进行分组,从而按照逻辑线索来显示新闻,而并非给出所有新闻的原始列表;分类如雅虎邮箱基于用户以前对正常邮件和垃圾邮件的报告,以及电子邮件自身的特征,来判别到来的消息是否是垃圾邮件。
Mahout使用了Taste来提高协同过滤算法的实现,是一个基于Java实现的可扩展的,高效的推荐引擎,既实现了最基本的基于用户的和基于内容的推荐算法,同时也提供了扩展接口,使用户可以方便的定义和实现自己的推荐算法;同时Taste不仅仅只适用于Java应用程序,它可以作为内部服务器的一个组件以HTTP和Web Service的形式向外界提供推荐的逻辑,能满足企业对推荐引擎在性能、灵活性和可扩展性等方面的要求。
Taste有几个主要且常用的接口:DataModel是用户喜好信息的抽象接口,它的具体实现支持从任意类型的数据源抽取用户喜好信息,Taste默认提供JDBCDataModel和FileDataModel,分别支持从数据库和文件中读取用户的喜好信息;UserSimilarity和ItemSimilarity,UserSimilarity用于定义两个用户间的相似度,它是基于协同过滤的推荐引擎的核心部分,可以用来计算用户的“邻居”(将与当前用户口味相似的用户称为他的邻居),ItemSimilarity用于计算Item之间的相似度;UserNeighborhood用于基于用户相似度的推荐方法中,推荐的内容是基于找到与当前用户喜好相似的邻居用户的方式产生的,UserNeighborhood定义了确定邻居用户的方法,具体实现一般是基于UserSimilarity计算得到的;Recommender是推荐引擎的抽象接口,Taste中的核心组件,程序中为它提供一个DataModel,可以计算出对不同用户的推荐内容,实际应用中主要使用它的实现类GenericUserBasedRecommender或GenericItemBasedRecommender,分别实现基于用户相似度的推荐引擎或者基于内容的推荐引擎;RecommenderEvaluator,评分器;RecommenderIRStatsEvaluator,搜集推荐性能相关的指标,包括准确率、召回率等等。
如用Mahout协同过滤算法的开发编程时,先创建maven项目,导入mahout依赖,然后下载一些相关数据(如大量用户对上万部电影的百万级评价和十万个标签数据),几个简单的步骤就可以实现基于用户的推荐或基于物品的推荐,然后评估推荐模型,获取推荐的准确率和召回率。
SystemML是灵活的、可伸缩机器学习(ML)语言,使用Java编写,它提供自动优化功能,通过数据和集群特性保证高效和可伸缩,SystemML可在MapReduce或者Spark环境中运行,实现可定制算法、多个执行模式包括单个或Hadoop批量和Spark批量以及自动优化三大功能。SystemML的机器学习主要基于两方面:SystemML语言,声明式机器学习(DML),包含线性代数原语,统计功能和ML指定结构,可以更容易也更原生的表达ML算法,算法通过R类型或者Python类型的语法进行表达,DML通过提供灵活的定制分析表达和独立于底层输入格式和物理数据表示的数据显著提升数据科学的生产力;SystemML提供自动优化功能,通过数据和集群特性保证高效和可伸缩。
WEKA是一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化,是使用Java开发的用户数据挖掘的开源项目,通过Java设计的新式交互界面上,实现人与程序的交互;可根据用户输入的N组数据,通过用户指定的算法,如回归、分类、聚类、邻近等分析,然后输出一个统计分析的结果,还可以使用测试数据对统计结果进行验证,以确认分析结果的可用性;weka本身有一个GUI,通过java-jar weka.jar启动,然后点击Explorer启动子程序,在weka explorer中点击OpenFile打开*.arff格式的数据,.arff其实就是文本文件;weka explorer顶部标签的第二个标签,可以进行分类相关的分析;利用第三个标签为集群相关的分析可以进行聚类分析等。
算法是在标签的Classifier中的Choose按钮中选择的,其中,以树的形式展示,分类分析是:Classify->Choose->Classifiers->trees->J48;对应java类(weka.classifiers.trees.J48;);回归分析是:Classify->Choose->Classifiers->Functions->LinearRegression;界面上这个类(weka.classifiers.functions.LinearRegression)就是用java编程时要用到的;聚类分析是:Cluster->Choose->clusterers->SimpleKMeans;邻近分析是:Classify->Choose->Classifiers->lazy->IBK。实现数据挖掘算法时,更多情况下需要依据weka的接口文档,在weka中集成自己的算法,甚至借鉴它的方法自己实现可视化工具也不是很困难,可以通过Java可以很简单的进行API的调用,也可以通过写java程序来实现,如编写代码从一个arff文件中读取数据,然后进行了回归分析,就可以输出根据回归分析结果预测的如某个房屋的价格等信息。Python语言环境下,可以采用强大的机器学习工具包Scikit-learn,通过在现有Python的基础上构建了NumPy和Matplotlib,提供了非常便利的数学工具,在主页中可以看到User Guide,是整个机器学习的索引,其中用户可以学到各种有效的方法,在Reference里用户可以找到各个类具体的用法索引;此工具包作为Python的机器学习项目,拥有简洁、高效的算法库,提供一系列的监督学习和无监督学习的算法,几乎覆盖了机器学习的所有主流算法,主要用于数据挖掘和数据分析。
Go语言于2009年11月正式宣布推出并开放源代码,开始在Linux及Mac OS X平台上进行了实现,后追加Windows系统下的实现;Go又称Golang是Google开发的一种静态强类型、编译型、并发型且具有垃圾回收功能的编程语言,纯粹的Go语言解决方案意味着与其他编写语言糅合使用的情况更少了,当下Go语言开发者往机器学习方向发展也逐渐变得轻松;采用Go语言资料库的主要优势并不在于部署,而是在于开发的便利度,与其使用其他编程语言(主要是C/C++)编写的资料库,开发者现在可用直接使用完全用Go语言编写的工具包展开工作。
GoLearn是自称“内置电池”的Go语言机器学习资料库,也是一个成熟的项目,提供了交叉验证和训练/测试等辅助功能,简洁、易定制,是机器学习开发首选之一;除过使用C++构筑的线性模型资料库,其他全是Go语言编写的;它的一些接口使用的数据处理方式和scikit-learn(一个非常流行的Python机器学习项目)非常相似,实现了熟悉的Scikit-learn适应/预测界面,可实现快速预估测试和交换,使得开发人员可以很轻松从Python转向Go。
Gorgonia作为Go机器学习库,用于撰写和评估多维数组的数学公式,与Theano和TensorFlow理念相似,支持GPU/CUDA,支持分布式计算;能“提供动态建立神经网络及相关算法必需条件,关键在于“动态”;和之前的机器学习资料库Theano一样,允许使用一系列原始资料库中的高阶术语来描述神经网络的行为,TensorFlow资料库也使用这种方式,使得实施过程中不用再亲自编写算法,也不用再提交那些能在不同项目中重复使用的项目。
机器人领域,ROS和Player、Orocos、CARMEN、Orca和Microsoft Robotics Studio等架构有相似之处,对于简单的无机械手的移动平台来说,Player是非常不错的选择,ROS则被设计为适用于有机械臂和运动传感器的移动平台(倾角激光、云台、机械臂传感器);与Player相比,ROS更有利于分布式计算环境,当然Player提供了较多的硬件驱动程序,ROS则在高层架构上提供了更多的算法应用(如集成OpenCV的视觉算法),是一种非常优秀的机器人开发工具。
Guagua—Hadoop迭代式计算框架Guagua是PayPal的一个开源机器学习框架Shifu的子项目,主要解决了模型训练的分布式问题,同时并没有局限在分类模型,几乎任何基于迭代的算法都可以利用Guagua为其添加分布式功能;由于Guagua对分布式的良好支持,以前许多想做又不能做的工作(如模型特征自动选取)都可以进行;目前主要支持的是同步的Master-Workers结构的迭代式计算框架,今后将支持异步方式的迭代计算框架。
神经网络(neural network,NN)最初包括输入层,隐含层和输出层共三层,输入和输出层通常由应用决定,隐含层包含神经元,隐含层跟输入和输出层之间的链接可供训练,通过训练神经网络实现从输入到输出的一个非线性映射过程;训练过程具体是在计算机上搭建一个很多层的神经网络,只需要制定多少层,并不需要给定具体的参数,计算机通过计算数据(大数据)来自动学习最终的网络参数,不一样的网络参数能够识别不同的物体,然后这个训练好的网络就可以自动识别物体了;数据是训练的关键,训练开始时那些万亿级的参数都是随机初始化的,不能完成识别任务;数据量大模型才能好,数据量太大需要训练的时间会比较长,和系统硬件有关;通过不停的给予数据,一遍一遍来训练,才能达到最终的识别模型,能够识别语音或者图像中的物体;神经网络学习到的是一堆各种各样的特征,有的物体可能一个特征能够描述,有的需要不同特征组合起来能够描述;输入的图像总类越多,网络越能知道什么物体需要什么特征组合来描述;一个好的神经网络训练完之后,不同的神经元代表不一样的特征,比如有的对应猫脸,有的对应人脸,有的对应人的背影;现在的图像识别能分类两万多种物体,现实世界的常见物体都能识别了。
主流的深度神经网络模型包含九个隐含层,通常每层都有上千上万级的神经元,整个网络有百万级至百亿级的参数空间,具有非常强大的学习能力和特征提取能力,由计算机从数据中自动逐层提取特征的过程,不需要人类干预;一个深度神经网络模型表达很多物体,可能有十亿个参数、亿亿个神经元,数目不一定准确,但是一定远比人类大脑神经元数目少的多,所以只有经过复杂的训练才有可能拥有强大的学习能力,推理\归纳能力;深度神经网络的本质思想就是堆叠多个神经元层,每个层都提取一定的特征和信息,这一层的输出作为下一层的输入,实现对输入信息进行分级表达,以发现数据的分布式特征表示;如图像识别,第一层提取边界信息,第二层提取边界轮廓信息,然后轮廓可以组合成子部分,子部分组合成物体,这样一层层下来逐层提取特征,通过组合低层特征形成更加抽象的高层表示属性类别或特征,通过特征或者属性的不同组合来判定图片中是哪个种类的物体。深度神经网络(DNN)模型的层次取决于问题本身的层次和复杂度,有些问题本身的表达能力要求多层次,通常的网络复杂度是语音识别小于图像识别,大规模图像识别存在很多软件和硬件层挑战;虽然都是多层神经网络,但是根据应用不同,其网络结构不一样,最常用的有三种模型:MLP(multi-layer perceptron,多层感知机),Autoencoder(自适应编码器)和CNN(convolutional neural networks,卷积神经网络);MLP应用比较广泛,如语音识别,但是MLP有过度拟合(Overfit)问题;卷积神经网络学动态数据好,图像识别主要基于此;Autoencoder用于智能监控的指纹识别等。
模拟生物神经网络作为一类模式匹配算法,通常用于解决分类和回归问题,人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法;深度学习(Deep Learning)算法是对人工神经网络的发展,试图建立大得多也复杂得多的神经网络,很多是半监督式学习算法,用来处理存在少量未标识数据的大数据集(可以用无偏的大数据这种非常复杂的模型去减少偏差);一般特指学习高层数的网络结构,这个结构中通常会结合线性和非线性的关系;深度学习算法自动提取分类所需的低层次或者高层次特征(该特征可以分级(层次)地依赖其他特征),对于机器视觉来说,深度学习算法从原始图像去学习得到它的一个低层次表达,如边缘检测器、小波滤波器等,在这些低层次表达的基础上再建立表达,如这些低层次表达的线性或者非线性组合,然后重复这个过程,最后得到一个高层次的表达;其机制、行为等方面和大脑有一些关联性,能够吸收数据增长带来的红利特别适合大数据,也带来思维观念或解决问题方式的改变(端到端的学习),把原始数据放到系统里,中间的步骤通过学习的方法去完成;深度学习对于图像、语音这种特征不明显(需要手工设计且很多没有直观的物理含义)的问题,能够在大规模训练数据上取得更好的效果;主要用于完成语音识别、语音合成、自然语言理解、图像识别(如识别医学图像中的病变、识别卫星图像中的珍稀物种、照片、动物脸部等),大规模图像识别、OCR(光学字符识别)、复杂信息检索、手写字识别、金融应用、服务器系统的功耗智能管理、计算机体系结构的设计空间探索、商品和文艺品推荐等功能;达到机器代替人进行学习、适应、工作的高级应用。
深度学习应用于语音识别的技术已经很成熟;视觉方面不仅仅是图像分类,在更广泛的视觉问题上,深度学习都产生了重大影响,如人脸识别,通用物体检测,图像分割,光学字符识别,玩游戏等;文本理解也已经取得很好的结果,其中用到递归神经网络(RNN)。
建模过程具体是在计算机上搭建一个很多层的神经网络,只需要制定多少层,并不需要给定具体的参数,计算机通过计算大数据来自动学习最终的网络参数,不一样的网络参数能够识别不同的物体,训练好的网络就可以自动识别物体了;基本本体模型建立之后,可以依靠机器学习扩展,包括本体概念的扩展及其之间的关系,是语义分析的基础,也是决策支持、规划分析、企业资源调度的基础之一,这对大数据的应用扩展非常具有现实意义;对一个问题的建模可以有不同的方式,需要考虑算法的学习方式;监督式学习算法采用有监督的训练,如数据加了标签,计算机知道正确答案;大多深度学习算法是半监督式学习算法,用来处理存在少量未标识数据的大数据集,图像识别等领域存在大量的非标识数据和少量的可标识数据,半监督式学习比较常用;非监督学习解决真实世界中超大规模物体的识别,通过使用不加标签的数据直接训练,在不需要人工模型干预的情况下学习大规模数据中的规律、模式和特征等,理解通常人类大脑不能直接提取和抽象出来的问题,无监督训练数据没有标签,不知道正确答案,对不可能加上精准标签的大数据、海量的实时数据非常实用,达到非监督的机器理解和认知,是最理想的情况。
深度学习模型提供的是一套框架(或者称为一套语言系统),使用中要有驾驭这个模型和计算的能力以及对问题要有足够的了解,如卷积神经网络和我们对视觉神经系统的了解尤其是早期的视觉皮层细胞关系非常大;深度学习网络非常复杂,需要大量的训练样本进行训练,很多网络进行一次训练,需要额外多次的训练来调参数,时间效率上远远无法满足实际需求,并行的深度学习系统能在很大程度上提高训练速度;为了提高算法的并行效率,深度学习系统大部分使用了多机多GPU(多机即大量的机器通过网络连接组成训练集群,多GPU即集群内部的每台机器上包含多个GPU)的方式,通过数据并行(每个GPU训练部分数据)、模型并行(每个GPU训练部分网络)或者两者混合的方式加快训练速度;GPU浮点运行效率很高,使得并行系统的主要瓶颈在于I/O效率,因此这些系统使用了诸如InfiniBand和RDMA(Remote Direct Memory Access,全称远程直接数据存取,专用于解决网络传输中服务器端数据处理的延迟)等高性能技术,而这些技术需要昂贵的硬件支持,大大增加了系统构建和维护的成本和难度,导致这些系统很难复制和普及到通用场景。
SpeeDO(Open DEEP learning System的逆序)是一个为通用硬件设计的并行深度学习系统,不需要特殊的I/O硬件,支持CPU/GPU集群,可以很方便地在各种云端环境上部署,如AWS、Google GCE、Microsoft Azure等等,可以用于实现深层次应用的高级服务,提供深层次应用的高级服务API以及为更高级的AI服务做储备;SpeeDO采用了目前通用的参数服务器(parameter server)架构,依赖一系列基于JVM的开源库,使用Scala语言开发,主要组件及其功能有:Caffe,开源深度学习库,基于C++,支持CPU/GPU,原版不支持多GPU/多机并行;Akka,JVM上的消息队列库,负责参数服务器和工作节点之间的并发消息处理;Redis,基于内存的高效并行Key-Value数据库,主要用于在参数服务器和工作节点之间传递训练的模型,这些模型一般比较大(几十至上千MB不等),不适合直接通过Akka进行传输;Yarn,Hadoop2的资源管理组件,实现在多台机器上一键部署参数服务器和工作节点,实时监控各节点的运行状态,处理异常。
当物联网发展到达一定规模时,借助条形码、二维码、RFID等能够唯一标识产品,传感器、可穿戴设备、智能感知、视频采集、增强现实等技术可实现实时的信息采集和分析,这些数据能够支撑智慧城市、智慧交通、智慧能源、智慧医疗、智慧环保、智能制造、机器人、智慧商业、智能家居等的理念需要,这些“智慧”应用将成为大数据及人工智能(AI)的主要来源和服务范围;在理解语音指令、分辨图像、驾驶汽车、商业营销以及打游戏方面,机器已经比人类做得更好,也能够处理海量数据,并迅速做出复杂的运算;要使机器能自然行走在人类中间、融入社会,需要克服多类不同AI(如响应式机器、有限记忆机器、心智理论机器、自我意识机器)之间的界限。
绝大多数基本型的AI系统都属于纯粹的响应式机器,既不具备形成记忆的能力,也不具备借鉴过去经验的能力,只是帮助做出当前决策。IBM的超级电脑“深蓝”曾经于20世纪90年代末期击败人类国际象棋大师加里·卡斯帕罗夫(Garry Kasparov),谷歌的AlphaGo曾击败人类围棋大师,其分析方式比“深蓝”更复杂,利用神经网络评估游戏进展,但它也不能评估未来所有的潜在步骤;它们都是响应式机器的完美代表,但无法被轻易改变或应用到其他情况,这些计算机化的想象没有广泛世界的概念,使得它们无法超越特定任务的功能限制;此外,它们不能以交互的方式参与到世界中。有限记忆机器可以短暂回顾过去的经验,如无人驾驶汽车会观察其他汽车的速度和行进方向,需要识别特定目标后监督它们一段时间;这些观察会被添加到无人驾驶汽车预先编程的模拟世界中,包括车道标记、交通灯以及其他重要元素,如公路曲线等;此外还包括汽车决定何时变道,以避免被附近的汽车撞到;所涉及的有关过去的简单信息只是短暂的,不会被储存在汽车已经了解到的经验库中。要建立能够充分模拟世界、记住经验以及学习如何处理新情况的AI系统,可以从达尔文进化论中吸取灵感,通过机器自己建立模拟世界以弥补。心智理论机器更加先进,它们不仅会自己建立模拟世界,还会模拟世界上其他对象和实体;能理解世界上的人类、生物都有思想和情绪,这些思想和情绪可以影响他们的行为;允许与人类环境进行社会交流,如果不相互了解动机和意图,不考虑其他人对自己或环境的了解,要么是协作非常困难或者根本不可能有协作。AI系统要想走在人类中间,必须能够理解我们每个人都有不同的想法和感受,并期望自己被如何对待,为此对自己的行为进行相应调整;这个阶段逐渐被重视。AI发展的最后阶段是建立能够形成代表它们自己的模拟世界的系统,即拥有自我意识的机器;有意识的存在可以意识到他们自己,了解它们的内部状态,能够预测其他人的感受;当下距离创造具有自我意识的机器还有很长的路要走。
面对这些需求,可以集中精力打造理解记忆、学习以及基于过去经验作出决定的AI能力,并逐步设计或开发超越这些分类的机器或应用,使得计算机程序或机器逐步展示出自我管理、表达情绪、适应社会(环境)和创新性等能力,并以更高级的服务形式提供。这也是机器理解人类智慧、AI发展成熟、真正达到人工智能(AI)要求的重要步骤。
CUDA是我们众所周知的GPU加速套件,而CUDA-Convnet是一个基于GPU加速的神经网络应用程序机器学习库,它使用C++编写,并且使用了NVIDIA的CUDA GPU处理技术,目前这个项目已经被重组成为CUDA-Convnet2,支持多个GPU和Kepler-generation GPUs,GPU加速其实一直是机器学习的得力辅助,CUDA就是我们众所周知的GPU加速套件。
商业性服务方面,Databricks是一个基于Apache Spark的商业性云服务平台,通过简化对GPU加速型机器学习库的访问,促进了Spark发展,使Spark集群不断向外扩展;GPU加速器和多个深度机器学习库集成,理论上可以在本地任何位置实现Apache Spark安装;Databricks版本逐步调整以避免资源争用情况给功能的实际使用带来复杂性影响,主动承担提供并配置GPU加速器等复杂的前期工作。
Databricks通过减少节点之间的资源争用数量,最大化Spark上GPU集群的性能优势,试图保证GPU的各项操作不会因为彼此的资源争用而中断;这一策略与麻省理工学院的Milk类似,Milk是通过加速并行处理应用程序,与内存相关的操作一律使用批处理,以保证充分利用系统的缓存资源;另一个比较节省时间的方法是添加直接访问机器学习库,这样就可以把Spark作为数据源,这其中就包括Databrick的TensorFrames,目前Spark已经与TensorFrames打通,实现了对GPU的加速;出于对Spark的考虑,Databricks调整了众多基础设施,创造了部分免费的服务吸引用户,包括提供成熟产品中的部分功能;不仅增加机器学习库,而且在此基础上确保使用的便利性,降低使用复杂度。
机器学习关心的是如何构建计算机程序使用经验自动改进的算法,硬件平台需要与算法共进步以解决最终问题,并行训练可以提高机器学习算法的训练速度,但多个节点间训练不同数据时如何协调和同步,可能需要从算法角度重新设计;分布式系统设计时,DNN算法专家和系统专家可以协同,可能既要修改算法使之跟底层硬件架构匹配,又要求系统专家设计计算能力强大的单机器,又要设计高密度整合、高效通信的服务器。
搭建人工智能依赖的硬件系统、高层次系统也非常关键,系统设计涵盖多个方向,可以基于CPU服务器的实现,基于CPU+GPU的系统实现或硬件解决方案和基于APU的高密度系统的实现;还可以从更底层硬件进行的探索和研究,比如在FPGA上实现或设计专门的集成电路。
大规模的CPU集群直接实现,先从已有集群开始,缺点是需要大量的CPU资源,非常昂贵,不适合小规模公司,学术界的研究;基于CPU集群的实现,如Google的Jeff Dean带领人马用16000个CPU,组成1000个计算节点搭建了一个大集群,做了著名的Google猫脸实验。
DNN的算法非常适合通过GPU加速,而基于CPU+GPU的方式搭建的集群存在GPU存储空间受限和CPU与GPU之间通信代价太大;从硬件的角度来讲,这个是CPU和GPU的耦合程度太松的问题;APU是AMD将CPU和GPU整合到同一个芯片上的异构多核处理器,能够实现CPU和GPU的紧耦合和逻辑上的紧密协同合作。基于APU可以实现高密度的集群,在同样的空间内集成更多的CPU和GPU的计算能力,提高系统吞吐率,同时降低系统能耗;现在的APU的物理尺寸跟传统的CPU大小一样,看不出来区别,以后就不一定了。AMD DNN研究小组的初步研究结果显示APU集群系统相比于CPU+GPU集群优势明显:APU系统在同等功耗条件下可以取得2.5倍加速比;在同等性能下可以节省2.5倍系统功耗;在同等性能条件下可以节省1.8倍的造价;APU可以提供一个高密度低功耗的人工智能系统。
在解决商业数据(大数据)问题时,APU解决了CPU+GPU集群在的存储空间不够用和节点通信代价太高的两大瓶颈问题;搭建基于AMD产品的CPU+GPU的分布式平台,已有成熟的硬件解决方案;集群上的并行计算编程环境用的是OpenCL,OpenCL可以运行在多种异构平台上,AMD的GPU和APU都用OpenCL,其DNN软件解决方案由OpenCL编写而成,多家公司都在支持OpenCL,NVidia平台上也可以运行,OpenCL可以混合C、C++。
用CPU、GPU混合架构上来进行深度学习的训练,也可以转向定制ASIC或者用FPGA来解决廉价、高效和高性能推理的问题,但是FPGA的性能和每瓦性能相比ASIC都有很大的差距。谷歌的TPU可以像CPU或GPU一样可编程,它可以在不同的网络(卷积神经网络,LSTM模型和大规模完全连接的模型)上执行CISC指令,而不是为某个专用的神经网络模型设计的,兼具了CPU和ASIC的优点,它不仅是可编程的,而且比CPU、GPU和FPGA拥有更高的效率和更低的能耗,TPU与CPU一起使用对训练分析更加有益。
机器思维的方法,需要机器硬件的进化的支撑,基于深度神经网络学习这一机器图像识别的思维方法,提出的是机器进化方法;硬件系统设计具有人工智能的本领也具有一定的现实意义,IBM的沃森处理器已经投入使用解决一些大数据的金融分析、实时语音翻译等应用,取得业界非常高的肯定和反响。ARM基于ARM DynamIQ技术的全新移动处理器——Cortex-A75、ARM Cortex-A55CPU和ARM Mali-G72 GPU,三款新品旨在进一步加速提升人工智能体验,支持设备更加广泛,增强了机器学习,同时核心组合也更加灵活,实现不同的SoC配置,而搭载这三款新品的手机很快也会上市。
硬件或者其搭配、系统、框架、工具包、库或者说平台都是工具,只是具体的技术实现方式,而关键点在于采用SOA方法或者模型将不同层次的AI技术通过定义良好的API或其他联系起来形成系统,也可以理解为将每个功能模块服务化,确保与其他模块、应用或者模块、应用之间进行调用,使更多的机器具备AI能力而被有效使用。具体有几个关键点:从服务集成的角度来设计应用软件,并考虑复用现有的服务,优先使用开源的、可替代的技术和方法(例如消息机制);描述一套完善的开发模式来帮助应用连接到服务上,这些模式制定用于描述服务、通知及发现服务、与服务进行通信的一系列机制,如接口(服务API);服务既可以定义为功能又可同时对外定义为对象、应用等,适应于任何现有系统,使得系统在集成时不必刻意遵循任何特殊定制;服务作为核心,使应用程序能够集中起来提供更加丰富、目的性更强的商业流程,更加真实地反映与业务模型的结合;服务同业务、流程结合在一起,更加精确地表示业务模型、更好地支持业务流程(从业务流程的角度来看待技术),流程赋予业务模型里的组件以生命,更加清晰地定义它们之间的关系,定义同业务模型进行交互操作的专门方法。
不同层次的功能模块服务化以后,如将服务封装成一系列API,也可以开放出去供第三方使用,提供开放API;其他模块或应用即可通过API接口进行调用,使得同业务、流程结合在一起的服务,更加精确地表示业务模型、更好地支持业务流程,从而使更多承载模块或者应用的机器具备AI能力,达到胜任更多复杂工作的目标;当然,本方案中所述机器(系统)是一个广义上的称呼,不仅包括提供服务的服务器或服务端机器,也包括可连接网络服务的分散设备或终端机器;而终端机器可以是单个设备、传感器、物联网终端、移动设备、嵌入式系统或单台计算机等,服务端机器也可以是单个服务器、分布式系统、云计算系统、大数据系统或其他集群;这样,人工智能的服务化将使得服务端机器不仅具有一定的智能水平、输出人工智能服务的能力或智慧,而且更多的终端机器可以通过API访问不同层次的人工智能服务、享受服务端的智慧而更加智能;进而使得如移动应用、物联网应用、网络服务、商业系统、云技术、大数据技术及其他网络系统等应用系统具备“云端大脑”的可能,也就是说服务端机器可以以接口形式提供中枢决策、资源统筹协调等模拟人脑各项能力的服务,并应用于电子系统、自动控制系统、智能硬件、物联网、网络服务、商业应用、资源配置、web、APP、小程序、数据处理(大数据分析、数据挖掘)、从数据学习改善机器性能、工业设计开发过程、对环境(人、自然、社会、环境、地理等)的认知与学习等等场景下,使机器胜任更多复杂工作,推动科技进步和社会发展。

Claims (10)

1.一种使机器胜任更多复杂工作的方法,具体采用一种规范的方法或者模型,将不同功能单元(或称为服务)通过定义良好的接口或契约联系起来形成系统,其特征在于所述不同功能单元(或称为服务)是多层次人工智能(AI)服务。
2.如权利要求1所述的一种使机器胜任更多复杂工作的方法,其特征在于所述规范的方法或者模型有几个关键点:从服务集成的角度设计应用软件,并考虑复用现有的服务,优先使用开源的、可替代的技术和方法(例如消息机制);描述一套完善的开发模式来帮助应用连接到服务上,这些模式制定用于描述服务、通知及发现服务、与服务进行通信的一系列机制,如接口(服务API);服务既可以定义为功能又可同时对外定义为对象、应用等,适应于任何现有系统,使得系统在集成时不必刻意遵循任何特殊定制;服务作为核心,使应用程序集中起来提供更加丰富、目的性更强的商业流程,更加真实地反映与业务模型的结合;服务同业务、流程结合起来,更加精确地表示业务模型、更好地支持业务流程(从业务流程的角度来看待技术),流程赋予业务模型里的组件以生命,更加清晰地定义它们之间的关系,定义同业务模型进行交互操作的专门方法;确保与其他模块、应用或者模块、应用之间进行方便的调用;构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互;可以是SOA,也可以综合SOA和其他系统架构以更好的融合与互促。
3.如权利要求1所述的一种使机器胜任更多复杂工作的方法,其特征在于所述接口或契约可以采用中立的方式进行定义,独立于实现服务的硬件平台、操作系统和编程语言的方法或者机制,如将服务封装成一系列API,也可以开放出去供第三方使用,提供开放API。
4.如权利要求1所述的一种使机器胜任更多复杂工作的方法,其特征在于所述机器是一种广义上的称呼,包括可连接服务的分散设备或终端机器和提供服务的服务器或服务端机器;服务端机器可以是单个服务器、分布式系统、云计算系统、大数据系统或其他集群;终端机器可以是单个设备、传感器、物联网终端、移动设备、嵌入式系统或单台计算机等;服务端机器硬件系统可以基于CPU服务器(CPU集群)、基于CPU+GPU的系统基于APU的高密度系统或其他基于其他分布式系统的实现,还可以从更底层硬件进行的探索和研究;分布式系统设计方面,算法专家和系统专家可以协同,协同方式可能既要修改算法使之跟底层硬件架构匹配,又要求系统专家设计计算能力强大的单机器,又要设计高密度整合、高效通信的服务器。
5.如权利要求1所述的一种使机器胜任更多复杂工作的方法,其特征在于所述多层次人工智能服务可以使不同机器具有不同的智能水平或智慧:服务端机器具有一定的智能水平、智慧和输出人工智能服务的能力,终端机器可以访问不同层次的人工智能服务、享受服务端的智慧而更加智能,更多应用系统具备“云端大脑”的可能。
6.如权利要求1所述的一种使机器胜任更多复杂工作的方法,其特征在于所述多层次人工智能服务的实现,需要先利用适于机器系统的开发、运行工具组建计算平台(环境或系统架构),再分析应用场景需求(问题),然后开发或选择合适的算法或者算法组合,形成一个能辅助或替代人类完成一定工作,能模拟人的某些思维过程、智能行为和智慧服务的机器大脑,使人类的智能得以物化与延伸;开发、运行工具可以是开源的或商业的系统、框架、库或者工具包等;计算平台可以通过不同的组件来支撑批、流和交互式应用:可用于在数据流传入时构建实时分析,也可以有效处理各种来源的大量数据,还可以处理自定义数据源;可用于从传入事件流计算趋势数据;可以将物联网系统生成的大量数据推送到后端进行处理,以固定的间隔构建数据管道,还可以基于一组可配置的事件触发操作;可以批量处理离线数据并提供机器学习库,可以在用户的数据集上轻松应用机器学习算法;还可以通过一个大型数据集来实验不同的算法,将工具或组件组合轻松拥有一个实时机器学习系统;也可应用于电子系统、自动控制系统、智能硬件、物联网、网络服务,资源配置、商业应用、web、APP、小程序、数据处理(含大数据分析、数据挖掘)、从数据学习改善机器性能、工业设计开发过程、对环境(人、自然、社会、环境、地理等)的认知与学习等等具体场景需求;智慧服务包括为移动应用、物联网应用、网络服务、商业系统、云技术、大数据技术及其他网络系统提供中枢决策、资源配置等提供模拟人脑各项能力,以接口形式提供的服务。
7.如权利要求5所述的一种使机器胜任更多复杂工作的方法,其特征在于所述多层次的人工智能服务有:技术人员定义算法,机器辅助,针对浅层次应用的初级服务;应用或开发机器学习算法,针对中层次应用的中级服务;应用神经网络尤其是深度学习模型的完成,针对深层次应用的高级服务以及其他更高级的服务等;初级服务一般由技术人员定义简单算法,机器辅助,研究人员通过模仿人类来制定特定的认知和推理过程,形成算法在计算机上运行以实现让机器处理问题;中级服务主要针对具体应用需要,通过应用或开发机器学习算法,由机器自动完成一定的应用;高级服务主要使用神经网络算法尤其是深度学习算法的应用以及细化;其他更高级的服务是在前述各层次AI服务的基础上,集中精力打造理解、记忆、学习以及基于过去经验作出决定的AI能力,并逐步设计或开发超越传统分类不同AI的机器或应用,使得计算机程序或机器逐步展示出自我管理、表达情绪、适应社会(环境)和创新性等更接近人类的能力,提供更高级的服务形式。
8.如权利要求7所述的一种使机器胜任更多复杂工作的方法,其特征在于所述机器学习算法往往不会有一个固定的算法流程,而是把问题转化为最优化的问题,然后用不同的方法来优化这个问题,得到尽可能好的结果;实际使用中需要不断地调参实验,而能理解算法犹如让一个黑盒变的透明;对一个问题的建模可以有不同的方式,先要考虑算法的学习方式:监督式学习的常见应用场景包括分类问题和回归问题,常见算法有逻辑回归和反向传递神经网络;非监督式学习常见的应用场景包括关联规则的学习及聚类等,常见算法包括Apriori算法和K-Means算法;半监督式学习应用的场景包括分类和回归,常见算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识的数据进行建模,然后在此基础上对标识的数据进行预测,如图论推理算法或拉普拉斯支持向量机等;强化学习常见的应用场景包括动态系统及机器人控制等,常见算法包括Q-Learning及时间差学习(Temporal Difference Learning)等;所述算法有些很难明确归到某一类,而对于有些分类来说同一分类的算法可以针对不同类型的问题,根据算法的功能和形式的类似性,不同算法可以用来解决不同问题或者相同问题;在企业数据应用的场景下,最常用的可能就是监督式学习和非监督式学习;强化学习则更多地应用在机器人控制及其他需要进行系统控制的领域;非监督学习解决真实世界中超大规模物体的识别;传统人工智能模型可能很好但计算的问题无法解决或者模型不够复杂,从统计和计算的角度讲机器学习是系统对它可能的误差的每个来源去做分解、了解和控制,从而控制整体的预测误差;一般需要做一些假设,但所有假设并不完美,可以用无偏的大数据这种非常复杂的模型去减少偏差。
9.如权利要求7所述的一种使机器胜任更多复杂工作的方法,其特征在于所述深度学习对于图像、语音这种特征不明显的问题,能够在大规模训练数据上取得更好的效果;可以完成语音识别、语音合成、自然语言理解、图像识别,大规模图像识别、OCR(光学字符识别)、复杂信息检索、手写字识别、金融应用、服务器系统的功耗智能管理、计算机体系结构的设计空间探索、商品和文艺品推荐等应用;达到机器代替人进行学习、适应、工作的高级应用;所述深度学习应用于语音识别的技术已经很成熟,视觉方面不仅仅是图像分类,在人脸识别、通用物体检测、图像分割、光学字符识别、玩游戏等更广泛的视觉问题上都产生了重大影响,文本理解也已经取得很好的结果;所述神经网络最初包括输入层,隐含层和输出层共三层,输入和输出层通常由应用决定,隐含层包含神经元,隐含层跟输入和输出层之间的链接可供训练,通过训练神经网络实现从输入到输出的一个非线性映射过程;训练过程具体是在计算机上搭建一个很多层的神经网络,只需要制定多少层,并不需要给定具体的参数,计算机通过计算数据(大数据)来自动学习最终的网络参数,不一样的网络参数能够识别不同的物体,然后这个训练好的网络就可以自动识别物体了;数据是训练的关键,训练开始时那些万亿级的参数都是随机初始化的,不能完成识别任务;数据量大模型才能好,数据量太大需要训练的时间会比较长,和系统硬件有关;通过不停的给予数据,一遍一遍来训练,才能达到最终的识别模型,能够识别语音或者图像中的物体;神经网络学习到的是一堆各种各样的特征,有的物体可能一个特征能够描述,有的需要不同特征组合起来能够描述;输入的图像总类越多,网络越能知道什么物体需要什么特征组合来描述;一个好的神经网络训练完之后,不同的神经元代表不一样的特征;主流的深度神经网络模型包含九个隐含层,通常每层都有上千上万级的神经元,整个网络有百万级至百亿级的参数空间,具有非常强大的学习能力和特征提取能力,由计算机从数据中自动逐层提取特征的过程,不需要人类干预;一个深度神经网络模型表达很多物体,可能有十亿个参数、亿亿个神经元(数目不一定准确,但是一定远比人类大脑神经元数目少的多),所以只有经过复杂的训练才有可能拥有强大的学习能力,推理\归纳能力;深度神经网络的本质思想就是堆叠多个神经元层,每个层都提取一定的特征和信息,这一层的输出作为下一层的输入,实现对输入信息进行分级表达,以发现数据的分布式特征表示;深度神经网络模型的层次取决于问题本身的层次和复杂度,有些问题本身的表达能力要求多层次;多层神经网络根据应用不同,网络结构也会不一样;模拟生物神经网络作为一类模式匹配算法,通常用于解决分类和回归问题,人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法;深度学习算法是对人工神经网络的发展,试图建立大得多也复杂得多的神经网络,很多是半监督式学习算法,用来处理存在少量未标识数据的大数据集;一般特指学习高层数的网络结构,这个结构中通常会结合线性和非线性的关系;深度学习算法自动提取分类所需的低层次或者高层次特征(该特征可以分级(层次)地依赖其他特征);其机制、行为等方面和大脑有一些关联性,能够吸收数据增长带来的红利特别适合大数据,也带来思维观念或解决问题方式的改变(端到端的学习),把原始数据放到系统里,中间的步骤通过学习的方法去完成;建模过程具体是在计算机上搭建一个很多层的神经网络,只需要制定多少层,并不需要给定具体的参数,计算机通过计算大数据来自动学习最终的网络参数,不一样的网络参数能够识别不同的物体,训练好的网络就可以自动识别物体了;基本本体模型建立之后,可以依靠机器学习扩展,包括本体概念的扩展及其之间的关系,是语义分析的基础,也是决策支持、规划分析、企业资源调度的基础之一,这对大数据的应用扩展非常具有现实意义;对一个问题的建模可以有不同的方式,也需要考虑算法的学习方式;使用深度学习模型时,要有驾驭这个模型和计算的能力以及对问题要有足够的了解。
10.如权利要求7-9所述的一种使机器胜任更多复杂工作的方法,其特征在于所述机器在理解语音指令、分辨图像、驾驶汽车、商业营销以及打游戏方面,已经比人类做得更好,也能够处理海量数据,并迅速做出复杂的运算;要使机器能自然行走在人类中间、融入社会,需要克服响应式机器、有限记忆机器、心智理论机器、自我意识机器等传统分类不同AI之间的界限,可以在各层次AI服务的基础上,集中精力打造理解、记忆、学习以及基于过去经验作出决定的AI能力,并逐步设计或开发超越传统分类不同AI的机器或应用,使得计算机程序或机器逐步展示出自我管理、表达情绪、适应社会(环境)和创新性等更接近人类的能力,并提供更高级的服务;这是机器理解人类智慧、AI发展成熟、真正达到人工智能(AI)要求的重要步骤。
CN201811116592.8A 2018-02-11 2018-09-25 一种使机器胜任更多复杂工作的方法 Pending CN110163233A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2018101430984 2018-02-11
CN201810143098 2018-02-11

Publications (1)

Publication Number Publication Date
CN110163233A true CN110163233A (zh) 2019-08-23

Family

ID=67645027

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811116592.8A Pending CN110163233A (zh) 2018-02-11 2018-09-25 一种使机器胜任更多复杂工作的方法

Country Status (1)

Country Link
CN (1) CN110163233A (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110909039A (zh) * 2019-10-25 2020-03-24 北京华如科技股份有限公司 一种基于拖拽式流程的大数据挖掘工具及方法
CN111160569A (zh) * 2019-12-30 2020-05-15 第四范式(北京)技术有限公司 基于机器学习模型的应用开发方法、装置及电子设备
CN111399958A (zh) * 2020-03-17 2020-07-10 深圳创新奇智科技有限公司 具有用户交互界面的模型训练系统、方法
CN111553467A (zh) * 2020-04-30 2020-08-18 陈永聪 一种实现通用人工智能的方法
CN111931648A (zh) * 2020-08-10 2020-11-13 成都思晗科技股份有限公司 一种基于Himawari8波段数据的山火实时监测方法
CN111984744A (zh) * 2020-08-13 2020-11-24 孙小丽 基于远程通信和人工智能的信息处理方法及云端服务平台
CN112257249A (zh) * 2020-10-19 2021-01-22 上海现代建筑设计集团工程建设咨询有限公司 基坑工程中基于归并的布置路径方法、装置和电子设备
CN112508769A (zh) * 2020-12-28 2021-03-16 浪潮云信息技术股份公司 一种基于深度学习构建多任务计算机视觉应用服务的方法
CN112529023A (zh) * 2019-09-18 2021-03-19 上海钛空猫智能科技有限公司 一种配置化的人工智能场景应用研发方法和系统
CN112732962A (zh) * 2021-01-12 2021-04-30 南京大学 基于深度学习与Flink的线上实时预测垃圾图片类别方法
CN112783628A (zh) * 2021-01-27 2021-05-11 联想(北京)有限公司 一种数据运算优化方法、装置以及可读存储介质
CN112966096A (zh) * 2021-04-07 2021-06-15 重庆大学 一种基于多任务学习的云服务发现方法
CN113487286A (zh) * 2021-07-14 2021-10-08 重庆大宽科技发展有限公司 一种安全质量巡检系统、方法、计算机设备及存储介质
CN113705026A (zh) * 2021-11-01 2021-11-26 南京亚尔软件测试有限公司 一种电力二次设备数字建模与智能检测系统
CN114675977A (zh) * 2022-05-30 2022-06-28 山东科华电力技术有限公司 基于电力物联网的分布式监控运管系统
CN115834250A (zh) * 2023-02-14 2023-03-21 湖南半岛医疗科技有限公司 一种用于医疗设备内部的加密通讯方法
CN116523045A (zh) * 2023-03-13 2023-08-01 之江实验室 一种面向多芯粒芯片的深度学习推理模拟器
CN117506926A (zh) * 2023-12-19 2024-02-06 广州富唯智能科技有限公司 一种基于大工艺模型的机器人设备自动控制方法
CN117633722A (zh) * 2024-01-25 2024-03-01 江西省交通工程集团有限公司 基于智能检测机器人的检测控制方法及系统
CN117633722B (zh) * 2024-01-25 2024-04-23 江西省交通工程集团有限公司 基于智能检测机器人的检测控制方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060165040A1 (en) * 2004-11-30 2006-07-27 Rathod Yogesh C System, method, computer program products, standards, SOA infrastructure, search algorithm and a business method thereof for AI enabled information communication and computation (ICC) framework (NetAlter) operated by NetAlter Operating System (NOS) in terms of NetAlter Service Browser (NSB) to device alternative to internet and enterprise & social communication framework engrossing universally distributed grid supercomputing and peer to peer framework
CN1972296A (zh) * 2006-12-05 2007-05-30 北京邮电大学 基于xpl的综合多种通信手段的业务生成方法及其系统
CN101621534A (zh) * 2009-08-11 2010-01-06 周相兵 一种面向服务体系结构的语义服务自动组合方法
CN102034151A (zh) * 2010-12-13 2011-04-27 东莞市高鑫机电科技服务有限公司 基于soa的企业协同管理系统业务流程设计方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060165040A1 (en) * 2004-11-30 2006-07-27 Rathod Yogesh C System, method, computer program products, standards, SOA infrastructure, search algorithm and a business method thereof for AI enabled information communication and computation (ICC) framework (NetAlter) operated by NetAlter Operating System (NOS) in terms of NetAlter Service Browser (NSB) to device alternative to internet and enterprise & social communication framework engrossing universally distributed grid supercomputing and peer to peer framework
CN1972296A (zh) * 2006-12-05 2007-05-30 北京邮电大学 基于xpl的综合多种通信手段的业务生成方法及其系统
CN101621534A (zh) * 2009-08-11 2010-01-06 周相兵 一种面向服务体系结构的语义服务自动组合方法
CN102034151A (zh) * 2010-12-13 2011-04-27 东莞市高鑫机电科技服务有限公司 基于soa的企业协同管理系统业务流程设计方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张继鑫等: "基于ROS的服务机器人云端协同计算框架", 《计算机系统应用》 *

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112529023A (zh) * 2019-09-18 2021-03-19 上海钛空猫智能科技有限公司 一种配置化的人工智能场景应用研发方法和系统
CN110909039A (zh) * 2019-10-25 2020-03-24 北京华如科技股份有限公司 一种基于拖拽式流程的大数据挖掘工具及方法
CN111160569A (zh) * 2019-12-30 2020-05-15 第四范式(北京)技术有限公司 基于机器学习模型的应用开发方法、装置及电子设备
CN111399958A (zh) * 2020-03-17 2020-07-10 深圳创新奇智科技有限公司 具有用户交互界面的模型训练系统、方法
CN111399958B (zh) * 2020-03-17 2023-04-28 青岛创新奇智科技集团股份有限公司 具有用户交互界面的模型训练系统、方法
CN111553467A (zh) * 2020-04-30 2020-08-18 陈永聪 一种实现通用人工智能的方法
WO2021217282A1 (zh) * 2020-04-30 2021-11-04 Chen Yongcong 一种实现通用人工智能的方法
CN111931648A (zh) * 2020-08-10 2020-11-13 成都思晗科技股份有限公司 一种基于Himawari8波段数据的山火实时监测方法
CN111931648B (zh) * 2020-08-10 2023-08-01 成都思晗科技股份有限公司 一种基于Himawari8波段数据的山火实时监测方法
CN111984744A (zh) * 2020-08-13 2020-11-24 孙小丽 基于远程通信和人工智能的信息处理方法及云端服务平台
CN112257249A (zh) * 2020-10-19 2021-01-22 上海现代建筑设计集团工程建设咨询有限公司 基坑工程中基于归并的布置路径方法、装置和电子设备
CN112508769A (zh) * 2020-12-28 2021-03-16 浪潮云信息技术股份公司 一种基于深度学习构建多任务计算机视觉应用服务的方法
CN112732962A (zh) * 2021-01-12 2021-04-30 南京大学 基于深度学习与Flink的线上实时预测垃圾图片类别方法
CN112732962B (zh) * 2021-01-12 2023-10-13 南京大学 基于深度学习与Flink的线上实时预测垃圾图片类别方法
CN112783628A (zh) * 2021-01-27 2021-05-11 联想(北京)有限公司 一种数据运算优化方法、装置以及可读存储介质
CN112966096A (zh) * 2021-04-07 2021-06-15 重庆大学 一种基于多任务学习的云服务发现方法
CN112966096B (zh) * 2021-04-07 2022-05-24 重庆大学 一种基于多任务学习的云服务发现方法
CN113487286A (zh) * 2021-07-14 2021-10-08 重庆大宽科技发展有限公司 一种安全质量巡检系统、方法、计算机设备及存储介质
CN113487286B (zh) * 2021-07-14 2023-04-07 重庆大宽科技发展有限公司 一种安全质量巡检系统、方法、计算机设备及存储介质
CN113705026A (zh) * 2021-11-01 2021-11-26 南京亚尔软件测试有限公司 一种电力二次设备数字建模与智能检测系统
CN113705026B (zh) * 2021-11-01 2022-03-08 南京亚尔软件测试有限公司 一种电力二次设备数字建模与智能检测系统
CN114675977A (zh) * 2022-05-30 2022-06-28 山东科华电力技术有限公司 基于电力物联网的分布式监控运管系统
CN115834250A (zh) * 2023-02-14 2023-03-21 湖南半岛医疗科技有限公司 一种用于医疗设备内部的加密通讯方法
CN115834250B (zh) * 2023-02-14 2023-05-09 湖南半岛医疗科技有限公司 一种用于医疗设备内部的加密通讯方法
CN116523045A (zh) * 2023-03-13 2023-08-01 之江实验室 一种面向多芯粒芯片的深度学习推理模拟器
CN116523045B (zh) * 2023-03-13 2023-11-07 之江实验室 一种面向多芯粒芯片的深度学习推理模拟器
CN117506926A (zh) * 2023-12-19 2024-02-06 广州富唯智能科技有限公司 一种基于大工艺模型的机器人设备自动控制方法
CN117633722A (zh) * 2024-01-25 2024-03-01 江西省交通工程集团有限公司 基于智能检测机器人的检测控制方法及系统
CN117633722B (zh) * 2024-01-25 2024-04-23 江西省交通工程集团有限公司 基于智能检测机器人的检测控制方法及系统

Similar Documents

Publication Publication Date Title
CN110163233A (zh) 一种使机器胜任更多复杂工作的方法
Ciaburro et al. Neural Networks with R: Smart models using CNN, RNN, deep learning, and artificial intelligence principles
CN110162556A (zh) 一种有效发挥数据价值的方法
Abd Elaziz et al. Advanced metaheuristic optimization techniques in applications of deep neural networks: a review
Deshpande et al. Artificial intelligence for big data: complete guide to automating big data solutions using artificial intelligence techniques
CN105843781B (zh) 用于提高缓存效率的矩阵排序的方法和系统
Gudivada et al. Cognitive analytics: Going beyond big data analytics and machine learning
Cao Data science: nature and pitfalls
Sajja et al. Intelligent technologies for Web applications
Taranto-Vera et al. Algorithms and software for data mining and machine learning: a critical comparative view from a systematic review of the literature
Sosnovshchenko et al. Machine Learning with Swift: Artificial Intelligence for IOS
Prabowo et al. Utilizing mobile-based deep learning model for managing video in knowledge management system
Kang et al. Algorithm design to judge fake news based on Bigdata and artificial intelligence
Yu et al. A big data analysis method for online education
Xiao Artificial intelligence programming with Python: from zero to hero
Zhang et al. Internet of brain, thought, thinking, and creation
Coakley et al. From molecules to insect communities-How formal agent based computational modelling is uncovering new biological facts
Goertzel et al. The Novamente artificial intelligence engine
Uddin et al. Proposing logical table constructs for enhanced machine learning process
Gundakanal et al. Intelligent libraries: New horizons with artificial intelligence
Sun et al. Modularity in deep learning: A survey
Tirkeş et al. An undergraduate curriculum for deep learning
Yulong et al. A research on battlefield situation analysis and decision-making modeling based on a Hadoop framework
Tellez et al. Mastering Machine Learning with Spark 2. x
Wang Developments in Natural Intelligence Research and Knowledge Engineering: Advancing Applications: Advancing Applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20190823

WD01 Invention patent application deemed withdrawn after publication