6 beste programmeertalen voor AI-ontwikkeling

AI (kunstmatige intelligentie) opent een wereld van mogelijkheden voor applicatieontwikkelaars. Door gebruik te maken van machine learning of deep learning, kunt u veel betere gebruikersprofielen, personalisatie en aanbevelingen produceren, of een slimmere zoekfunctie, een spraakinterface of intelligente assistentie gebruiken, of uw app op een aantal andere manieren verbeteren. U kunt zelfs applicaties bouwen die situaties zien, horen en erop reageren die u nooit had verwacht.

Welke programmeertaal moet je leren om de diepten van AI te doorgronden? U wilt natuurlijk een taal met veel goede machine learning en deep learning-bibliotheken. Het moet ook goede runtime-prestaties, goede tools-ondersteuning, een grote gemeenschap van programmeurs en een gezond ecosysteem van ondersteunende pakketten bieden. Dat is een lange lijst met vereisten, maar er zijn nog genoeg goede opties. 

Hier zijn mijn keuzes voor de zes beste programmeertalen voor AI-ontwikkeling, samen met twee eervolle vermeldingen. Sommige van deze talen zijn in opkomst, terwijl andere achteruitgaan. Weer andere die u alleen hoeft te kennen als u geïnteresseerd bent in historische deep learning-architecturen en -toepassingen. Laten we eens kijken hoe ze allemaal opstapelen. 

Python

Op nummer één is het nog steeds Python. Hoe kan het eigenlijk iets anders zijn? Hoewel er gekmakende dingen zijn aan Python, als je AI-werk doet, zul je vrijwel zeker Python ooit gebruiken. En sommige van de ruwe plekken zijn een beetje gladgestreken.

Nu we 2020 ingaan, wordt de kwestie van Python 2.x versus Python 3.x betwistbaar, aangezien bijna elke grote bibliotheek Python 3.x ondersteunt en Python 2.x-ondersteuning zo snel mogelijk laat vallen. Met andere woorden, u kunt eindelijk echt profiteren van alle nieuwe taalfuncties.

En hoewel Pythons nachtmerries op het gebied van verpakking - waarbij elke verschillende oplossing op een iets andere manier wordt verbroken - nog steeds aanwezig zijn, kun je Anaconda ongeveer 95% van de tijd gebruiken zonder je al te veel zorgen te maken. Toch zou het leuk zijn als de Python-wereld dit al lang bestaande probleem voor eens en voor altijd zou oplossen.

Dat gezegd hebbende, de wiskunde- en statistiekenbibliotheken die beschikbaar zijn in Python, zijn vrijwel ongeëvenaard in andere talen. NumPy is zo alomtegenwoordig geworden dat het bijna een standaard-API is voor tensorbewerkingen, en Pandas brengt de krachtige en flexibele dataframes van R naar Python. Voor natuurlijke taalverwerking (NLP) heb je de eerbiedwaardige NLTK en de razendsnelle SpaCy. Voor machine learning is er de beproefde Scikit-learn. En als het gaat om deep learning, zijn alle huidige bibliotheken (TensorFlow, PyTorch, Chainer, Apache MXNet, Theano, etc.) in feite Python-first-projecten.

Als u baanbrekend deep learning-onderzoek over arXiv leest, zult u zien dat de meeste onderzoeken die broncode aanbieden dit in Python doen. Dan zijn er de andere delen van het Python-ecosysteem. Hoewel IPython Jupyter Notebook is geworden, en minder Python-centrisch, zul je nog steeds merken dat de meeste Jupyter Notebook-gebruikers en de meeste notebooks die online worden gedeeld, Python gebruiken. Wat betreft het inzetten van modellen, betekent de komst van microservice-architecturen en technologieën zoals Seldon Core dat het tegenwoordig heel eenvoudig is om Python-modellen in productie te zetten.

Je kunt er niet omheen. Python is de taal die voorop loopt in AI-onderzoek, de taal waarvoor je de meeste machine learning- en deep learning-frameworks zult vinden, en degene die bijna iedereen in de AI-wereld spreekt. Om deze redenen is Python de eerste van de AI-programmeertalen, ondanks het feit dat uw auteur minstens één keer per dag de witruimtekwesties vervloekt.

Gerelateerde video: Machine learning en AI ontcijferd

Door de hype rond machine learning en kunstmatige intelligentie te doorbreken, bespreekt ons panel de definities en implicaties van de technologie.

C ++

Het is onwaarschijnlijk dat C ++ uw eerste keuze is bij het ontwikkelen van een AI-toepassing, maar wanneer u alle prestaties uit het systeem moet wringen - een scenario dat steeds gebruikelijker wordt naarmate deep learning naar de rand komt en u uw modellen moet laten draaien Systemen met beperkte middelen - het is tijd om weer een stap terug te doen in de angstaanjagende wereld van aanwijzingen.

Gelukkig kan modern C ++ prettig zijn om te schrijven (eerlijk!). U heeft de keuze uit verschillende benaderingen. Je kunt onderaan de stapel duiken en bibliotheken zoals Nvidia's CUDA gebruiken om je eigen code te schrijven die rechtstreeks op je GPU wordt uitgevoerd, of je kunt TensorFlow of PyTorch gebruiken om toegang te krijgen tot flexibele API's op hoog niveau. Zowel PyTorch als TensorFlow stellen je in staat om modellen te laden die zijn gegenereerd in Python (of PyTorch's TorchScript-subset van Python) en ze rechtstreeks uit te voeren in een C ++ -runtime, waardoor je dichter bij het bare metal komt voor productie met behoud van flexibiliteit in ontwikkeling.

Kortom, C ++ wordt een cruciaal onderdeel van de toolkit naarmate AI-applicaties zich verspreiden over alle apparaten, van het kleinste embedded systeem tot enorme clusters. AI aan de rand betekent dat het niet alleen meer voldoende is om nauwkeurig te zijn; je moet goed en snel zijn.

Java en andere JVM-talen

De JVM-talenfamilie (Java, Scala, Kotlin, Clojure, etc.) blijft een uitstekende keuze voor de ontwikkeling van AI-toepassingen. Je hebt een schat aan bibliotheken beschikbaar voor alle delen van de pijplijn, of het nu gaat om natuurlijke taalverwerking (CoreNLP), tensorbewerkingen (ND4J) of een volledige GPU-versnelde deep learning-stack (DL4J). Bovendien krijg je eenvoudig toegang tot big data-platforms zoals Apache Spark en Apache Hadoop.

Java is de lingua franca van de meeste ondernemingen, en met de nieuwe taalconstructies die beschikbaar zijn in Java 8 en latere versies, is het schrijven van Java-code niet de hatelijke ervaring die velen van ons zich herinneren. Het schrijven van een AI-applicatie in Java voelt misschien wat saai, maar het kan de klus klaren - en je kunt al je bestaande Java-infrastructuur gebruiken voor ontwikkeling, implementatie en monitoring.

JavaScript

Het is onwaarschijnlijk dat u JavaScript alleen leert voor het schrijven van AI-toepassingen, maar Google's TensorFlow.js blijft verbeteren en biedt een intrigerende manier om uw Keras- en TensorFlow-modellen te implementeren in uw browser of via Node.js met WebGL voor GPU-versnelde berekeningen.

Een ding dat we echter niet echt hebben gezien sinds de lancering van TensorFlow.js, is een enorme toestroom van JavaScript-ontwikkelaars die de AI-ruimte binnenstromen. Ik denk dat dit te wijten kan zijn aan het feit dat het omringende JavaScript-ecosysteem niet de diepte heeft van beschikbare bibliotheken in vergelijking met talen zoals Python.

Verder is er aan de serverkant niet echt een groot voordeel aan het implementeren van modellen met Node.js in tegenstelling tot een van de Python-opties, dus het kan zijn dat JavaScript-gebaseerde AI-applicaties in de nabije toekomst voornamelijk browsergebaseerd zullen blijven. Maar dat biedt nog steeds tal van interessante mogelijkheden voor plezier, zoals de Emoji Scavenger Hunt.

Snel

In de versie van dit artikel van vorig jaar zei ik dat Swift een taal was om in de gaten te houden. Dit jaar breekt het door in mijn top zes. Wat is er gebeurd? Swift voor TensorFlow. Een volledig getypte, cruft-vrije binding van de nieuwste en beste functies van TensorFlow en duistere magie waarmee je Python-bibliotheken kunt importeren alsof je Python in de eerste plaats gebruikt.

Het Fastai-team werkt aan een Swift-versie van hun populaire bibliotheek en ons belooft veel verdere optimalisaties bij het genereren en uitvoeren van modellen door veel tensor-smarts naar de LLVM-compiler te verplaatsen. Is het nu klaar voor de productie? Niet echt, maar het kan inderdaad de weg wijzen naar de volgende generatie van deep learning-ontwikkeling, dus je moet zeker onderzoeken wat er aan de hand is met Swift.

R taal

R komt onderaan onze lijst binnen en het is een dalende trend. R is de taal waar datawetenschappers van houden. Andere programmeurs vinden R echter vaak een beetje verwarrend vanwege de dataframe-centrische benadering. Als je een toegewijde groep R-ontwikkelaars hebt, kan het logisch zijn om de integraties met TensorFlow, Keras of H2O te gebruiken voor onderzoek, prototyping en experimenten, maar ik aarzel om R aan te bevelen voor productiegebruik of voor greenfield-ontwikkeling, vanwege prestaties en operationele zorgen. Hoewel u performante R-code kunt schrijven die op productieservers kan worden geïmplementeerd, zal het vrijwel zeker gemakkelijker zijn om dat R-prototype te nemen en het te hercoderen in Java of Python.

Andere AI-programmeeropties

Python, C ++, Java, JavaScript, Swift en R zijn natuurlijk niet de enige talen die beschikbaar zijn voor AI-programmering. Hier zijn nog twee programmeertalen die je misschien interessant of nuttig vindt, hoewel ik ze niet als topprioriteiten zou beschouwen om te leren.

Lua

Een paar jaar geleden reed Lua hoog in de wereld van kunstmatige intelligentie dankzij het Torch-framework, een van de meest populaire machine learning-bibliotheken voor zowel onderzoeks- als productiebehoeften. Als je je verdiept in de geschiedenis van deep learning-modellen, zul je vaak overvloedige verwijzingen naar Torch en veel Lua-broncode vinden in oude GitHub-repositories.

Daartoe kan het handig zijn om praktische kennis te hebben van de Torch API, die niet al te ver verwijderd is van de basis-API van PyTorch. Als u echter, zoals de meesten van ons, echt niet veel historisch onderzoek hoeft te doen voor uw toepassingen, kunt u waarschijnlijk rondkomen zonder ons hoofd om Lua's eigenaardigheden te hoeven wikkelen.

Julia

Julia is een krachtige programmeertaal die is gericht op numeriek computergebruik, waardoor het goed past in de wiskundige wereld van AI. Hoewel het momenteel niet zo populair is als taalkeuze, bieden wrappers zoals TensorFlow.jl en Mocha (sterk beïnvloed door Caffe) goede ondersteuning voor diepgaand leren. Als je het relatief kleine ecosysteem niet erg vindt, en je wilt profiteren van Julia's focus op het eenvoudig en snel maken van krachtige berekeningen, dan is Julia waarschijnlijk het bekijken waard.