適用于人工智能開發(fā)的語言有哪一些
近年來,人工智能(AI)正在不斷釋放科技革命和產(chǎn)業(yè)變革積蓄的巨大能量,深刻改變著人類生產(chǎn)生活方式和思維方式,推動(dòng)社會(huì)生產(chǎn)力整體躍升。什么是AI?它將為我們帶來哪些價(jià)值?我們陸續(xù)為大家分享AI科普系列文章。后續(xù)更新敬請(qǐng)關(guān)注!
人工智能技術(shù)的提升不僅為企業(yè)的運(yùn)營(yíng)帶來了效率,而且為人民的生活帶來了便利。迄今為止,人工智能已實(shí)現(xiàn)了生物識(shí)別智能、自動(dòng)駕駛汽車和人臉識(shí)別等項(xiàng)目。
像大多數(shù)軟件應(yīng)用程序的開發(fā)一樣,開發(fā)人員也在使用多種語言來編寫人工智能項(xiàng)目,但目前還沒有任何一種完美的編程語言可以完全速配人工智能項(xiàng)目。
編程語言的選擇往往取決于對(duì)人工智能應(yīng)用程序的期望功能。關(guān)于最佳人工智能編程語言的“爭(zhēng)論”從未停止,今天我們將為大家分享最適合人工智能開發(fā)的5種常用編程語言,看一看你會(huì)哪一個(gè)呢?
01、Python
第一名毫無疑問是Python。盡管Python的某些特性在不同程度上有所缺陷。(whitespace、Python 2.x 和 Python 3.x 之間的巨大差異、五種不同的包機(jī)制都在不同程度上有缺陷)但如果你正在從事AI工作,你必定會(huì)在某些時(shí)候用到Python。Python中可用庫的數(shù)量是其他語言所無法企及的。
作為Python的一個(gè)擴(kuò)展程序庫,NumPy的重要性和普遍性日趨增強(qiáng),以至于幾乎成為了張量運(yùn)算的標(biāo)準(zhǔn)API?;贜umPy,Pandas(該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的)可將R強(qiáng)大而靈活的數(shù)據(jù)框帶入Python。對(duì)于自然語言處理(Natural Language Processing,簡(jiǎn)稱NLP),你還可以使用久負(fù)盛名的NLTK和快如閃電的SpaCy。
對(duì)于機(jī)器學(xué)習(xí),有經(jīng)過實(shí)戰(zhàn)檢驗(yàn)的Scikit-learn。當(dāng)談到深度學(xué)習(xí)時(shí),當(dāng)前所有的庫(TensorFlow、PyTorch、Chainer、Apache MXNet、Theano 等)都是在Python上首先實(shí)現(xiàn)的項(xiàng)目。
(在LiveEdu上,一位德國(guó)的AI開發(fā)者教大家如何使用Python開發(fā)兩個(gè)簡(jiǎn)單的機(jī)器學(xué)習(xí)模型。)
Python是人工智能研究的前沿語言,它是擁有最多機(jī)器學(xué)習(xí)和深度學(xué)習(xí)框架的語言,也是目前AI研究者幾乎都掌握的一種語言。
02、JAVA和相關(guān)語言
JVM系列語言(Java、Scala、Kotlin、Clojure等)也是AI應(yīng)用開發(fā)的絕佳選擇。
無論是自然語言處理(CoreNLP)、張量運(yùn)算(ND4J)還是完整的 GPU加速深度學(xué)習(xí)堆棧(DL4J),你都可以使用大量的庫來管理流水線的各個(gè)部分。此外,你還可以輕松訪問Apache Spark和Apache Hadoop等大數(shù)據(jù)平臺(tái)。
Java是大多數(shù)企業(yè)的通用語言。Java8和Java9為我們提供了新的語言結(jié)構(gòu),這使得你在編寫Java代碼時(shí),其體驗(yàn)不再像過去那樣“糟糕”。
使用Java編寫人工智能應(yīng)用可能會(huì)略感枯燥,但它確實(shí)是你完成工作的好幫手,并且你可以基于所有現(xiàn)成的Java基礎(chǔ)架構(gòu)來開發(fā)、部署和監(jiān)視。
03、C/C++
在開發(fā)AI應(yīng)用時(shí),C/C++可能不會(huì)成為你的首選,但如果你在嵌入式的環(huán)境中工作,且無法承受Java虛擬機(jī)或Python解釋器所帶來的開銷,那么C/C++就是你最好的選擇。
你可以從下列方法中選擇一個(gè)最適合你的:
? 扎進(jìn)堆棧底部,使用CUDA等庫來編寫自己的代碼,這些代碼將直接在GPU上運(yùn)行;
? 你也可以使用TensorFlow或Caffe以訪問靈活的高級(jí)API。
當(dāng)然,后者還支持你導(dǎo)入數(shù)據(jù)科學(xué)家用Python寫的模型,然后以C/C++級(jí)別的速度在生產(chǎn)環(huán)境中運(yùn)行它們。
04、Java
Java是一種直譯式腳本語言,是一種動(dòng)態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型。
眾所周知,谷歌于2018年發(fā)布了TensorFlow.js。TensorFlow.js是一個(gè)開源的基于硬件加速的Java庫,用于訓(xùn)練和部署機(jī)器學(xué)習(xí)模型。
TensorFlow.js是一個(gè)WebGL加速庫,支持你在Web瀏覽器中訓(xùn)練和運(yùn)行機(jī)器學(xué)習(xí)模型。它還包括Keras API以及加載和使用在常規(guī)TensorFlow中訓(xùn)練過的模型的功能。這可能會(huì)吸引大量的JS開發(fā)者涌入AI領(lǐng)域。
雖然Java目前能夠訪問的機(jī)器學(xué)習(xí)庫,與其他語言相比有所局限,但在不久的將來,開發(fā)者在網(wǎng)頁中添加神經(jīng)網(wǎng)絡(luò)就和添加React組件或CSS屬性一樣簡(jiǎn)單。
為在各種環(huán)境中都盡可能獲得最好的計(jì)算性能,Tensorflow.js目前已經(jīng)實(shí)現(xiàn)了純Java或WebGL的客戶端,以及Nodejs服務(wù)器端三種后端計(jì)算環(huán)境。同時(shí),Tensorflow.js還支持對(duì)已有模型的再訓(xùn)練,幫助用戶定制符合自己業(yè)務(wù)需求的模型。
05、R語言
R在這份榜單中排名最末,且看上去將會(huì)越來越?jīng)]落。R是數(shù)據(jù)科學(xué)家較為喜歡的一種編程語言。但是,其他程序員在第一次接觸R時(shí)會(huì)感到有些困惑,因?yàn)樗捎昧艘詳?shù)據(jù)框?yàn)橹行牡姆椒ā?/p>
如果您有一組專門的R開發(fā)者,那么將R與TensorFlow、Keras或H2O搭配使用,進(jìn)行研究、原型設(shè)計(jì)和實(shí)驗(yàn)是有一定意義和價(jià)值的。
但基于性能和操作方面的考慮,這里不建議大家將R用于生產(chǎn)。
雖然你可以寫出能在生產(chǎn)服務(wù)器上部署的高性能R代碼,但將這種用R語言編寫的原型重新編碼為Java或Python應(yīng)該會(huì)更容易。
語言是與人工智能對(duì)話的基本條件,想要駕馭人工智能,我們還需要進(jìn)行不斷的磨練。以上的五種編程語言你掌握了幾種呢?不想成為未來世界的文盲就趕快學(xué)習(xí)和行動(dòng)起來吧!