Programmering

6 bedste programmeringssprog til AI-udvikling

AI (kunstig intelligens) åbner en verden af ​​muligheder for applikationsudviklere. Ved at drage fordel af maskinlæring eller dyb læring kan du producere langt bedre brugerprofiler, personalisering og anbefalinger eller inkorporere smartere søgning, en stemmegrænseflade eller intelligent hjælp eller forbedre din app på et antal andre måder. Du kan endda oprette applikationer, der ser, hører og reagerer på situationer, du aldrig havde forventet.

Hvilket programmeringssprog skal du lære at dykke dybden af ​​AI? Du vil naturligvis have et sprog med mange gode maskinlæring og dyb læringsbiblioteker. Det skal også have god runtime-ydeevne, god værktøjsstøtte, et stort samfund af programmører og et sundt økosystem med understøttende pakker. Det er en lang liste med krav, men der er stadig masser af gode muligheder.

Her er mine valg til de seks bedste programmeringssprog til AI-udvikling sammen med to hæderlige omtaler. Nogle af disse sprog stiger, mens andre glider. Atter andre behøver du kun at vide om, hvis du er interesseret i historisk dyb læringsarkitekturer og applikationer. Lad os se, hvordan de alle stabler op.

Python

På nummer et er det stadig Python. Hvordan kunne det være noget andet, virkelig? Mens der er vanvittige ting ved Python, hvis du laver AI-arbejde, vil du næsten helt sikkert bruge Python på et eller andet tidspunkt. Og nogle af de uslebne pletter har glattet lidt ud.

Efterhånden som vi går ind i 2020, bliver spørgsmålet om Python 2.x versus Python 3.x meget, da næsten alle større biblioteker understøtter Python 3.x og dropper Python 2.x-support, så snart de overhovedet kan. Med andre ord kan du endelig drage fordel af alle de nye sprogfunktioner for alvor.

Og mens Pythons mareridt om emballage - hvor hver anden løsning brydes på en lidt anden måde - stadig er til stede, kan du bruge Anaconda omkring 95% af tiden og ikke bekymre dig om ting for meget. Alligevel ville det være rart, hvis Python-verdenen ville løse dette mangeårige problem en gang for alle.

Når det er sagt, er matematik- og statistikbibliotekerne tilgængelige i Python stort set uden sidestykke på andre sprog. NumPy er blevet så allestedsnærværende, at det næsten er en standard API til tensoroperationer, og Pandas bringer R's kraftfulde og fleksible datarammer til Python. Til naturlig sprogbehandling (NLP) har du den ærværdige NLTK og den lynhurtige SpaCy. Til maskinindlæring er der den kamp-testede Scikit-læring. Og når det kommer til dyb læring, er alle de nuværende biblioteker (TensorFlow, PyTorch, Chainer, Apache MXNet, Theano osv.) Effektivt Python-first-projekter.

Hvis du læser banebrydende dyb læringsforskning om arXiv, vil du finde de fleste undersøgelser, der tilbyder kildekode, gør det i Python. Så er der de andre dele af Python-økosystemet. Mens IPython er blevet Jupyter Notebook og mindre Python-centreret, vil du stadig finde ud af, at de fleste Jupyter Notebook-brugere, og de fleste af de notebooks, der deles online, bruger Python. Hvad angår implementering af modeller, betyder fremkomsten af ​​mikroservicearkitekturer og teknologier som Seldon Core, at det er meget let at implementere Python-modeller i produktion i disse dage.

Der er ingen vej omkring det. Python er sproget i spidsen for AI-forskning, det du finder de mest maskinindlærings- og dybdelæringsrammer til, og det som næsten alle i AI-verdenen taler om. Af disse grunde er Python først blandt AI-programmeringssprog, på trods af at din forfatter forbander problemerne med det hvide rum mindst en gang om dagen.

Relateret video: Maskinindlæring og AI-dechifreret

Ved at bryde igennem hype omkring maskinlæring og kunstig intelligens taler vores panel gennem definitionerne og implikationerne af teknologien.

C ++

C ++ er sandsynligvis ikke dit første valg, når du udvikler en AI-applikation, men når du har brug for at vride hver sidste bit af ydeevnen fra systemet - et scenarie, der bliver mere almindeligt, da dyb læring kommer til kanten, og du skal køre dine modeller på ressourcebegrænsede systemer - det er tid til at træde tilbage i den frygtindgydende verden af ​​markører igen.

Heldigvis kan moderne C ++ være behageligt at skrive (ærligt!). Du har et valg af tilgange. Du kan enten dykke ned i bunden af ​​stakken ved hjælp af biblioteker som Nvidias CUDA til at skrive din egen kode, der kører direkte på din GPU, eller du kan bruge TensorFlow eller PyTorch for at få adgang til fleksible API'er på højt niveau. Både PyTorch og TensorFlow giver dig mulighed for at indlæse modeller, der er genereret i Python (eller PyTorch's TorchScript-undersæt af Python) og køre dem lige i en C ++ runtime, så du kommer tættere på det nøgne metal til produktion, mens du bevarer fleksibiliteten i udviklingen.

Kort sagt bliver C ++ en kritisk del af værktøjssættet, da AI-applikationer spredes på tværs af alle enheder fra det mindste integrerede system til store klynger. AI ved kanten betyder, at det ikke længere er nok til at være nøjagtig; du skal være god og hurtig.

Java og andre JVM-sprog

JVM-sprogfamilien (Java, Scala, Kotlin, Clojure osv.) Er fortsat et godt valg til udvikling af AI-applikationer. Du har et væld af biblioteker tilgængelige til alle dele af rørledningen, hvad enten det er naturlig sprogbehandling (CoreNLP), tensoroperationer (ND4J) eller en komplet GPU-accelereret dyb læringsstak (DL4J). Derudover får du nem adgang til big data-platforme som Apache Spark og Apache Hadoop.

Java er lingua franca for de fleste virksomheder, og med de nye sprogkonstruktioner, der er tilgængelige i Java 8 og senere versioner, er det ikke den hadefulde oplevelse, som mange af os husker at skrive Java-kode. At skrive en AI-applikation i Java kan føles en kedelig berøring, men det kan få jobbet gjort - og du kan bruge al din eksisterende Java-infrastruktur til udvikling, implementering og overvågning.

JavaScript

Det er usandsynligt, at du lærer JavaScript udelukkende til at skrive AI-applikationer, men Googles TensorFlow.js fortsætter med at forbedre og tilbyde en spændende måde at distribuere dine Keras- og TensorFlow-modeller til din browser eller gennem Node.js ved hjælp af WebGL til GPU-accelererede beregninger.

En ting, vi ikke rigtig har set siden lanceringen af ​​TensorFlow.js, er imidlertid en enorm tilstrømning af JavaScript-udviklere, der oversvømmer i AI-rummet. Jeg tror, ​​det kan skyldes, at det omgivende JavaScript-økosystem ikke har dybden af ​​tilgængelige biblioteker sammenlignet med sprog som Python.

Derudover er der på serversiden ikke rigtig meget af en fordel ved at implementere modeller med Node.js i modsætning til en af ​​Python-indstillingerne, så vi kan se, at JavaScript-baserede AI-applikationer forbliver hovedsageligt browserbaserede i den nærmeste fremtid. Men det skaber stadig masser af interessante muligheder for sjov som Emoji Scavenger Hunt.

Hurtig

I sidste års version af denne artikel nævnte jeg, at Swift var et sprog at holde øje med. I år bryder det ind i min top seks. Hvad skete der? Swift For TensorFlow. En fuldt skrevet, bundfri binding af de nyeste og bedste funktioner i TensorFlow og mørk magi, der giver dig mulighed for at importere Python-biblioteker, som om du i første omgang brugte Python.

Fastai-teamet arbejder på en Swift-version af deres populære bibliotek, og vi har lovet en masse yderligere optimeringer i generering og kørsel af modeller med flytning af en masse tensorsmarts i LLVM-kompilatoren. Er det klar til produktion lige nu? Ikke rigtig, men det kan faktisk vise vejen til den næste generation af dyb læringsudvikling, så du bør bestemt undersøge, hvad der sker med Swift.

R sprog

R kommer ind nederst på vores liste, og den trender nedad. R er det sprog, som dataforskere elsker. Andre programmører finder dog ofte, at R er lidt forvirrende på grund af sin dataframe-centrerede tilgang. Hvis du har en dedikeret gruppe af R-udviklere, kan det være fornuftigt at bruge integrationerne med TensorFlow, Keras eller H2O til forskning, prototyper og eksperimenter, men jeg tøver med at anbefale R til produktionsbrug eller til udvikling af greenfield på grund af præstationer og operationelle bekymringer. Mens du kan skrive performant R-kode, der kan implementeres på produktionsservere, vil det næsten helt sikkert være lettere at tage den R-prototype og genkode den i Java eller Python.

Andre AI-programmeringsmuligheder

Selvfølgelig er Python, C ++, Java, JavaScript, Swift og R ikke de eneste tilgængelige sprog til AI-programmering. Her er yderligere to programmeringssprog, som du måske synes er interessante eller nyttige, selvom jeg ikke betragter dem som topprioriteter for læring.

Lua

For et par år siden kørte Lua højt i verdenen af ​​kunstig intelligens på grund af Torch-rammen, et af de mest populære maskinlæringsbiblioteker til både forsknings- og produktionsbehov. Hvis du dykker ned i historien om dyb læringsmodeller, finder du ofte rigelige referencer til Torch og masser af Lua-kildekode i gamle GitHub-arkiver.

Til det formål kan det være nyttigt at have en fungerende viden om Torch API, som ikke er for langt væk fra PyTorchs grundlæggende API. Men hvis du, som de fleste af os, virkelig ikke behøver at lave en masse historisk forskning til dine applikationer, kan du sandsynligvis klare dig uden at skulle binde hovedet omkring Luas små finurligheder.

Julia

Julia er et højtydende programmeringssprog, der er fokuseret på numerisk databehandling, hvilket gør det til en god pasform i den matematiske tunge verden af ​​AI. Selvom det ikke er så populært som sprogvalg lige nu, giver indpakninger som TensorFlow.jl og Mocha (stærkt påvirket af Caffe) god dyb læringsstøtte. Hvis du ikke har noget imod det relativt lille økosystem, og du vil drage fordel af Julias fokus på at gøre højtydende beregninger let og hurtig, så er Julia sandsynligvis værd at se på.