中国移动研究院常耀斌:对主流人工智能技术栈和大数据的深入探讨和实践总结。人工智能就是让机器像人一样思考甚至超越人类,而机器学习就是实现人工智能的一种方式。它最基本的方法是使用算法来分析数据,从中学习,然后对现实世界中的事件做出决策。和预测。深度学习是机器学习的另一种实现方式。它模拟人类的神经网络,使用更多的层和神经元,向系统输入海量数据来训练网络。下面我将以人工智能在医疗领域的平台架构为例,讲解五层模型技术栈,分别是基础数据层、计算引擎层、分析引擎层、应用引擎层和典型应用层,专注于计算和分析。引擎。01首先讨论人工智能平台的计算引擎。目前最主流的五种大数据分布式计算框架包括Hadoop、Spark、Flink、Storm和Samaza。下面分别讨论其优点和应用场景。1、Hadoop是目前商用最多的框架,在业界和产品圈得到广泛认可。如果数据可以批量处理,可以分成小的处理任务,分布到计算集群,然后将计算结果整合起来,整个过程逻辑清晰,那么这个场景就非常适合Hadoop处理。2、Spark采用了更先进的架构,在灵活性、易用性、性能等方面都比Hadoop更具优势,有取代Hadoop的趋势,但稳定性有待大幅度提高。3、Flink既是批处理又是实时处理的框架,但是流处理还是走在了前列。Flink提供了一系列API,包括面向Java和Scala的流API,以及面向Java、Scala和Python的静态数据API,以及在Java和Scala中嵌入SQL查询的代码。它还带有机器学习和图像处理包。4、Storm是一个占有一定市场份额的分布式计算框架,其应用设计为有向无环图。它旨在轻松处理流,并且可以与任何编程语言一起使用。每个节点每秒处理数百万个元组,具有高度可扩展性,并提供任务处理保证。用Clojure编写。可用于实时分析、分布式机器学习等大量其他情况,尤其是在数据流量较大的情况下。Storm可以运行在YARN上并融入Hadoop生态系统。5、Samza是LinkedIn开源的分布式流处理框架。它基于Kafka消息队列实现实时流式数据处理,与Twitter的流处理系统Storm非常相似。不同的是,Samza基于Hadoop,并使用LinkedIn的Kafka分布式消息系统,并使用资源管理器ApacheHadoopYARN来实现容错处理、处理器隔离、安全和资源管理。02Spark是一款专为大规模数据处理而设计的快速通用计算引擎,目前已经发布2.4版本。Spark是由UCBerkeleyAMP实验室开源的一个类HadoopMapReduce的通用并行框架。它几乎具有HadoopMapReduce的优点。借助内存分布数据集,除了提供交互式查询外,还可以优化迭代工作负载。今年发布的Spark2.4,除了不断提升Spark的稳定性、易用性和性能外,还扩展了Spark的生态系统,引入了SparkonK8s,让用户多了一种部署Spark的方式,引入了PandasUDF允许用户直接在Spark上运行Pandas函数。我们分析其内核运行架构如下:1.SparkContext引擎构建分析:一般来说,用户开发的Spark应用的提交和执行都离不开SparkContext的支持。在正式提交申请之前,需要先初始化SparkContext。SparkContext隐藏了网络通信、分布式部署、消息通信、存储系统、计算引擎、测量系统、文件服务、WebUI等,应用开发者只需使用SparkContext提供的API即可完成功能开发。2、SparkEnv环境搭建分析:Spark执行环境SparkEnv是Spark中任务运行的必要组件。SparkEnv内部封装了RPC环境(RpcEnv)、序列化管理器、广播管理器(BroadcastManager)、地图任务输出跟踪器(MapOutputTracker)、存储系统、测量系统(MetricsSystem)、输出提交协调器(OutputCommitCoordinator)等Task操作所需的各种组件。3、可交换存储系统分析:Spark优先使用各个节点的内存作为存储,只有在内存不足的时候才考虑使用磁盘,大大降低了磁盘I/O,提高了任务执行的效率,使得Spark适用用于实时计算、迭代计算、流式计算等场景。在实际场景中,有些任务是存储密集型的,有些是计算密集型的,所以有时存储空间是闲置的,而计算空间的资源却很紧张。Spark的内存存储空间和执行存储空间之间的边界可以是一个“软”边界,因此资源受限的一方可以借用另一方的空间,不仅可以有效利用资源,还可以提高Tasks的执行效率.另外,Spark的内存空间还提供了Tungsten的实现,直接操作操作系统的内存。因为Tungsten把Java对象的分配保存在堆中,所以可以更有效的使用系统的内存资源,而且因为直接操作系统内存,所以空间的分配和释放也更快。4.二级调度系统分析:调度系统主要由DAGScheduler和TaskScheduler组成,内置于SparkContext中。DAGScheduler负责创建作业,将DAG中的RDD划分为不同的stage,为stage创建对应的任务,并批量提交任务。TaskScheduler负责按照FIFO或FAIR等调度算法,对批量任务进行调度;为任务分配资源;向集群管理器当前应用的Executor发送任务,Executor负责执行等工作。尽管Spark新增了SparkSession、DataFrame等新API,但这些新API的底层仍然依赖于SparkContext。5、多维计算引擎分析:计算引擎由内存管理器(MemoryManager)、Tungsten、任务内存管理器(TaskMemory-Manager)、Task、外部排序器(ExternalSorter)、随机播放器(ShuffleManager)等组成。除了提供对存储系统中存储内存的支持和管理,MemoryManager也对计算引擎中的执行内存提供支持和管理。Tungsten除了用于存储,还可以用于计算或执行。TaskMemoryManager对分配给单个Task的内存资源进行更细粒度的管理和控制。ExternalSorter用于对ShuffleMapTask在map端或reduce端计算出的中间结果进行排序聚合。ShuffleManager用于将每个分区对应的ShuffleMapTask产生的中间结果持久化到磁盘,并在reduce端根据分区远程拉取ShuffleMapTask产生的中间结果。6、强大的SparkMLlib机器学习库:旨在简化机器学习的工程实践,便于向更大规模扩展。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,以及低级优化原语和高级管道API。然后,分析人工智能平台分析引擎的处理过程。分析引擎的主要技术是机器学习和深度学习。机器学习框架涵盖了用于分类、回归、聚类、异常检测和数据准备的各种学习方法,还可以包括神经网络方法。深度学习框架涵盖具有许多隐藏层的各种神经网络拓扑结构,包括模式识别的多步骤过程。网络中的层越多,可以提取的用于聚类和分类的特征就越复杂。常见的深度学习框架包括Caffe、CNTK、DeepLearning4j、Keras、MXNet和TensorFlow。其中,Deeplearning4j是Java、Scala和Clojure用户群使用最广泛的JVM开源深度学习工具。旨在将深度学习引入生产栈,与Hadoop、Spark等主流大数据框架紧密集成。DL4J可以处理所有主要数据类型,例如图像、文本、时间序列和声音。提供的算法包括卷积网络、循环网络(如LSTM)、NLP工具(如Word2Vec和Doc2Vec)以及各种自动编码器。Deeplearning4j带有内置的Spark集成来处理集群上的分布式神经网络训练,使用数据并行性将网络训练扩展到多台计算机,每个节点在一个(或四个)GPU上运行。03深度学习框架的计算需要大量的图像数据。数据从前端传输到后端进行预处理,然后进行标注,得到训练数据集。数据整理好之后,进行模型训练,这是一个非常密集的计算和通信过程;模型训练好后,我们进行推理预测,主要是前向计算过程。它需要对批量样本进行高通量高并发响应,对单个样本进行低延迟响应。下面以图像识别的过程为例进行说明:1.数据采集与采集:通过物联网传感器,将光或声音等信息转化为电信息。信息可以是文字、图像等二维图像,也可以是声波、心电图、脑电图等一维波形,也可以是物理量和逻辑值。2、数据预处理:包括A\D、二值化、图像平滑、变换、增强、复原、滤波等,主要指图像处理。3、特征提取和选择:在模式识别中,需要对特征进行提取和选择。比如一张64x64的图片可以得到4096个数据。测量空间中的原始数据是通过特征空间中的变换获得的。反映分类性质的特征。这就是特征提取和选择的过程。4、分类器设计:分类器设计的主要作用是通过训练确定判断规则,使得按照这样的判断规则分类时错误率最好。5.分类决策:在特征空间中对识别出的物体进行分类。***,探索人工智能平台分析引擎的深度学习,它是如何利用各种机器学习算法在多层神经网络上解决图像、文本等问题的?深度学习在大类上可以归为神经网络,但在具体实现上却有很多变体。深度学习的核心是特征学习,旨在通过层次化网络获取层次化的特征信息,从而解决以往需要人工设计特征的重要问题。深度学习是一个框架,包括几个重要的算法:CNN卷积神经网络、AutoEncoder自动编码器、SparseCoding稀疏编码、RBM受限玻尔兹曼机、DBN深度信念网络、RNN多层反馈环神经网络神经网络,针对不同的问题(image,voice,text),需要选择不同的网络模型才能达到更好的效果。04关注卷积神经网络,它是一种至少包含一层的神经网络。该层的功能是计算输入f和可配置卷积核g的卷积以生成输出。卷积的目的是将卷积核作用于某个张量的所有点,通过卷积核的滑动产生一个新的滤波后的张量。卷积的价值在于能够降低输入维度,这是通过降维改变卷积核的strides参数来实现的。设置步幅是一种调整输入张量维度的方法。strides参数的格式与输入向量的格式相同。有挑战:如果输入在边界处,可以使用填充图像边界的方法。数据格式NHWC(数字、高度、宽度、通道数)。卷积核的作用往往是增强卷积核中心像素点的灰度。卷积神经网络(CNN)主要用于识别具有位移、缩放等形式的畸变不变性的二维图形。由于CNN的特征检测层是通过训练数据来学习的,因此在使用CNN时,避免了显式的特征提取,而是隐式地从训练数据中学习;同样,所以网络可以并行学习,这也是卷积网络相对于神经元相互连接的网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面具有独特的优势。它的布局更接近实际的生物神经网络。权值共享降低了网络的复杂度,特别是多维特征,输入向量的图像可以直接输入网络,避免了特征提取和分类过程中数据重构的复杂性。激活函数:给神经网络的输入引入非线性,可以通过曲线描述输入更复杂的变化。设计模型经常推荐tf.nn.relu,tf.sigmoid,tf.tanh,tf.nn.dropout,性能比较突出,评价一个激活函数是否有用的因素如下:单调,使用梯度下降法寻找局部极值点;可微,保证可以导出任意点,在激活函数的输出上可以使用梯度下降法。模型的评价指标为灵敏度、特异度和精密度。灵敏度(灵敏度,召回率recall,召回率sensitive)=TP/P=TPR;特异性(specificity)=TN/N;precision(准确率,准确率precision)=TP/TP+FP。总之,人工智能的框架时代已经成熟。它不是我们科学家和技术专家的主战场。我们需要重新定义一些计算模型和算法实现来创新网络结构和训练方法。这样的深度学习算法会更有效。能够在普通移动设备上工作,即使没有冗余硬件支持或抑制内存开销,也将引发人工智能技术进入大规模商用阶段,人工智能产品全面进入消费市场.【本文为专栏作家《移动实验室》原创稿件,转载请联系原作者】点此阅读更多本作者好文
