想做AI,怎么選開發(fā)工具?這份上手指南送給你
現(xiàn)代人工智能給企業(yè)帶來了很多好處,同時也大大提升了機(jī)器的認(rèn)知能力。作為計(jì)算機(jī)科學(xué)領(lǐng)域里的一項(xiàng)重要技術(shù),人工智能正以***的速度迅速發(fā)展。一項(xiàng)研究成果從學(xué)術(shù)論文轉(zhuǎn)化為實(shí)際的產(chǎn)品僅需幾個月的時間。然而,過快的發(fā)展速度對于該領(lǐng)域中的新手來說則是一場災(zāi)難。除了熟悉人工智能技術(shù)之外,從業(yè)人員還必須正確選擇技術(shù)平臺。本文重點(diǎn)介紹了人工智能在深度學(xué)習(xí)方面一些重要的可選項(xiàng),包括每個工具包的主要優(yōu)缺點(diǎn)以及行業(yè)中各自的支持者。
機(jī)器學(xué)習(xí)和深度學(xué)習(xí)
當(dāng)代人工智能技術(shù)可分為兩類:機(jī)器學(xué)習(xí)和深度學(xué)習(xí)。目前絕大多數(shù)使用的都是前一種,即機(jī)器學(xué)習(xí)。這其中包含了一些數(shù)據(jù)科學(xué)家最常用的算法:線性模型、k均值聚類、決策樹等等。雖然我們現(xiàn)在將它們作為人工智能的一部分,但這是數(shù)據(jù)科學(xué)家長期研究的成果。
在過去兩年里,人工智能的第二種技術(shù)受到了更多的關(guān)注和炒作:它是機(jī)器學(xué)習(xí)技術(shù)的一種專業(yè)化表現(xiàn),即神經(jīng)網(wǎng)絡(luò),也被稱為深度學(xué)習(xí)。深度學(xué)習(xí)正吸引著人們對人工智能或“認(rèn)知”技術(shù)的關(guān)注,包括圖像識別、語音識別、自動玩游戲、自動駕駛車輛以及其他自主車輛。通常,這些應(yīng)用需要大量的數(shù)據(jù)來饋送和訓(xùn)練復(fù)雜的神經(jīng)網(wǎng)絡(luò)。
機(jī)器學(xué)習(xí)的可選項(xiàng)
處理機(jī)器學(xué)習(xí)的工具包在每個常用的統(tǒng)計(jì)數(shù)據(jù)包中都有。常見的商業(yè)產(chǎn)品有SAS、SPSS和MATLAB。常用的開源工具有R和Python。大數(shù)據(jù)平臺Apache Spark和Hadoop也有自己的并行機(jī)器學(xué)習(xí)工具(Spark的MLLIB和Apache Mahout)。目前,由于存在類似于scikit-learn和Anaconda這樣的項(xiàng)目,Python正在成為行業(yè)數(shù)據(jù)科學(xué)***的編程語言。
深度學(xué)習(xí)的可選項(xiàng)
深度學(xué)習(xí)工具包的發(fā)展非常迅速。學(xué)術(shù)界和數(shù)據(jù)巨頭,如Google、百度、Facebook,已經(jīng)在深度學(xué)習(xí)投入了很多年,他們擁有數(shù)套強(qiáng)大的可選方案。因此,新手們面對的選擇有很多!每個選擇都有著各自不同的優(yōu)勢和生態(tài)系統(tǒng)。
- TensorFlow:來自谷歌,用戶最多。它是由早期的框架構(gòu)建而成的“第二代”深度學(xué)習(xí)庫。TensorFlow用的是Python語言,它還包含了TensorBoard,這個工具在調(diào)試和檢查網(wǎng)絡(luò)方面有很大的優(yōu)勢。 XLA編譯工具提供了模型的***執(zhí)行,而TensorFlow Mobile則為低功耗的移動設(shè)備提供了機(jī)器學(xué)習(xí)支持。
- MXNet:由Amazon Web Services牽頭開發(fā),使用用戶很多,支持許多種編程語言。 MXNet已被納入Apache Incubator,正式進(jìn)入成為***Apache項(xiàng)目的快車道。
- Deeplearning4J:商業(yè)支持的深度學(xué)習(xí)框架,在Java環(huán)境中性能強(qiáng)大,對企業(yè)應(yīng)用具有一定的吸引力。
- Torch:一個功能強(qiáng)大的框架,在Facebook和Twitter等公司中使用,但只能用Lua編寫,對其他編程語言的支持較少。
- PyTorch:派生自Torch,PyTorch將Torch帶入了熱門的Python數(shù)據(jù)科學(xué)生態(tài)系統(tǒng)之中。 發(fā)布于2017年,它的支持者中包括Facebook和Twitter。 PyTorch支持動態(tài)計(jì)算圖,這在TensorFlow中目前暫不不支持。
- CTNK:Microsoft在深度學(xué)習(xí)領(lǐng)域的產(chǎn)品,擁有Python和C++ API(Java API尚在實(shí)驗(yàn)中)。
- Caffe:重點(diǎn)在計(jì)算機(jī)視覺應(yīng)用領(lǐng)域。核心編程語言是C++,有Python接口。
- Theano:用Python編寫的最古老的深度學(xué)習(xí)框架之一。在學(xué)術(shù)界的使用很廣泛,但不適合生產(chǎn)使用。(譯者注,目前已停止更新)
這其中很多的深度學(xué)習(xí)框架的級別都比較低,開發(fā)人員使用起來并不方便,而高級庫對用戶更加友好,更受開發(fā)者的青睞。其中最重要的庫是Keras,它是用Python開發(fā)的,可創(chuàng)建能在TensorFlow、Theano、CNTK或Deeplearning4j上運(yùn)行的深度學(xué)習(xí)應(yīng)用程序。
蘋果公司在機(jī)器學(xué)習(xí)方面的貢獻(xiàn)也值得一提。與上述工具包不同,蘋果公司僅為模型提供了執(zhí)行框架。開發(fā)人員必須使用Caffe、Keras或scikit-learn等工具來訓(xùn)練他們的模型,并進(jìn)行轉(zhuǎn)換,這樣才能讓應(yīng)用程序通過蘋果公司的CoreML來使用它們。
從哪里著手?
TensorFlow Github Star數(shù)量, 2017年2月。
如果你沒有明確的理由要選擇哪種方案,那么根據(jù)絕大多數(shù)開發(fā)人員的經(jīng)驗(yàn),以及谷歌在人工智能領(lǐng)域中的聲譽(yù)以及Python生態(tài)系統(tǒng)的重要性,Keras和TensorFlow組合當(dāng)仁不讓地成為***大的默認(rèn)選擇。 TensorFlow快速增長的人氣值使其可以在短期內(nèi)與大量的數(shù)據(jù)工具相兼容。例如,你可以參閱Databricks最近有關(guān)在Spark中TensorFlow和Keras對深度學(xué)習(xí)支持的公告。
同時,亞馬遜網(wǎng)絡(luò)服務(wù)公司對MXNet的強(qiáng)大支持,以及MXNet自身的增長速度和成為Apache項(xiàng)目,使其成為重要的備選方案之一。而微軟對Azure的強(qiáng)大支持使得CNTK成為該公司重要的成果。
深度學(xué)習(xí)是一個快速發(fā)展的領(lǐng)域,每個云提供商都將機(jī)器學(xué)習(xí)視為戰(zhàn)略目標(biāo)。幸運(yùn)的是,他們都選擇了開放源代碼。隨著深度學(xué)習(xí)的計(jì)算資源越來越集中在云和GPU上,開源的代碼對于想要研究深度學(xué)習(xí)的人來說是一個很好的消息。