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