“柯潔被讓二子”仍不敵AI,盤點程序員必須了解的十大AI庫及框架
原創(chuàng)【51CTO.com原創(chuàng)稿件】這一天遲早會來,自李世石 1:4 不敵 AlphaGo 那一天起,每一位圍棋人都明白,時代已經(jīng)提速,未來正踏著比想象中迅疾百倍的步伐洶涌而來。
彼時彼刻 AI 對人類的超越絕不是終點,深度學(xué)習(xí)加持下的飛速進步,很快就會讓人類再也無法在棋盤前與 AI 平等對話,直至降格、讓子。無論你是否情愿,都必須面對這個事實。
2018 年 1 月 9 日,裝備著***公開版本的絕藝,身披馬甲“絕藝指導(dǎo) A”,開始了讓二子(黑貼 6 目半)對決職業(yè)棋手的行程。
1 月 16 日中午擊敗 NIPOHC(韓一洲七段)首勝銀冠棋手(全國冠軍),1 月 12—16 日完成 14 連勝,至 1 月 17 日晚八點,共弈 31 局 27 勝 4 負(fù)。極高的勝率固然亮眼,卻也符合人們對絕藝實力的“預(yù)期”。
1 月 17 日這一天,對柯潔來說并不愉快。面對圍觀群眾“和絕藝指導(dǎo) A 下一盤”的鼓噪,柯潔欣然應(yīng)允,向絕藝指導(dǎo) A 發(fā)出對局邀請。
驚天動地,職業(yè)***棋手——而且是最***的那個,***在公開對戰(zhàn)中成為被讓子的一方。這一刻柯潔放下驕傲,選擇勇敢。面對強大的 AI,人類展現(xiàn)出了卓越的勇氣與瀟灑風(fēng)度。
這是圍棋人機大戰(zhàn)中的又一個***次,***職業(yè)圍棋手,在讓子棋中負(fù)于 AI。更明確一點說,騰訊圍棋 AI 絕藝,讓二子戰(zhàn)勝了當(dāng)今圍棋***人柯潔。而且整個戰(zhàn)局只進行了 77 手,可以說柯潔落敗的相當(dāng)快。
柯潔今天凌晨在微博上說:“以后請叫我佛系棋手… ”,圍棋世界***人,最近心緒有點起伏~
可能未來人機大戰(zhàn)的懸念會變成,到底讓幾子人類才能穩(wěn)贏。騰訊表示,這次戰(zhàn)勝柯潔的絕藝,參考了 2017 年 10 月公開的 AlphaGo Zero 論文,并在實踐中做出了改進。
這個版本使用了 40 block dual-resnet 模型,以老版本的絕藝為基礎(chǔ)進行強化學(xué)習(xí),自對弈了數(shù)百萬棋局。
據(jù)介紹,騰訊在有限的資源和時間內(nèi),通過把強化學(xué)習(xí)和監(jiān)督學(xué)習(xí)相結(jié)合來加速訓(xùn)練,快速提升了棋力。
眼下,AI 已經(jīng)成為越來越火的一個方向,程序員對于新技術(shù)是最敏感的一個人群,作為一名程序員如何轉(zhuǎn)向人工智能方向?
本文將向您介紹一些在人工智能(AI)領(lǐng)域常被使用的優(yōu)質(zhì)軟件庫,并且分析它們的優(yōu)/劣勢和自身特點。
雖然 AI 曾經(jīng)被稱為只有書***和天才才去觸碰的專業(yè)領(lǐng)域,但是現(xiàn)如今由于各種軟件庫和框架的發(fā)展,它已成為一個更加開放的 IT 領(lǐng)域,很多人都已投身于其中。
現(xiàn)在就讓我們來深入了解和探索這個紛繁的 AI 庫的世界吧!
TensorFlow
“通過使用數(shù)據(jù)流圖的計算,來實現(xiàn)可擴展的機器學(xué)習(xí)”,語言:C++ 或 Python。
當(dāng)提到 AI 的時候,您首先聽到的框架應(yīng)該就是谷歌的 TensorFlow。
TensorFlow 是使用數(shù)據(jù)流圖來執(zhí)行數(shù)值計算的開源庫。該框架的特點是它可以利用任何 CPU 或 GPU 進行計算,無論是臺式機、服務(wù)器、甚至是移動設(shè)備的架構(gòu)都可以實現(xiàn)。這個框架中提供了 Python 語言的編程環(huán)境。
TensorFlow 通過所謂的各種節(jié)點來分類數(shù)據(jù)層,并對它所獲得的任何信息做出判定。
想了解更多相關(guān)信息,可以參看:https://www.tensorflow.org/
優(yōu)勢:
- 使用一種簡單易學(xué)的語言--Python。
- 采用計算圖形的抽象。
- 由 TensorBoard 提供可視化。
劣勢:
- 由于 Python 并非是最快的語言,因此該軟件庫運行起來并不快。
- 缺乏各種預(yù)先訓(xùn)練好(pre-trained)的模型。
- 并非完全開源。
微軟 CNTK
“一個開源的深度學(xué)習(xí)工具包”,語言:C++。
我們可以稱之為微軟對于谷歌 TensorFlow 的“回應(yīng)”。
微軟的計算網(wǎng)絡(luò)工具包(Microsoft's Computational Network ToolKit,CNTK)是一種能夠提高模塊化和分離式計算網(wǎng)絡(luò)的軟件庫,它還提供了各種學(xué)習(xí)算法和模型的描述。
在需要有大量服務(wù)器參與運行的時候,CNTK 可以利用多臺服務(wù)器來同步實現(xiàn)。雖然據(jù)說它在功能上將會對谷歌 TensorFlow 有所屏蔽,但現(xiàn)在看來還為時過早。
想了解更多相關(guān)信息,可以參看:https://github.com/Microsoft/CNTK
優(yōu)勢:
- 非常靈活。
- 可實現(xiàn)分布式的訓(xùn)練。
- 支持 C++,C#,Java 和 Python。
劣勢:
它是由一種新的語言--網(wǎng)絡(luò)描述語言(NetworkDescription Language,NDL)來實現(xiàn)。
可視化不足。
Theano
“一種數(shù)值計算的軟件庫”,語言:Python。
Theano 是 TensorFlow 的強有力競爭者。它是一個功能強大的 Python 庫,能夠高效地實現(xiàn)與各種多維數(shù)組有關(guān)的數(shù)值運算。
該軟件庫能夠準(zhǔn)確地使用 GPU 來執(zhí)行各種數(shù)據(jù)密集型的計算,而不會在運行中給 CPU 增加負(fù)擔(dān)。
出于這個原因,在近十年來,Theano 一直被運用于供電系統(tǒng)內(nèi)部各種大規(guī)模的計算密集型操作。
不過在 2017 年 9 月,Theano 宣布將在 2017 年 11 月的***一次重要發(fā)布之后,對其 1.0 版本停止更新。
當(dāng)然,這并不意味著它在功能上會有所遜色,只要您愿意,對它隨時展開研究都是值得的。
想了解更多相關(guān)信息,可以參看:https://github.com/Theano/Theano
優(yōu)勢:
- 對 CPU 和 GPU 的使用進行了適當(dāng)?shù)膬?yōu)化。
- 高效的數(shù)字任務(wù)處理能力。
劣勢:
- 原生的 Theano 相對于其他軟件庫的水平較低,需要與其他軟件庫一起使用,以獲得較高的抽象水平。
- 在 AWS 上運行時會有一些 Bug。
Caffe
“深度學(xué)習(xí)的開放式框架,且速度快”,語言:C++。
Caffe 是一個功能強大的深度學(xué)習(xí)框架。和上述列表中的其他框架相比,它能夠?qū)崿F(xiàn)快速和有效的深度學(xué)習(xí)式研究。
通過Caffe,您可以非常容易地為圖像分類,建立卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)。Caffe 能夠有效地工作在 GPU 上,并且在運行過程中能夠發(fā)揮極快的速度。
想了解更多相關(guān)信息,可以參看:http://caffe.berkeleyvision.org/
Caffe 的主要類包括:
優(yōu)勢:
- 可與 Python 和 MATLAB 綁定。
- 運行性能***。
- 無需編寫代碼,便可實現(xiàn)對各個模型的訓(xùn)練。
劣勢:
- 對復(fù)發(fā)性的網(wǎng)絡(luò)(recurrent networks)支持不佳。
- 與新架構(gòu)的協(xié)同性不好。
Keras
“為人類的深度學(xué)習(xí)而打造”,語言:Python。
Keras 是一個用 Python 編寫的開源神經(jīng)網(wǎng)絡(luò)庫。不像 TensorFlow、CNTK 和 Theano,Keras 并不服務(wù)于端到端的機器學(xué)習(xí)框架。
相反地,作為一個接口,它提供了一個高層次的抽象,這使得無論是在什么樣的框架下,神經(jīng)網(wǎng)絡(luò)都能夠方便地進行配置。
目前谷歌 TensorFlow 能夠?qū)?Keras 作為后端予以支持,而微軟的 CNTK 是否會在將來支持 Keras,則暫無時間表。
想了解更多相關(guān)信息,可以參看:https://keras.io/
優(yōu)勢:
- 用戶友好且容易上手。
- 容易擴展。
- 無縫運行在 CPU 和 GPU 上。
- 能與 Theano 和 TensorFlow 無縫協(xié)作。
劣勢:
- 無法作為一個獨立的框架被使用。
Torch(火炬)
“一個開源的機器學(xué)習(xí)庫”,語言:C。
Torch 是一個為科研和數(shù)值運算打造的、開源的機器學(xué)習(xí)庫。它基于的是 Lua 編程語言,而非 Python 庫。通過提供大量的算法,它不但使得深度學(xué)習(xí)研究更為容易,而且能提高效率和速度。
Torch 具有強大的 N 維陣列,這對于諸如切片和索引等操作是非常有用的。它還提供了線性代數(shù)的程序和神經(jīng)網(wǎng)絡(luò)的模型。
想了解更多相關(guān)信息,可以參看:http://torch.ch/
優(yōu)勢:
- 非常靈活。
- 有極高的速度和效率。
- 具有大量的預(yù)先訓(xùn)練好的模型。
劣勢:
- 文檔不清。
- 缺少即插即用的代碼。
- 基于的是一種不那么流行的語言--Lua。
Accord.NET
“支持機器學(xué)習(xí)、計算機視覺、統(tǒng)計、以及使用.NET的科學(xué)計算”,語言:C#。
這是為C#程序員準(zhǔn)備的軟件庫,Accord.NET 是一種 .NET 的機器學(xué)習(xí)框架,它方便了音頻和圖像的各種處理。
該框架可以有效地處理數(shù)值優(yōu)化、人工神經(jīng)網(wǎng)絡(luò)、甚至可視化等方面。除此之外,Accord.NET 在計算機視覺和信號處理上也具有強大的功能,而且通過一些簡單的算法就能實現(xiàn)。
想了解更多相關(guān)信息,可以參看:http://accord-framework.net/
優(yōu)勢:
- 它擁有一個龐大且活躍的開發(fā)團隊。
- 具有非常好的文檔框架。
- 可實現(xiàn)質(zhì)量可視化。
劣勢:
- 該框架并不是非常流行。
- 比 TensorFlow 要運行得緩慢一些。
Spark MLlib
“一個可擴展的機器學(xué)習(xí)庫”,語言:Scala。
Apache 的 Spark MLlib 是一個***擴展性的機器學(xué)習(xí)庫。它支持的編程語言有 Java、Scala、Python、甚至是 R 語言。
它能夠非常有效地通過 Python 和 R 語言的 Numpy 庫(譯者注:NumPy 系統(tǒng)是 Python 的一種開源的數(shù)值計算擴展)進行交互操作。
MLlib 能夠很容易地被植入到 Hadoop 的工作流中。它還能提供諸如分類、回歸、歸并等機器學(xué)習(xí)的算法。在涉及到大規(guī)模數(shù)據(jù)處理時,這款功能強大的軟件庫運行起來非???。
想了解更多相關(guān)信息,可以參看:https://spark.apache.org/mllib/
優(yōu)勢:
- 能極快速地處理大規(guī)模的數(shù)據(jù)。
- 支持多種語言。
劣勢:
- 學(xué)習(xí)曲線“陡峭”(即不易學(xué)習(xí))。
- 只能對 Hadoop 實現(xiàn)即插即用。
Sci-kitLearn
“使用 Python 進行機器學(xué)習(xí)”,語言:Python。
SCI-Kit 是一款主要用于在機器學(xué)習(xí)中構(gòu)建各類模型的、非常強大的 Python 庫。
通過使用諸如 Numpy、SciPy 和 Matplotlib 之類的庫,它對于諸如分類、回歸、歸并等統(tǒng)計模型非常有效。SCI-Kit 還能為您帶來監(jiān)管式與無監(jiān)管式的學(xué)習(xí)算法、以及交叉驗證等功能。
想了解更多相關(guān)信息,可以參看:http://scikit-learn.org/
優(yōu)勢:
- 能支持許多主流的算法。
- 提供有效的數(shù)據(jù)挖掘。
劣勢:
- 對于構(gòu)建模型來說并非是***的。
- 使用 GPU 時,效果并非***。
MLPack
“一個可擴展的 C++ 類型機器學(xué)習(xí)庫”,語言:C++。
MLPack 是一款利用 C++ 來實現(xiàn)可擴展機器學(xué)習(xí)的軟件庫。由于它運行在 C++ 中,因此您完全可以想象到它對內(nèi)存的高效管理。
由于在庫中自帶優(yōu)質(zhì)的機器學(xué)習(xí)算法,MLPack 運行起來速度極快。另外,該軟件庫對于新手來說十分“友好”,它提供了一個簡單的 API。
想了解更多相關(guān)信息,可以參看:http://mlpack.org/
優(yōu)勢:
- 擴展性極強。
- 提供 Python 和 C++ 的綁定。
劣勢:
- 沒有優(yōu)質(zhì)的文檔。
總結(jié)
本文在此所討論到的各種軟件庫都是在大家長期使用之后,備受好評且高質(zhì)量的。
像 Facebook、谷歌、雅虎、蘋果和微軟這樣的大公司已經(jīng)將它們運用到了各自的深度學(xué)習(xí)和機器學(xué)習(xí)的項目中。您還有什么理由不去試試呢?
陳峻(Julian Chen) ,有著十多年的 IT 項目、企業(yè)運維和風(fēng)險管控的從業(yè)經(jīng)驗,日常工作深入系統(tǒng)安全各個環(huán)節(jié)。作為 CISSP 證書持有者,他在各專業(yè)雜志上發(fā)表了《IT運維的“六脈神劍”》、《律師事務(wù)所IT服務(wù)管理》 和《股票交易網(wǎng)絡(luò)系統(tǒng)中的安全設(shè)計》等論文。他還持續(xù)分享并更新《廉環(huán)話》系列博文和各種外文技術(shù)翻譯,曾被(ISC)2 評為第九屆亞太區(qū)信息安全***成就表彰計劃的“信息安全踐行者”和 Future-S 中國 IT 治理和管理的 2015 年度踐行人物。
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】