1. 程式人生 > >2018中國人工智慧開源軟體發展白皮書-筆記

2018中國人工智慧開源軟體發展白皮書-筆記

“2018中國人工智慧開源軟體發展白皮書”是新手瞭解人工智慧技術原理和技術現狀的好文件,讀完之後有再讀幾遍的衝動,學到了很多東西,做了筆記分享給大家共同學習,有不對的地方多多指出。

“2018中國人工智慧開源軟體發展白皮書”筆記

一,人工智慧發展史

1,1956年達特茅斯會議正式確定了人工智慧的研究領域,標誌人工智慧正式誕生。

2,達特茅斯會議後,開啟了人工智慧大發現時代,以推理為核心,後因計算能力和資料量進入寒冬。

3,80年代,第二次成長期,以“知識處理”為核心,在專家系統方面取得一定成就,後因遲遲達不到預期,再次進入寒冬。

4,90年代末,隨著計算能力增強和記憶體的增加,人工智慧開始復甦。97年IBM深藍戰勝國際象棋冠軍,2000年的OpenCV問世,2001年NLTK問世。

5,機器學習繁榮期從07年開始,各種機器學習演算法愈加完善,

6,12年人工智慧深度學習演算法的崛起,以及深度學習開源框架的崛起。

image.png

二,人工智慧開源軟體發展現狀

人工智慧開源計算平臺,開源機器學習框架,應用領域相關的開源軟體。

1,人工智慧開源計算平臺

計算平臺由硬體和軟體兩部分組成,硬體加速計算能力,如GPU,FPGA,TPU,定製人工智慧晶片等;軟體即加速計算平臺,用來匹配硬體使用,為了能夠跟上硬體迭代速度,大廠商都會擁有自己的計算平臺,如NVIDIA的CUDA,AMD的ROCm用於不斷更新的GPU,Google的Tensorflow對應的是TPU。

2,開源機器學習框架

Scikit-learn Mahout MLlib TensorFlow Caffe CNTK MXNet Torch PyTorch Theano PaddlePaddle

image.png

3,應用領域相關開源軟體

(1)自然語言處理的開源軟體:

NLTK OpenNLP LTP斯坦福CoreNLP Gensim spaCy FudanNLP NLPIR THULAC

image.png

(2)計算機視覺的開源軟體

OpenCV TensorFlow物件Ddtection API Detectron InsightFace Tesserac

image.png

image.png

(3)智慧語音:包含語音識別和語音合成

語音識別開源軟體:ISIP Julius HTK CMU sphinx Kladi

語音合成開源軟體:MARY Festival eSpeak Filte HTS Merlin

開源資料集:TIMIT 2000HUB5英文Libri演講VoxForge CHIME CMU_ARCTIC

image.png

(4)無人系統:機器人,無人駕駛

(5)其他應用領域:

  • 知識圖譜:開放領域知識圖譜(百科類和搜尋引擎類的知識基礎)和垂直領域知識圖譜(教育,金融等行業資料積累)
  • 虛擬現實與增強現實
  • 遊戲智慧
  • 資訊保安

三,人工智慧開源軟體特性分析

1,如下圖,當前開源軟體的規模,機器學習框架的發展規模最大,參與的開發者最多,自然語言處理和計算機視覺其次,詳細開源軟體資訊見附錄A.

image.png

2,程式語言特性,在人工各職能開源軟體中,Python和C / C ++和Java的是主流的程式語言。

Python的:具備開發效率高,學習難度低,資料在計算方面功能強大等優勢,迅速成為了資料科學家的工具,大部分人工智慧開源軟體也都提供了Python的藉口。

C / C ++:執行速度快,成為了許多開源機器學習框架的底層開發語言。

Java的:歷史悠久,功能全面,阿帕奇軟體基金會的開源軟體就是用的Java的。

3,框架特性:TensorFlow是所有開源機器框架中使用者最多,應用最廣泛的一個,大量的人工智慧開源軟體基於TensorFlow進行開發,且遍佈各個領域,如影象分類的TensorFlow Slim,用於自標檢測的TensorFlow物件檢測API等。此外,Keras,Scikit-learn,Caffe,PyTorch,CNTK.MXNet,Theano等也在人工智慧開源軟體的發展中佔據了重要地位。

4,關注度特性:GitHub的是目前最大的開源專案託管平臺,開源專案的星級數可以衡量專案的受關注程度如下圖在機器學習框架領域中TensorFlow獲得了近10W個星,計算機視覺領域的OpenCV的獲得了2W多個明星,而知識圖譜領域受關注度相對較低,最熱門的專案也只獲得了約1K個明星。

5,典型人工智慧開發資料集特性統計:詳盡附錄乙

image.png

四,基於開源軟體的人工智慧技術典型解決方案

典型解決方案主要由四個模組構成:計算機管理,資料管理,基於機器學習的演算法,領域構件 ;前兩者是人工智慧開源軟體的基礎,後兩者是核心。

image.png

如圖1所示,資料管理:包括主要資料接入,分發,整合等關鍵環節。

(1)資料接入:負責從資料來源頭採集和同步資料; Flume

(2)資料分發:負責為各接入點的資料建立高效的資料匯流排,將資料正確路由到正確目的地,並建立靈活的訊息佇列,滿足資料處理時效性和準確性需求;卡夫卡

(3)資料整合:解決對各種資料來源進行資料對齊,關聯合並,然後對資料進行規範統一處理,並保證資料的一致性,完整性; Hadoop的,火花

2,計算管理:人工智慧技術對計算資源的需求量越來越大,上客觀需要靈活的彈性計算能力,虛擬機器,容器成為彈性計算的兩種典型基本計算單元。

(1)虛擬機器技術:其基礎是將一臺計算機硬體資源虛擬為多臺邏輯計算單元,並各自擁有可獨立執行的作業系統,可以獨立排程管理,實現資源的動態分配,擴容和回收,從而提高硬體資源的利用率; KVM,VirtualBox的,VMware的

(2)容器技術:是一種更輕量級的虛擬化技術,在同一個作業系統空間中,對軟硬體資源進行隔離分組成許多獨立安全的執行環境,這樣容器分配啟動動態擴容的速度更快,消耗的資源更少,以提升系統效率;泊塢

(3)排程管理:計算資源排程管理需要實時監控瞭解資源狀態,並根據業務優先順序和排程側率,為計算任務動態分佈可用的計算叢集組員; Kuberneres

3,基礎機器學習演算法

人工智慧場景中解決問題的核心是演算法,這些演算法包括並不限於特徵抽取,分類,聚類,動態決策等;向量機(SVM),邏輯迴歸,貝葉斯方法,K-均值聚類,主題模型(Tapic Model),決策樹,決策樹的整合模型(比如隨機森林和梯度提升樹),(深度)神經網路,強化學習工具等。

4,領域構件

領域構件實現了基礎機器學習演算法從理論走向應用的關鍵一步,領域構件更加側重於針對某一場景問題解決。基礎學習演算法和領域構件的相互促進。共同發展實現了人工智慧演算法在理論基礎到實際應用的完整閉環。目前領域構件通常可以分為影象,語音,文字等多個領域。這些領域構件針對相關的任務進行元件化的解決方案,比如多種演算法元件的結合形成了機器翻譯的領域構建。

5,建立解決方案

當前開源軟體比較元件化和零散化,在構建解決方案的角度往往需要將多個層次的開源環境結合起來。

(1)  離線批量訓練模型解決方案:

在行業應用中絕大部分AI模型的訓練都是離線機型的,解決這些方案的整個流水線涉及資料儲存管理狀語從句:,模型批量訓練及模型用英語預測三個部分。

如下圖:離線訓練這部分解決方案的一個特點是模型更新的實時性要求不高,但是的模型訓練通常需要處理海量的訓練資料模型訓練的效率會直接影響到模型的更新迭代的速率,進而直接影響線上預測模組的服務效果。因此模型訓練效率是影響這類AI解決方案的關鍵因素。在實際應用中,模型的訓練更新離不開分散式程式的支援,充分利用叢集的能力進行高速運算和儲存是目前通用的解決方法。典型代表有Hadoop的,MapReduce的,引數伺服器,資料流框架等面向大規模資料處理的開源平行計算框架。當然訓練的時候需要使用特定的演算法元件和領域構件來完成特定解決方案需要的模型。在模型訓練完成後,部署的時候同樣也炫耀對應的預測演算法元件來完成應用層的呼叫任務。在線上部署的時候需要用到一些容器化系統來保證演算法的快速部署和擴容。

image.png

(2)  線上實時模型解決方案:

這種解決方案在很多線上服務中,往往需要跟隨使用者的反饋快速調整AI的模型,從而能夠不斷修正模型應對新的使用者需求,如線上推薦系統,線上廣告系統,搜尋引擎系統等。在這樣的系統中AI模型不是固定不變的,整個流水線中由線上服務部分(通常利用一些容器和流量均衡控制的系統來支援),線上資料收集和儲存的實時資料系統部分,實時模型訓練幾個部分組成。

如下圖:實時模型訓練的部分通常是基於實時資料流系統來完成的(典型的代表如弗林克,風暴),系統會排程機器資源,基於實時的資料完成模型(比如的FTR1,MAB,或者強化學習模型)更新,這些模型訓練的程式碼在很多開源軟體中可以找到,最重要的是將這些演算法接入到實時計算系統中來,適應平臺的資料介面。當模型更新完成後線上服務會用最新的模型進行服務。

這類的系統同時適應較常見的自動控制系統,如機器人控制,自動駕駛等。

image.png

四,其他章節

“人工智慧開源軟體生態分析”

“中國人工智慧開源軟體發展建議”

(以上兩章是關於人工智慧開源軟體的商務商業文化等介紹和建議,對於大部分同學來說沒有“乾貨”,有興趣大家可以到我的下載主頁原始檔查閱,另外文中提到的附錄甲/ B,在原始檔中。)