Programmēšana

6 labākās programmēšanas valodas AI izstrādei

AI (mākslīgais intelekts) paver iespēju pasauli lietojumprogrammu izstrādātājiem. Izmantojot mašīnmācīšanās vai padziļinātas mācīšanās priekšrocības, jūs varētu izveidot daudz labākus lietotāju profilus, personalizēšanu un ieteikumus, vai arī iekļaut viedāku meklēšanu, balss saskarni vai inteliģentu palīdzību vai uzlabot savu lietotni citos veidos. Jūs pat varētu izveidot lietojumprogrammas, kas redz, dzird un reaģē uz situācijām, kuras nekad neesat gaidījis.

Kura programmēšanas valoda jums jāiemācās, lai izlaistu AI dziļumus? Jūs, protams, vēlēsities valodu ar daudzām labām mašīnmācīšanās un dziļu mācību bibliotēkām. Tam vajadzētu būt arī ar labu izpildlaika veiktspēju, labu rīku atbalstu, lielu programmētāju kopienu un veselīgu atbalsta paku ekosistēmu. Tas ir garš prasību saraksts, taču joprojām ir daudz labu iespēju.

Šeit ir manas izvēles par sešām labākajām programmēšanas valodām AI attīstībai, kā arī divi godājami pieminējumi. Dažas no šīm valodām pieaug, bet citas slīd. Vēl citi, par kuriem jums jāzina tikai tad, ja jūs interesē vēsturiskas dziļas mācīšanās arhitektūras un lietojumprogrammas. Apskatīsim, kā viņi visi sakrauj.

Python

Pirmajā vietā tas joprojām ir Python. Kā tas tiešām varētu būt kas cits? Kaut arī par Python ir satraucošas lietas, ja jūs strādājat ar AI darbu, jūs gandrīz noteikti kādā brīdī izmantosiet Python. Un daži no raupjiem plankumiem ir nedaudz izlīdzinājušies.

Kad mēs ejam 2020. gadā, jautājums par Python 2.x pret Python 3.x kļūst aktuāls, jo gandrīz katra lielā bibliotēka atbalsta Python 3.x un atsakās no Python 2.x atbalsta, tiklīdz viņi to var. Citiem vārdiem sakot, jūs beidzot varat nopietni izmantot visas jaunās valodas iespējas.

Un, lai gan joprojām pastāv Python iepakojuma murgi - kur katrs cits risinājums ir salauzts nedaudz savādāk - jūs varat izmantot Anaconda apmēram 95% gadījumu un pārāk neuztraukties par lietām. Tomēr būtu jauki, ja Python pasaule vienreiz un uz visiem laikiem atrisinātu šo ilgstošo problēmu.

Tas nozīmē, ka matemātikas un statistikas bibliotēkas, kas pieejamas Python, ir diezgan daudz nepārspējamas citās valodās. NumPy ir kļuvis tik visuresošs, ka tas ir gandrīz standarta tenzora operāciju API, un Pandas nodrošina R spēcīgu un elastīgu datu ietvaru Python. Dabas valodas apstrādei (NLP) jums ir cienījams NLTK un ļoti ātrs SpaCy. Mašīnmācībai ir kaujas pārbaudītais Scikit-learn. Runājot par padziļinātu mācīšanos, visas pašreizējās bibliotēkas (TensorFlow, PyTorch, Chainer, Apache MXNet, Theano uc) faktiski ir pirmie Python projekti.

Ja lasāt progresīvus padziļinātas izglītības pētījumus par arXiv, jūs atradīsit, ka lielākā daļa pētījumu, kas piedāvā avota kodu, to dara Python. Tad ir citas Python ekosistēmas daļas. Kaut arī IPython ir kļuvis par Jupyter Notebook un mazāk orientēts uz Python, jūs joprojām atradīsit, ka lielākā daļa Jupyter Notebook lietotāju un lielākā daļa tiešsaistē koplietoto piezīmju grāmatiņu izmanto Python. Kas attiecas uz modeļu ieviešanu, mikropakalpojumu arhitektūru un tādu tehnoloģiju kā Seldon Core parādīšanās nozīmē, ka mūsdienās ir ļoti viegli izmantot Python modeļus ražošanā.

To nevar apiet. Python ir valoda AI pētniecības priekšgalā, tā, kurai atradīsit visvairāk mašīnmācīšanās un visdziļākās mācīšanās ietvarus, un tā, kuru runā gandrīz visi AI pasaulē. Šo iemeslu dēļ Python ir pirmais starp AI programmēšanas valodām, neskatoties uz to, ka jūsu autors vismaz reizi dienā lamājas ar atstarpēm saistītās problēmas.

Saistītais video: mašīnmācība un AI atšifrēts

Pārvarot ažiotāžu ap mašīnmācīšanos un mākslīgo intelektu, mūsu panelis pārrunā tehnoloģijas definīcijas un sekas.

C ++

C ++, visticamāk, nebūs jūsu pirmā izvēle, izstrādājot AI lietojumprogrammu, taču, kad jums ir jāizspiež katrs pēdējais sistēmas sniegums - scenārijs, kas kļūst arvien izplatītāks, kad padziļināta mācīšanās nāk uz priekšu un jums jāpalaiž modeļi resursu ierobežotas sistēmas - ir pienācis laiks vēlreiz atgriezties drausmīgajā rādītāju pasaulē.

Par laimi, mūsdienu C ++ var būt patīkami rakstīt (godīgi!). Jums ir pieeja. Varat vai nu ienirt kaudzes apakšā, izmantojot tādas bibliotēkas kā Nvidia’s CUDA, lai ierakstītu savu kodu, kas darbojas tieši uz jūsu GPU, vai arī varat izmantot TensorFlow vai PyTorch, lai iegūtu piekļuvi elastīgām augsta līmeņa API. Gan PyTorch, gan TensorFlow ļauj ielādēt modeļus, kas ģenerēti Python (vai PyTorch's TorchScript Python apakškopā), un palaist tos taisni C ++ izpildlaika laikā, tuvojoties ražošanai paredzētajam metālam, vienlaikus saglabājot izstrādes elastību.

Īsāk sakot, C ++ kļūst par instrumentu komplekta kritisko daļu, jo AI lietojumprogrammas izplatās visās ierīcēs, sākot no mazākās iegultās sistēmas līdz milzīgām kopām. AI pie malas nozīmē, ka ar to vairs nepietiek tikai ar precizitāti; jums jābūt labam un ātri.

Java un citas JVM valodas

JVM valodu saime (Java, Scala, Kotlin, Clojure utt.) Joprojām ir lieliska izvēle AI lietojumprogrammu izstrādei. Jums ir pieejamas daudzas bibliotēkas visām cauruļvada daļām, neatkarīgi no tā, vai tā ir dabiskās valodas apstrāde (CoreNLP), tenzora operācijas (ND4J) vai pilna GPU paātrināta dziļā mācību kaudze (DL4J). Turklāt jūs viegli piekļūstat lielo datu platformām, piemēram, Apache Spark un Apache Hadoop.

Java ir lielākās daļas uzņēmumu lingua franca, un līdz ar jauno valodu konstrukcijām, kas pieejamas Java 8 un jaunākās versijās, Java koda rakstīšana nav tā naidpilnā pieredze, ko daudzi no mums atceras. Rakstot AI lietojumprogrammu Java, var šķist, ka tas ir garlaicīgi, taču tas var paveikt darbu - un jūs varat izmantot visu esošo Java infrastruktūru izstrādei, izvietošanai un uzraudzībai.

JavaScript

Maz ticams, ka jūs apgūsiet JavaScript tikai AI lietojumprogrammu rakstīšanai, taču Google TensorFlow.js turpina pilnveidoties un piedāvā intriģējošu veidu, kā jūsu Keras un TensorFlow modeļus izvietot pārlūkprogrammā vai caur Node.js, izmantojot WebGL GPU paātrinātiem aprēķiniem.

Tomēr viena lieta, ko mēs īsti neesam redzējuši kopš TensorFlow.js izlaišanas, ir milzīgs JavaScript izstrādātāju pieplūdums, kas ieplūst AI telpā. Es domāju, ka tas varētu būt saistīts ar to, ka apkārtējai JavaScript ekosistēmai nav pieejamo bibliotēku dziļuma salīdzinājumā ar tādām valodām kā Python.

Turklāt servera pusē modeļu izvietošanai ar Node.js nav daudz priekšrocību, salīdzinot ar vienu no Python opcijām, tāpēc mēs varam redzēt, ka tuvākajā nākotnē uz Java balstītas AI lietojumprogrammas galvenokārt paliek pārlūkprogrammas. Bet tas joprojām rada daudz interesantu iespēju izklaidēties, piemēram, Emoji Scavenger Hunt.

Ātra

Šī raksta pagājušā gada versijā es pieminēju, ka Swift bija valoda, kurai vajadzētu sekot. Šogad tas iekļūst manā labāko sešiniekā. Kas notika? Ātrs TensorFlow. TensorFlow jaunāko un lielāko iezīmju pilnībā iespiests, bez iespiestības un tumšās burvju saites, kas ļauj importēt Python bibliotēkas tā, it kā jūs vispirms izmantotu Python.

Fastai komanda strādā pie savas populārās bibliotēkas Swift versijas, un mums tiek solīts daudz papildu optimizāciju modeļu ģenerēšanai un darbināšanai, pārvietojot daudz tenzora viedo uz LLVM kompilatoru. Vai tā šobrīd ir gatava? Nav īsti, bet tas patiešām var norādīt uz nākamās paaudzes dziļu mācīšanās attīstību, tāpēc jums noteikti vajadzētu izpētīt, kas notiek ar Swift.

R valoda

R ir mūsu saraksta beigās, un tas virzās uz leju. R ir valoda, kuru mīl datu zinātnieki. Tomēr citi programmētāji bieži uzskata R nedaudz mulsinošu, jo tā ir orientēta uz datu ietvariem. Ja jums ir īpaša R izstrādātāju grupa, ir lietderīgi izmantot integrāciju ar TensorFlow, Keras vai H2O pētījumiem, prototipiem un eksperimentiem, taču es vilcinos ieteikt R produkcijas izmantošanai vai zaļo lauku attīstībai, jo veiktspēju un darbības problēmas. Lai gan jūs varat rakstīt izpildošo R kodu, kuru var izvietot ražošanas serveros, gandrīz noteikti būs vieglāk paņemt šo R prototipu un pārkodēt Java vai Python.

Citas AI programmēšanas iespējas

Protams, Python, C ++, Java, JavaScript, Swift un R nav vienīgās valodas, kas pieejamas AI programmēšanai. Šeit ir vēl divas programmēšanas valodas, kuras jums varētu šķist interesantas vai noderīgas, lai gan es tās neuzskatītu par galvenajām mācību prioritātēm.

Lua

Pirms dažiem gadiem Lua bija ļoti augstu mākslīgā intelekta pasaulē, pateicoties Torch ietvaram, kas ir viena no populārākajām mašīnmācīšanās bibliotēkām gan pētniecības, gan ražošanas vajadzībām. Ja jūs iedziļināties dziļo mācību modeļu vēsturē, vecajās GitHub krātuvēs bieži atradīsit daudz atsauču uz Torch un daudz Lua avota koda.

Šajā nolūkā var būt noderīgi iegūt zināšanas par Torch API, kas nav pārāk tālu no PyTorch pamata API. Tomēr, ja, tāpat kā lielākajai daļai no mums, jūsu lietojumprogrammām patiešām nav jāveic daudz vēsturisku pētījumu, jūs, iespējams, varat iztikt bez nepieciešamības aplikt galvu ap Lua mazajām dīvainībām.

Jūlija

Jūlija ir augstas veiktspējas programmēšanas valoda, kas ir vērsta uz skaitlisko skaitļošanu, kas padara to labi piemērotu AI matemātikas smagajā pasaulē. Lai gan tas pašlaik nav tik populārs kā valodas izvēle, tādi iesaiņotāji kā TensorFlow.jl un Mocha (ko lielā mērā ietekmē Caffe) nodrošina labu padziļinātu mācību atbalstu. Ja jums nav iebildumu par salīdzinoši mazo ekosistēmu un vēlaties gūt labumu no Džūlijas uzmanības pievēršanas augstas veiktspējas aprēķinu vienkāršošanai un ātrumam, tad Džūlija, iespējams, ir vērts apskatīt.

$config[zx-auto] not found$config[zx-overlay] not found