導(dǎo)引AI(人工智能)為應(yīng)用程序開(kāi)發(fā)人員打開(kāi)了一個(gè)充滿可能性的世界。 通過(guò)利用機(jī)器學(xué)習(xí)或深度學(xué)習(xí),您可以生成更好的用戶畫(huà)像、個(gè)性特征和適當(dāng)推薦,或者包含更智能的搜索、語(yǔ)音接口或智能輔助,或者以其他方式改進(jìn)您的應(yīng)用程序。 您甚至可以構(gòu)建能看、會(huì)聽(tīng)并響應(yīng)的應(yīng)用程序。 你應(yīng)該學(xué)習(xí)哪種編程語(yǔ)言來(lái)探究AI的深度? 當(dāng)然,您需要一種具有許多良好機(jī)器學(xué)習(xí)和深度學(xué)習(xí)庫(kù)的語(yǔ)言。 它還應(yīng)具有良好的運(yùn)行時(shí)性能、良好的工具支持、大型??程序員社區(qū)以及健康的支持包生態(tài)系統(tǒng)。 這仍然能留下很多好的選擇。 以下是我對(duì)人工智能開(kāi)發(fā)的五種最佳編程語(yǔ)言的選擇,以及三項(xiàng)榮譽(yù)提及。 其中一些語(yǔ)言正在崛起,而其他語(yǔ)言似乎正在下滑。 幾個(gè)月后回來(lái),沒(méi)準(zhǔn)你可能會(huì)發(fā)現(xiàn)這些排名發(fā)生了變化。 那么,應(yīng)該選擇哪種編程語(yǔ)言進(jìn)行機(jī)器學(xué)習(xí)或深度學(xué)習(xí)項(xiàng)目? 給你推薦五種最佳的編程語(yǔ)言選擇。 一、AI編程首選1.Python 排名第一的是Python。 怎么可能是別的,真的嗎? 雖然有一些關(guān)于Python的令人抓狂的事情 ——空格、Python 2.x和Python 3.x之間的重大分裂、五種不同的打包系統(tǒng),它們都將不是問(wèn)題——如果你正在進(jìn)行AI工作,你幾乎肯定會(huì) 在某些時(shí)候使用Python。 Python中提供的庫(kù)在其他語(yǔ)言中幾乎是無(wú)與倫比的。 NumPy已經(jīng)變得如此普遍,它幾乎是張量操作的標(biāo)準(zhǔn)API,而Pandas將R強(qiáng)大而靈活的數(shù)據(jù)幀帶入Python。 對(duì)于自然語(yǔ)言處理(NLP),您擁有令人尊敬的NLTK和極其快速的SpaCy。 對(duì)于機(jī)器學(xué)習(xí),有經(jīng)過(guò)實(shí)戰(zhàn)考驗(yàn)的Scikit-learn。 當(dāng)涉及到深度學(xué)習(xí)時(shí),所有當(dāng)前的庫(kù)(TensorFlow,PyTorch,Chainer,Apache MXNet,Theano等)都是有效的Python優(yōu)先項(xiàng)目。 如果您正在閱讀關(guān)于arXiv的尖端深度學(xué)習(xí)研究,那么幾乎可以肯定您會(huì)在Python中找到源代碼。 然后是Python生態(tài)系統(tǒng)的其他部分。雖然IPython已成為Jupyter Notebook,而不是以Python為中心,但您仍會(huì)發(fā)現(xiàn)大多數(shù)Jupyter Notebook用戶以及大多數(shù)在線共享的筆記本都使用Python。 沒(méi)法繞過(guò)它。 Python是人工智能研究的最前沿語(yǔ)言,是你能找到最多的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)框架的語(yǔ)言,也是AI世界中幾乎所有人都會(huì)說(shuō)的。 出于這些原因,Python是人工智能編程語(yǔ)言中的第一個(gè),盡管你的編碼作者每天至少會(huì)詛咒一次空白問(wèn)題。 2.Java和他的朋友 JVM家族系列語(yǔ)言(Java,Scala,Kotlin,Clojure等)也是AI應(yīng)用程序開(kāi)發(fā)的絕佳選擇。 無(wú)論是自然語(yǔ)言處理(CoreNLP)、張量操作(ND4J)還是完整的GPU加速深度學(xué)習(xí)堆棧(DL4J),您都可以使用豐富的庫(kù)來(lái)管理所有部分。此外,您還可以輕松訪問(wèn)Apache Spark和Apache Hadoop等大數(shù)據(jù)平臺(tái)。 Java是大多數(shù)企業(yè)的通用語(yǔ)言,Java 8和Java 9中提供了新的語(yǔ)言結(jié)構(gòu),編寫(xiě)Java代碼并不是我們?cè)S多人記憶中的可憎體驗(yàn)。 用Java編寫(xiě)AI應(yīng)用程序可能會(huì)讓人覺(jué)得無(wú)聊,但它可以完成工作 - 您可以使用所有現(xiàn)有的Java基礎(chǔ)架構(gòu)進(jìn)行開(kāi)發(fā)、部署和監(jiān)視。 3. C/C++ 在開(kāi)發(fā)AI應(yīng)用程序時(shí),C/C++不太可能是您的首選,但如果您在嵌入式環(huán)境中工作,并且無(wú)法負(fù)擔(dān)Java虛擬機(jī)或Python解釋器的開(kāi)銷,那么C/C++就是解決之道。當(dāng)你需要從系統(tǒng)中獲取最后一點(diǎn)性能時(shí),你需要回到可怕的指針世界。 值得慶幸的是,現(xiàn)代的C/C++寫(xiě)起來(lái)還是很愉快的(誠(chéng)實(shí)之言!)。 具體方法你是有的選擇的——您可以深入了解堆棧底部,使用CUDA等庫(kù)來(lái)編寫(xiě)直接在GPU上運(yùn)行的代碼,也可以使用TensorFlow或Caffe來(lái)訪問(wèn)靈活的高級(jí)API。 后者還允許您導(dǎo)入數(shù)據(jù)科學(xué)家可能使用Python構(gòu)建的模型,然后以C/C++提供的所有速度在生產(chǎn)中運(yùn)行它們。 請(qǐng)留意Rust在未來(lái)一年中在這個(gè)領(lǐng)域所做的事情。 結(jié)合C/C++的速度與類型和數(shù)據(jù)安全性,Rust是實(shí)現(xiàn)生產(chǎn)性能的絕佳選擇,而不會(huì)產(chǎn)生安全問(wèn)題。 并且對(duì)Rust來(lái)說(shuō),TensorFlow綁定已經(jīng)可用了。 4.JavaScript JavaScript? 到底幾個(gè)意思? 淡定,聽(tīng)我說(shuō)說(shuō)——Google最近發(fā)布了TensorFlow.js,這是一個(gè)WebGL加速庫(kù),允許您在Web瀏覽器中訓(xùn)練和運(yùn)行機(jī)器學(xué)習(xí)模型。 它還包括Keras API以及加載和使用在常規(guī)TensorFlow中訓(xùn)練的模型的能力。 這可能會(huì)吸引大量開(kāi)發(fā)人員涌入AI領(lǐng)域。 雖然JavaScript目前沒(méi)有與此處列出的其他語(yǔ)言相同的機(jī)器學(xué)習(xí)庫(kù)訪問(wèn)權(quán)限,但很快開(kāi)發(fā)人員將在他們的網(wǎng)頁(yè)中添加神經(jīng)網(wǎng)絡(luò),與添加React組件或CSS屬性幾乎相同。真是即賦予權(quán)力有讓人震恐。 TensorFlow.js仍處于早期階段。 目前它在瀏覽器中有用,但在Node.js中不起作用。 它還沒(méi)有實(shí)現(xiàn)完整的TensorFlow API。 但是,我預(yù)計(jì)這兩個(gè)問(wèn)題將在2018年底之前得到解決,此后不久JavaScript將對(duì)人工智能進(jìn)行入侵。 5.R R進(jìn)入前五名的底部,并且趨勢(shì)向下。 R是數(shù)據(jù)科學(xué)家喜愛(ài)的語(yǔ)言。 但是,由于其以數(shù)據(jù)幀為中心的方法,其他程序員在第一次遇到R時(shí)會(huì)發(fā)現(xiàn)R有點(diǎn)混亂。 如果你有一個(gè)專門(mén)的R開(kāi)發(fā)人員小組,那么使用與TensorFlow,Keras或H2O的集成進(jìn)行研究,原型設(shè)計(jì)和實(shí)驗(yàn)是有意義的,但由于性能和操作問(wèn)題,我不愿意推薦R用于生產(chǎn)用途 。 雖然您可以編寫(xiě)可以部署在生產(chǎn)服務(wù)器上的高性能R代碼,但是使用該R原型并使用Java或Python重新編寫(xiě)它幾乎肯定會(huì)更容易。 二、其它AI編程當(dāng)然,Python,Java,C/C++,JavaScript和R并不是唯一可用于AI編程的語(yǔ)言。 讓我們來(lái)看看其它三種編程語(yǔ)言,這些語(yǔ)言并沒(méi)有完全進(jìn)入我們的前五——二上升,一下降。 1.Lua 幾年前,Lua在人工智能領(lǐng)域處于領(lǐng)先地位。 使用Torch框架,Lua是最流行的深度學(xué)習(xí)開(kāi)發(fā)語(yǔ)言之一,你仍然會(huì)在GitHub上遇到很多歷史深度學(xué)習(xí)工作,用Lua/Torch定義模型。 我認(rèn)為,為了研究和查看人們以前的工作,熟悉Lua是個(gè)好主意。 但隨著TensorFlow和PyTorch這樣的框架的到來(lái),Lua的使用已大幅減少。 2.Julia Julia是一種高性能的編程語(yǔ)言,專注于數(shù)值計(jì)算,這使得它非常適合“數(shù)學(xué)繁重”的AI世界。 雖然現(xiàn)在不是那種流行的語(yǔ)言選擇,但像TensorFlow.jl和Mocha(受Caffe影響很大)這樣的包裝器提供了良好的深度學(xué)習(xí)支持。 如果你不介意那里還沒(méi)有一個(gè)龐大的生態(tài)系統(tǒng),但是希望從其專注于使高性能計(jì)算變得容易和迅速的過(guò)程中獲益,這是個(gè)不錯(cuò)的選擇。 3.Swift 正如我們要推出的那樣,LLVM編譯器和Swift編程語(yǔ)言的創(chuàng)建者Chris Lattner宣布推出Swift for TensorFlow,該項(xiàng)目承諾將Python提供的易用性與速度和靜態(tài)類型檢查相結(jié)合的編譯型語(yǔ)言。 作為獎(jiǎng)勵(lì),Swift for TensorFlow還允許您導(dǎo)入Python庫(kù)(如NumPy)并在Swift代碼中使用它們,就像使用任何其他庫(kù)一樣。 現(xiàn)在,Swift for Tensorflow目前處于開(kāi)發(fā)的早期階段,但是能夠編寫(xiě)現(xiàn)代編程結(jié)構(gòu)并獲得速度和安全性的編譯時(shí)保證,確實(shí)是一個(gè)誘人的前景。 即使你還沒(méi)出去學(xué)習(xí) Swift ,我也建議你留意這個(gè)項(xiàng)目。 結(jié)論未來(lái)已來(lái),作為在IT界生根發(fā)芽的你,2019,你準(zhǔn)備好了吧? 立足現(xiàn)在,面向未來(lái),投身到AI世界,去創(chuàng)造你想往的美好未來(lái)吧! |
|
來(lái)自: niudp > 《機(jī)器學(xué)習(xí)》