Programiranje

6 najboljših programskih jezikov za razvoj umetne inteligence

AI (umetna inteligenca) odpira svet možnosti za razvijalce aplikacij. Z izkoriščanjem strojnega učenja ali globokega učenja lahko ustvarite veliko boljše uporabniške profile, personalizacijo in priporočila ali vključite pametnejše iskanje, glasovni vmesnik ali inteligentno pomoč ali izboljšate aplikacijo na številne druge načine. Lahko celo sestavite aplikacije, ki vidijo, slišijo in reagirajo na situacije, ki jih nikoli niste predvideli.

Kateri programski jezik bi se morali naučiti, da se izognete globinam umetne inteligence? Seveda boste želeli jezik z veliko dobrimi knjižnicami za strojno učenje in globoko učenje. Prav tako bi moral vsebovati dobro izvedbo, dobro podporo orodjem, veliko skupnost programerjev in zdrav ekosistem podpornih paketov. To je dolg seznam zahtev, vendar je še vedno veliko dobrih možnosti.

Tukaj je moj izbor šestih najboljših programskih jezikov za razvoj umetne inteligence, skupaj z dvema častnima omembama. Nekateri od teh jezikov so v porastu, drugi pa drsijo. Spet druge morate vedeti le, če vas zanimajo zgodovinske arhitekture in aplikacije globokega učenja. Poglejmo, kako se vsi zložijo.

Python

Na prvem mestu je še vedno Python. Kako bi lahko bilo kaj drugega, res? Medtem ko obstajajo nore stvari glede Pythona, če opravljate delo z umetno inteligenco, boste v določenem trenutku skoraj zagotovo uporabljali Python. In nekatere grobe lise so se nekoliko zgladile.

Ko gremo v leto 2020, se izdaja Pythona 2.x v primerjavi s Pythonom 3.x postaja sporna, saj skoraj vsaka večja knjižnica podpira Python 3.x in opusti podporo Python 2.x takoj, ko je to mogoče. Z drugimi besedami, končno lahko resnično izkoristite vse nove jezikovne funkcije.

In čeprav so Pythonove nočne more - kjer se vsaka drugačna rešitev zlomi na nekoliko drugačen način - še vedno prisotne, lahko Anacondo uporabljate približno 95% časa in se ne obremenjujete preveč. Kljub temu bi bilo lepo, če bi svet Pythona to dolgoletno težavo odpravil enkrat za vselej.

Kljub temu so knjižnice matematike in statistike, ki so na voljo v Pythonu, v drugih jezikih precej neprimerljive. NumPy je postal tako povsod prisoten, da je skoraj standardni API za tenzorske operacije, Pandas pa Pythonu prinaša zmogljive in prilagodljive podatkovne okvire R-ja. Za obdelavo naravnega jezika (NLP) imate častitljivi NLTK in izjemno hiter SpaCy. Za strojno učenje obstaja preizkušen Scikit-learn. In ko gre za globoko učenje, so vse sedanje knjižnice (TensorFlow, PyTorch, Chainer, Apache MXNet, Theano itd.) Dejansko projekti, ki so prvi na Pythonu.

Če berete vrhunske raziskave o globokem učenju na arXiv, potem boste našli večino študij, ki ponujajo izvorno kodo, v Pythonu. Potem so tu še drugi deli ekosistema Python. Medtem ko je IPython postal Jupyter Notebook in manj osredotočen na Python, boste še vedno ugotovili, da večina uporabnikov Jupyter Notebook in večina prenosnih računalnikov v spletu uporablja Python. Kar zadeva uvajanje modelov, pojav arhitektur in tehnologij mikro storitev, kot je Seldon Core, pomeni, da je dandanes zelo enostavno uvesti modele Python v proizvodnjo.

Ni ga mogoče obiti. Python je jezik, ki je v ospredju raziskav umetne inteligence, tisti, za katerega boste našli največ okvirov strojnega učenja in poglobljenega učenja ter tisti, ki ga govorijo skoraj vsi v svetu umetne inteligence. Iz teh razlogov je Python prvi med programskimi jeziki umetne inteligence, kljub temu da vaš avtor vsaj enkrat na dan preklinja težave s presledki.

Sorodni video: Strojno učenje in dešifrirana umetna inteligenca

Prebrskajoč hrup okoli strojnega učenja in umetne inteligence, naš panel govori o definicijah in posledicah tehnologije.

C ++

C ++ verjetno ne bo vaša prva izbira pri razvoju aplikacije AI, toda ko morate iz sistema iztisniti vsak zadnji del zmogljivosti - scenarij, ki postane bolj pogost, ko globoko učenje pride na rob in morate svoje modele zagnati naprej. sistemi z omejenimi viri - čas je, da še enkrat stopimo nazaj v grozljiv svet kazalcev.

Na srečo je sodoben C ++ lahko prijeten za pisanje (iskreno!). Imate izbiro pristopov. Lahko se potopite na dnu sklada z uporabo knjižnic, kot je Nvidijina CUDA, da napišete svojo kodo, ki se izvaja neposredno na vašem GPU, ali pa uporabite TensorFlow ali PyTorch za dostop do prilagodljivih API-jev na visoki ravni. Tako PyTorch kot TensorFlow omogočata nalaganje modelov, ustvarjenih v Pythonu (ali PyTorchovi TorchScript podmnožici Pythona), in jih zaženete naravnost v času izvajanja C ++, s čimer se približate goli kovini za proizvodnjo, hkrati pa ohranite prilagodljivost pri razvoju.

Skratka, C ++ postane ključni del orodja, saj se aplikacije umetne inteligence širijo v vseh napravah, od najmanjšega vdelanega sistema do ogromnih skupin. AI na robu pomeni, da ni več dovolj le za natančnost; moraš biti dober in hitro.

Java in drugi jeziki JVM

Družina jezikov JVM (Java, Scala, Kotlin, Clojure itd.) Je še naprej odlična izbira za razvoj aplikacij AI. Na voljo imate obilo knjižnic za vse dele plinovoda, ne glede na to, ali gre za obdelavo naravnega jezika (CoreNLP), tenzorske operacije (ND4J) ali popoln niz globokega učenja s pomočjo GPU (DL4J). Poleg tega imate enostaven dostop do velikih podatkovnih platform, kot sta Apache Spark in Apache Hadoop.

Java je jezikovna franka večine podjetij in z novimi jezikovnimi konstrukcijami, ki so na voljo v Javi 8 in novejših različicah, pisanje kode Java ni sovražna izkušnja, ki si jo mnogi zapomnijo. Pisanje aplikacije AI v Javi se morda zdi dolgočasno, vendar lahko opravi svoje delo - in vso obstoječo infrastrukturo Java lahko uporabite za razvoj, uvajanje in spremljanje.

JavaScript

Težko se boste naučili JavaScripta zgolj za pisanje aplikacij AI, vendar se Googlov TensorFlow.js še naprej izboljšuje in ponuja zanimiv način uvajanja modelov Keras in TensorFlow v brskalnik ali prek Node.js z uporabo WebGL za izračune, pospešene z GPU.

Vendar pa od uvedbe TensorFlow.js ene stvari v resnici nismo videli, je ogromen naval razvijalcev JavaScript, ki se preplavijo v prostor AI. Mislim, da je to morda posledica okoliškega ekosistema JavaScript, ki nima globine razpoložljivih knjižnic v primerjavi z jeziki, kot je Python.

Poleg tega na strani strežnika v resnici ni veliko prednosti uvajanja modelov z Node.js v primerjavi z eno od možnosti Python, zato bomo morda videli, da bodo aplikacije AI, ki temeljijo na JavaScript, v bližnji prihodnosti še naprej temeljile predvsem na brskalnikih. A to vseeno ustvarja obilo zanimivih priložnosti za zabavo, kot je Emoji Scavenger Hunt.

Hitro

V lanski različici tega članka sem omenil, da je bil Swift jezik, na katerega je bilo treba paziti. Letos se uvrsti med mojih šest najboljših. Kaj se je zgodilo? Swift za TensorFlow. Popolnoma tipizirana vezava najnovejših in največjih lastnosti TensorFlowa in temne magije, ki vam omogoča uvoz knjižnic Python, kot da bi najprej uporabljali Python.

Ekipa Fastai dela na različici Swift svoje priljubljene knjižnice in obljubili smo veliko nadaljnjih optimizacij pri ustvarjanju in zagonu modelov s premikanjem veliko tenzorjev pametnega v prevajalnik LLVM. Je proizvodnja zdaj pripravljena? Ne res, vendar morda res kaže na pot do naslednje generacije razvoja globokega učenja, zato morate vsekakor raziskati, kaj se dogaja s Swiftom.

R jezik

R je na dnu našega seznama in se giblje navzdol. R je jezik, ki ga imajo radi znanstveniki. Vendar pa se drugi programerji zaradi njegovega pristopa, usmerjenega v podatkovne okvire, pogosto zmedejo. Če imate namensko skupino razvijalcev R, potem je smiselno integracije s TensorFlow, Keras ali H2O uporabiti za raziskave, izdelavo prototipov in eksperimentiranje, vendar oklevam, da priporočam R za proizvodno uporabo ali za razvoj na terenu zaradi zaskrbljenost glede uspešnosti in delovanja. Čeprav lahko napišete zmogljivo kodo R, ki jo lahko namestite na produkcijske strežnike, bo skoraj zagotovo lažje vzeti ta prototip R in ga prekodirati v Javi ali Pythonu.

Druge možnosti programiranja AI

Seveda Python, C ++, Java, JavaScript, Swift in R niso edini jeziki, ki so na voljo za programiranje umetne inteligence. Tu sta še dva programska jezika, ki bi se vam morda zdela zanimiva ali koristna, čeprav ju ne bi štel med glavne prioritete pri učenju.

Lua

Pred nekaj leti se je Lua zaradi okvira Torch, ene najbolj priljubljenih knjižnic strojnega učenja za raziskovalne in proizvodne potrebe, peljala visoko v svet umetne inteligence. Če se poglobite v zgodovino modelov globokega učenja, boste v starih skladiščih GitHub pogosto našli obilne sklice na Torch in veliko izvorne kode Lua.

V ta namen bi lahko bilo koristno imeti delujoče znanje o Torch API, ki ni preveč oddaljeno od osnovnega API-ja PyTorch. Če pa vam, tako kot večini od nas, res ni treba opraviti veliko zgodovinskih raziskav za svoje aplikacije, se verjetno lahko znajdete, ne da bi si morali oviti glavo okoli majhnih domislic Lua.

Julia

Julia je visoko zmogljiv programski jezik, ki je osredotočen na numerično računalništvo, zaradi česar se dobro prilega matematičnemu svetu umetne inteligence. Čeprav trenutno ni vse tako priljubljeno kot izbira jezika, ovitki, kot sta TensorFlow.jl in Mocha (na katerega močno vpliva Caffe), nudijo dobro podporo za globoko učenje. Če vas ne moti sorazmerno majhen ekosistem in želite izkoristiti Julijino osredotočenost na lažje in hitrejše visokozmogljive izračune, potem je verjetno vredna ogleda Julia.

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