Tell a Story
New Home
Login
Mailbox and Todo List (0)
Shopping Cart
Language:
English
正體中文
簡体中文
日本語
Happy everyday
Mahahino Webmail

 
5人工智慧框架
福祥家 (258) 2019-01-28 22:36:02 MON
今天我們來探討一下 5 個筆者感興趣的AI人工智慧框架,這 5 個框架均支援C 或 C++,也都能使用GPU來加速計算,可透過了NVIDIA的CUDA 加入處理。

AI已變成一句流行語(buzzword)

現在所有科技企業即便自己不懂AI都要說自己產品內含AI,沒有AI的科技產品是不容易賣的。 過去AI給人的感覺大概就是那些天才或書呆子才會用,但現在因愈來愈友善,幾乎所有資訊人或軟體工程師都要能懂個幾樣,因為它已經變成科技熱門顯學了。走一趟書局,放眼望去幾乎都是機器學習和Python的書籍。但就如筆者過去所言,學太多語言沒意義,如果你喜歡多學語言可以為了人工智慧去學,但如果你已經熟悉其他script語言,可以想辦法整合。

目前在筆者電腦安裝的Python是 3.7版,要學是因為幾乎所有常見的深度學習框架都用Python去操控,許多範例也都使用 Python,大概只有Torch框架腳本語言用Lua,沒人用PHP或Perl。因此為了熟悉這些框架,不得不學。大部分的深度學習核心都是用C開發的,很多框架會透過C的API讓其他語言透過 FFI (foreign function interface)去呼叫。目前官方支援度最好的高階語言還是Python,但其他語言如Javascript, C++, Java, Go, Swift等語言也有部分支援。如果有人想用PHP等語言來操作,可用 FFI 外掛去實作。

深度學習最重要的是目的,知道目的才知道要準備什麼資料,要放在那裡?然後再選擇最適合的演算法,進入學習與調教,因此若要成為AI 優秀專家:
一、網路上下載原始碼來研究。
二、找個主題來實作。
三、到一間人工智慧的公司開發產品,產品要能夠在市面上看得到,至少滿三年。
四、去參加國際大賽,最好能得到前三名回來。

TensorFlow

Google 在2015年底開源了内部使用深度學習框架 TensorFlow後,TensorFlow就水漲船高,在Github上Fork 和 Star 數目都是最多的。其圖形分類、音頻處理、推薦系統,和自然語言處理等應用都有豐富的支援,最近流行的Keras框架底層預設就是使用TensorFlow,許多機器學習的書本也都以此框架為基礎來跟讀者做介紹。AlphaGo開發團隊Deepmind也計畫將類神經網路移到TensorFlow中。

因為 TensorFlow的流行與普及,現在深度學習的門檻降低,TensorFlow 目前client 端語言主要支持Python和C++兩種語言,其餘也有JS, Java, Swift..允許在任何CPU或GPU上進行計算,無論是桌機、伺服器,或者手機都可使用,它可以透過input的資料(nodes),排序後做出決定。php可透過FFI或 gRPC去呼叫,再結合前端的網頁語言和手機軟體,去達到人工智慧產品開發目的。

TensorFlow 有視覺輔助工具 TensorBoard,但它缺乏許多預先訓練模型,也並非全部都開源,其次,未來如果要開發高效能的人工智慧物聯嵌入式產品,就不能過度使用實驗性質的 Python語音,因為效能會有問題。


tensorflow-example.png

tensorfrlow-concept.png


Microsoft CNTK

Computational Network Toolkit(CNTK)支援使用C++, C#, Java, 和 Python.語言,是微軟在深度學習與人工智慧領域的成果,是一套著重在分散式計算網絡的模塊化、維護,且提供學習演算法和模組描述的函式庫。CNTK 功能和Google TensorFlow 相似,但在語音和圖像辨識能力方面比TensorFlow, Theano, Torch 7和 Caffe都快,目前CNTK開源程式碼放在 GitHub 上。目前使用於語音助手 Cortana,和Skype 語音翻譯。

微軟說明,提升運算速度對深度學習這個領域是很重要的,因為有些很大的深度學習任務可能要花上好幾個星期才能完成,能加快速度就是很大一項進展了。至於微軟 CNTK 加快深度學習運算的秘訣,則是靠 GPU,微軟發現,雖然 GPU 設計用於電腦圖像處理,但用在說話、聽、理解語音、辨識圖片與動作這類的演算法處理時,其效果也相當理想。且不管是只有一台電腦,或者是多台以 GPU 為主的運算伺服器,都可以跑得動 CNTK,因此對於那些預算有限的研發人員、致力於深度學習的新創公司,或者是擁有大量數據並要即時處理的大公司,都能盡情使用 CNTK。

Xuedong Huang 說,有了 CNTK,大家都可以加入微軟的行列,創造在人工智慧領域突破性的發展。CNTK比較有靈活彈性,允許分散式訓練。但他被執行在一個Network Description Language (NDL) 新語言中,並缺少視覺化工具。


microsoft-cntk-architecture.png

Caffe

Caffe 是加州大學柏克萊分校的BVLC(Berkeley Vision and Learning Center)所開發,以BSD開放原始碼授權。Caffe是一個快速、強大且開放的深度學習框架,語言使用C++,可使簡單的使用迴旋類神經網路去做影像分類的工作。可以在GPU裡計算,因此效能佳。Caffee可以不用寫程式碼就可以訓練模型,但在不太適合在遞歸網絡中運行,且架構有待提升。

Caffe用yaml格式設定檔來設定網路架構及訓練的參數。比較常見的應用方式是作為其他上層分散式架構的底層計算函式庫,如Spark上的深度學習環境SparkNet,或需要與C/C++程式整合的高效率計算情境、如電腦圍棋程式。


forward_backward.png
caffeoverview.png

Torch

Torch 是一常用在科學和數值運算的開源機器學習函式庫,提供線性程序和類神經網路模型,代數語言使用 C。使用較不普遍的 Lua 腳本語言進行操作,可以使用Lua的套件管理工具安裝,熟悉者可以很快的上手Torch。BSD開放原始碼授權。強大的 N 階陣列有助切片和索引。Torch 非常靈活有彈性,速度快有效率且高階,有很多事先訓練好的模型。Facebook電腦圍棋程式Darkforest中的深度學習就是以Torch實作的。不過他的文件沒有維護的很好,且缺乏可立即使用的隨插即用代碼。

官方網站:http://torch.ch/

MLPack

MLPack 是一個可擴展的 c++ 機器學習庫,但也可綁定在Python。對記憶體管理做得很好,速度也非常快,不過文件不是很齊全。成立初心是希望通過一簡單、前後一致的API讓新使用者使用機器學習成為可能,並利用C++語言特徵為專家使用者提供最好的性能和最大的靈活性。這些通過提供一系列命令列執行程式完成,就像使用一個黑箱,而且專家使用者和研究者可以容易的更改一個模組化的C++ API的內部演算法。

官方網站:http://mlpack.org/
開源位址:https://github.com/mlpack/mlpack

classmlpack-inherit-graph.png

mlpack 存在許多Linux發行版本中,例如在Ubuntu上,可使用下面的命令安装mlpack。
$ sudo apt-get install libmlpack-dev

如果不能直接安裝,也可用原始碼來編譯與安裝。它使用CMake,

下載mlpack
Reply 訪客(Guest) Reply
Share to »

1.1 訪客198056
2019-01-30 15:43:30 WED
多謝分享!
Reply 訪客(Guest) Reply

1.2 josephine
2019-02-01 00:41:33 FRI
現在計畫的確都要加上AI元素,否則就不易被審查委員青睞了。
謝謝分享AI的框架!
Reply 訪客(Guest) Reply

1
About 瑪哈日野
About mahahino
Privacy Policy and Copyright Notice
Privacy Policy & Copyright Notice
Cooperation and Advertise
Cooperation & advertising
臉書紛絲頁
Facebook

版權所有 © 2019 瑪哈日野有限公司 mahahino Ltd. 保留一切權利。