新聞中心
導(dǎo)語:這幾年人工智能技術(shù)之所以能夠獲得快速發(fā)展,主要是有三個元素的融合:神經(jīng)元網(wǎng)絡(luò)、芯片以及大數(shù)據(jù)。人工智能是讓機器像人一樣思考甚至超越人類,而機器學(xué)習(xí)是實現(xiàn)人工智能的一種方法,它最基本的做法是使用算法來解析數(shù)據(jù)、從中學(xué)習(xí),然后對真實世界中的事件做出決策和預(yù)測。深度學(xué)習(xí)又是機器學(xué)習(xí)的一種實現(xiàn)方式,它是模擬人神經(jīng)網(wǎng)絡(luò)的方式,用更多的層數(shù)和神經(jīng)元,給系統(tǒng)輸入海量的數(shù)據(jù)來訓(xùn)練網(wǎng)絡(luò)。下面我以人工智能在醫(yī)療領(lǐng)域的平臺架構(gòu)為例,進行五層模型技術(shù)棧的講解,分別是基礎(chǔ)數(shù)據(jù)層,計算引擎層,分析引擎層,應(yīng)用引擎層和典型應(yīng)用層,重點講解計算和分析引擎。

01
首先,探討一下人工智能平臺的計算引擎,目前最主流的五個大數(shù)據(jù)分布式計算框架包括Hadoop,Spark,F(xiàn)link,Storm,Samaza。下面分別探討其優(yōu)勢和應(yīng)用場景。
1. Hadoop是***被商用的框架,在工業(yè)和產(chǎn)品界被廣泛認可。如果數(shù)據(jù)可以批量處理,可以被分割成小的處理任務(wù),分發(fā)到計算集群,然后綜合計算結(jié)果,并且整個過程都是邏輯清晰,那么這個場景下很適合用Hadoop處理。
2. Spark是采用更先進的架構(gòu),其靈活性、易用性、性能等方面都比Hadoop更有優(yōu)勢,有取代Hadoop的趨勢,但其穩(wěn)定性需要大幅提高。
3. Flink既是批處理又是實時處理框架,但流處理還是放在***位的,F(xiàn)link提供了一系列API,包括針對Java和Scala的流API,針對Java,Scala,Python的靜態(tài)數(shù)據(jù)API,以及在Java和Scala中嵌入SQL查詢的代碼。它也自帶機器學(xué)習(xí)和圖像處理包。
4. Storm是占領(lǐng)一定市場份額的分布式計算框架,其應(yīng)用被設(shè)計成有向無環(huán)圖。被設(shè)計成容易處理***流,并且可用于任何編程語言。每個節(jié)點每秒處理上百萬個元組,高度可伸縮,提供任務(wù)處理保證。用Clojure寫的。可用于實時分析,分布式機器學(xué)習(xí),以及大量別的情形,特別是數(shù)據(jù)流大的。Storm可以運行在YARN上,集成到Hadoop生態(tài)系統(tǒng)中。
5. Samza是由LinkedIn開源的一個分布式流處理框架,它是基于Kafka消息隊列來實現(xiàn)類實時的流式數(shù)據(jù)處理的,非常像Twitter的流處理系統(tǒng)Storm。不同的是Samza基于Hadoop,而且使用了LinkedIn的Kafka分布式消息系統(tǒng),并使用資源管理器Apache Hadoop YARN實現(xiàn)容錯處理、處理器隔離、安全性和資源管理。
02
Spark是專為大規(guī)模數(shù)據(jù)處理而設(shè)計的快速通用的計算引擎,目前已經(jīng)發(fā)行了2.4版本。Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用并行框架,幾乎擁有Hadoop MapReduce所具有的優(yōu)點,借助內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,還可以優(yōu)化迭代工作負載。Spark今年發(fā)布的2.4,除了持續(xù)提升Spark的穩(wěn)定性、易用性和性能之外,還擴展了Spark的生態(tài)圈,引入了Spark on K8s, 讓用戶多了一種部署Spark的方式,還引入了Pandas UDF,可以讓用戶在Spark上直接運行Pandas函數(shù)。我們分析其內(nèi)核運行架構(gòu)如下:
1. SparkContext引擎構(gòu)建分析:
通常而言,用戶開發(fā)的Spark應(yīng)用程序的提交與執(zhí)行都離不開SparkContex的支持。在正式提交應(yīng)用程序之前,首先需要初始化SparkContext。SparkContext隱藏了網(wǎng)絡(luò)通信、分布式部署、消息通信、存儲體系、計算引擎、度量系統(tǒng)、文件服務(wù)、Web UI等內(nèi)容,應(yīng)用程序開發(fā)者只需要使用SparkContext提供的API完成功能開發(fā)。
2. SparkEnv環(huán)境構(gòu)建分析:
Spark執(zhí)行環(huán)境SparkEnv是Spark中的Task運行所必需的組件。SparkEnv內(nèi)部封裝了RPC環(huán)境(RpcEnv)、序列化管理器、廣播管理器(BroadcastManager)、map任務(wù)輸出跟蹤器(MapOutputTracker)、存儲體系、度量系統(tǒng)(MetricsSystem)、輸出提交協(xié)調(diào)器(OutputCommitCoordinator)等Task運行所需的各種組件。
3. 可交換的存儲體系分析:
Spark優(yōu)先考慮使用各節(jié)點的內(nèi)存作為存儲,當內(nèi)存不足時才會考慮使用磁盤,這極大地減少了磁盤I/O,提升了任務(wù)執(zhí)行的效率,使得Spark適用于實時計算、迭代計算、流式計算等場景。在實際場景中,有些Task是存儲密集型的,有些則是計算密集型的,所以有時候會造成存儲空間很空閑,而計算空間的資源又很緊張。Spark的內(nèi)存存儲空間與執(zhí)行存儲空間之間的邊界可以是“軟”邊界,因此資源緊張的一方可以借用另一方的空間,這既可以有效利用資源,又可以提高Task的執(zhí)行效率。此外,Spark的內(nèi)存空間還提供了Tungsten的實現(xiàn),直接操作操作系統(tǒng)的內(nèi)存。由于Tungsten省去了在堆內(nèi)分配Java對象,因此能更加有效地利用系統(tǒng)的內(nèi)存資源,并且因為直接操作系統(tǒng)內(nèi)存,空間的分配和釋放也更迅速。
4. 雙級調(diào)度系統(tǒng)分析:
調(diào)度系統(tǒng)主要由DAGScheduler和TaskScheduler組成,它們都內(nèi)置在SparkContext中。DAGScheduler負責創(chuàng)建Job、將DAG中的RDD劃分到不同的Stage、給Stage創(chuàng)建對應(yīng)的Task、批量提交Task等功能。TaskScheduler負責按照FIFO或者FAIR等調(diào)度算法對批量Task進行調(diào)度;為Task分配資源;將Task發(fā)送到集群管理器的當前應(yīng)用的Executor上,由Executor負責執(zhí)行等工作。即使現(xiàn)在Spark增加了SparkSession和DataFrame等新的API,但這些新API的底層實際依然依賴于SparkContext。
5. 多維計算引擎分析:
計算引擎由內(nèi)存管理器(MemoryManager)、Tungsten、任務(wù)內(nèi)存管理器(TaskMemory-Manager)、Task、外部排序器(ExternalSorter)、Shuffle管理器(ShuffleManager)等組成。MemoryManager除了對存儲體系中的存儲內(nèi)存提供支持和管理外,還為計算引擎中的執(zhí)行內(nèi)存提供支持和管理。Tungsten除用于存儲外,也可以用于計算或執(zhí)行。TaskMemoryManager對分配給單個Task的內(nèi)存資源進行更細粒度的管理和控制。ExternalSorter用于在map端或reduce端對ShuffleMapTask計算得到的中間結(jié)果進行排序、聚合等操作。ShuffleManager用于將各個分區(qū)對應(yīng)的ShuffleMapTask產(chǎn)生的中間結(jié)果持久化到磁盤,并在reduce端按照分區(qū)遠程拉取ShuffleMapTask產(chǎn)生的中間結(jié)果。
6. 強大的SparkMLlib機器學(xué)習(xí)庫:
旨在簡化機器學(xué)習(xí)的工程實踐工作,并方便擴展到更大規(guī)模。MLlib由一些通用的學(xué)習(xí)算法和工具組成,包括分類、回歸、聚類、協(xié)同過濾、降維等,同時還包括底層的優(yōu)化原語和高層的管道API。
然后,分析一下人工智能平臺分析引擎的處理過程。分析引擎的主要技術(shù)是機器學(xué)習(xí)和深度學(xué)習(xí)。機器學(xué)習(xí)框架涵蓋用于分類,回歸,聚類,異常檢測和數(shù)據(jù)準備的各種學(xué)習(xí)方法,也可以包括神經(jīng)網(wǎng)絡(luò)方法。深度學(xué)習(xí)框架涵蓋具有許多隱藏層的各種神經(jīng)網(wǎng)絡(luò)拓撲,包括模式識別的多步驟過程。網(wǎng)絡(luò)中的層越多,可以提取用于聚類和分類的特征越復(fù)雜。常見的深度學(xué)習(xí)框架有Caffe,CNTK,DeepLearning4j,Keras,MXNet和TensorFlow。其中Deeplearning4j是應(yīng)用最廣泛的JVM開源深度學(xué)習(xí)工具,面向Java、Scala和Clojure用戶群。它旨在將深度學(xué)習(xí)引入生產(chǎn)棧,與Hadoop與Spark等主流大數(shù)據(jù)框架緊密集成。DL4J能處理圖像、文本、時間序列和聲音等所有主要數(shù)據(jù)類型,提供的算法包括卷積網(wǎng)絡(luò)、LSTM等循環(huán)網(wǎng)絡(luò)、Word2Vec和Doc2Vec等NLP工具以及各類自動編碼器。Deeplearning4j自帶內(nèi)置Spark集成,用于處理在集群上開展的分布式神經(jīng)網(wǎng)絡(luò)訓(xùn)練,采用數(shù)據(jù)并行來將網(wǎng)絡(luò)訓(xùn)練向外擴展至多臺計算機,每個節(jié)點靠一個(或四個)GPU運行。
03
深度學(xué)習(xí)框架的計算需要大量的圖像數(shù)據(jù),數(shù)據(jù)從前端傳輸?shù)胶蠖诉M行預(yù)處理,然后進行標注,獲得訓(xùn)練數(shù)據(jù)集。數(shù)據(jù)整理好之后,進行模型訓(xùn)練,這是一個計算和通信非常密集的過程;模型訓(xùn)練完之后,我們進行推理預(yù)測,其主要是一個前向計算過程。其需要對批量樣本的高吞吐高并發(fā)響應(yīng)和單個樣本的低延時響應(yīng)。下面以圖像識別的過程為例說明如下:
1. 數(shù)據(jù)的采集和獲?。?/strong>
是通過物聯(lián)網(wǎng)傳感器,將光或聲音等信息轉(zhuǎn)化為電信息。信息可以是二維的圖象如文字、圖象等,可以是一維的波形如聲波、心電圖、腦電圖,也可以是物理量與邏輯值。
2. 數(shù)據(jù)預(yù)處理:
包括A\D、二值化、圖象的平滑、變換、增強、恢復(fù)、濾波等, 主要指圖象處理。
3. 特征抽取和選擇:
在模式識別中,需要進行特征的抽取和選擇,例如,一幅64x64的圖象可以得到4096個數(shù)據(jù),這種在測量空間的原始數(shù)據(jù)通過變換獲得在特征空間最能反映分類本質(zhì)的特征。這就是特征提取和選擇的過程。
4. 分類器設(shè)計:
分類器設(shè)計的主要功能是通過訓(xùn)練確定判決規(guī)則,使按此類判決規(guī)則分類時,錯誤率***。
5. 分類決策:
在特征空間中對被識別對象進行分類。
***,探討人工智能平臺分析引擎的深度學(xué)習(xí),它是如何針對多層神經(jīng)網(wǎng)絡(luò)上運用各種機器學(xué)習(xí)算法解決圖像、文本等問題?深度學(xué)習(xí)從大類上可以歸入神經(jīng)網(wǎng)絡(luò),不過在具體實現(xiàn)上有許多變化。深度學(xué)習(xí)的核心是特征學(xué)習(xí),旨在通過分層網(wǎng)絡(luò)獲取分層次的特征信息,從而解決以往需要人工設(shè)計特征的重要難題。深度學(xué)習(xí)是一個框架,包含多個重要算法: CNN卷積神經(jīng)網(wǎng)絡(luò)、AutoEncoder自動編碼器、Sparse Coding稀疏編碼、RBM限制波爾茲曼機、DBN深信度網(wǎng)絡(luò)、RNN多層反饋循環(huán)神經(jīng)網(wǎng)絡(luò)神經(jīng)網(wǎng)絡(luò),對于不同問題(圖像,語音,文本),需要選用不同網(wǎng)絡(luò)模型才能達到更好效果。
04
重點講一下卷積神經(jīng)網(wǎng)絡(luò),它就是至少包含一層的神經(jīng)網(wǎng)絡(luò),該層的功能是:計算輸入f與可配置的卷積核g的卷積,生成輸出。卷積的目的就是把卷積核應(yīng)用到某個張量的所有點上,通過卷積核的滑動生成新的濾波后的張量。卷積的價值在于對輸入降維能力,通過降維改變卷積核的跨度strides參數(shù)實現(xiàn)。設(shè)置跨度是調(diào)整輸入張量維數(shù)的方法,strides參數(shù)格式與輸入向量相同,面臨挑戰(zhàn):如果應(yīng)對輸入在邊界,可以采用對圖像邊界填充方式。數(shù)據(jù)格式NHWC(數(shù)目,高度,寬度,通道數(shù))。卷積核的作用常常是增強卷積核中心位置像素的灰度。卷積神經(jīng)網(wǎng)絡(luò)CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。
由于CNN的特征檢測層通過訓(xùn)練數(shù)據(jù)進行學(xué)習(xí),所以在使用CNN時,避免了顯式的特征抽取,而隱式地從訓(xùn)練數(shù)據(jù)中進行學(xué)習(xí);再者由于同一特征映射面上的神經(jīng)元權(quán)值相同,所以網(wǎng)絡(luò)可以并行學(xué)習(xí),這也是卷積網(wǎng)絡(luò)相對于神經(jīng)元彼此相連網(wǎng)絡(luò)的一大優(yōu)勢。卷積神經(jīng)網(wǎng)絡(luò)以其局部權(quán)值共享的特殊結(jié)構(gòu)在語音識別和圖像處理方面有著獨特的優(yōu)越性,其布局更接近于實際的生物神經(jīng)網(wǎng)絡(luò),權(quán)值共享降低了網(wǎng)絡(luò)的復(fù)雜性,特別是多維輸入向量的圖像可以直接輸入網(wǎng)絡(luò)這一特點避免了特征提取和分類過程中數(shù)據(jù)重建的復(fù)雜度。
激活函數(shù):為神經(jīng)網(wǎng)絡(luò)的輸入引入非線性,通過曲線能夠刻畫輸入中更為復(fù)雜的變化,設(shè)計模型常推薦tf.nn.relu,tf.sigmoid,tf.tanh,tf.nn.dropout,性能較為突出,評價一個激活函數(shù)是否有用的因素如下:單調(diào),采用梯度下降法尋找局部極值點;可微分,保證任何一個點可以求導(dǎo)數(shù),可以使梯度下降法用到激活函數(shù)的輸出上。模型的評價指標是敏感度、特異度和精度。靈敏度(敏感度,召回率recall,查全率sensitive)=TP/P =TPR;特異度(特效度specificity)=TN/N;精度(查準率,準確率precision)=TP/TP+FP。
總之,人工智能的框架時代已經(jīng)成熟了,不是我們科學(xué)家和技術(shù)專家的主戰(zhàn)場,我們是要重新定義一些計算模型和算法實現(xiàn),來創(chuàng)新網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練方法,這樣的深度學(xué)習(xí)算法會更加有效,能夠在普通的移動設(shè)備端工作,甚至不需要多余的硬件支持或抑制內(nèi)存開銷,會觸發(fā)人工智能技術(shù)進入大規(guī)模商用階段,人工智能產(chǎn)品全面進入消費級市場。
【本文為專欄作者“移動Labs”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】
本文標題:中國移動研究院常耀斌:主流人工智能技術(shù)棧的深度探討和實踐總結(jié)
URL鏈接:http://m.fisionsoft.com.cn/article/cdjdpji.html


咨詢
建站咨詢
