Wat is TensorFlow? De machine learning-bibliotheek uitgelegd

Machine learning is een complexe discipline. Maar het implementeren van machine learning-modellen is veel minder ontmoedigend en moeilijk dan vroeger, dankzij machine learning-frameworks, zoals Google's TensorFlow, die het proces van het verzamelen van gegevens, trainingsmodellen, het presenteren van voorspellingen en het verfijnen van toekomstige resultaten vergemakkelijken.

TensorFlow is gemaakt door het Google Brain-team en is een open source-bibliotheek voor numerieke berekeningen en grootschalige machine learning. TensorFlow bundelt een hele reeks modellen en algoritmen voor machine learning en deep learning (ook bekend als neuraal netwerken) en maakt ze bruikbaar door middel van een gemeenschappelijke metafoor. Het gebruikt Python om een ​​handige front-end API te bieden voor het bouwen van applicaties met het framework, terwijl die applicaties worden uitgevoerd in high-performance C ++.

TensorFlow kan diepe neurale netwerken trainen en uitvoeren voor handgeschreven cijferclassificatie, beeldherkenning, woordinbedding, terugkerende neurale netwerken, reeks-naar-reeks-modellen voor automatische vertaling, natuurlijke taalverwerking en PDE (partiële differentiaalvergelijking) gebaseerde simulaties. Het beste van alles is dat TensorFlow productievoorspelling op schaal ondersteunt, met dezelfde modellen die worden gebruikt voor training.

Hoe TensorFlow werkt

Met TensorFlow kunnen ontwikkelaars gegevensstroomgrafieken maken - structuren die beschrijven hoe gegevens door een grafiek of een reeks verwerkingsknooppunten bewegen. Elk knooppunt in de grafiek vertegenwoordigt een wiskundige bewerking, en elke verbinding of rand tussen knooppunten is een multidimensionale gegevensarray, of tensor .

TensorFlow biedt dit alles voor de programmeur door middel van de Python-taal. Python is gemakkelijk te leren en te gebruiken, en biedt handige manieren om uit te drukken hoe abstracties op hoog niveau aan elkaar kunnen worden gekoppeld. Knooppunten en tensoren in TensorFlow zijn Python-objecten, en TensorFlow-applicaties zijn zelf Python-applicaties.

De eigenlijke wiskundige bewerkingen worden echter niet uitgevoerd in Python. De bibliotheken met transformaties die beschikbaar zijn via TensorFlow zijn geschreven als krachtige C ++ binaries. Python stuurt het verkeer tussen de stukken en biedt abstracties op hoog niveau om ze aan elkaar te koppelen.

TensorFlow-applicaties kunnen op vrijwel elk doel worden uitgevoerd dat handig is: een lokale machine, een cluster in de cloud, iOS- en Android-apparaten, CPU's of GPU's. Als u de eigen cloud van Google gebruikt, kunt u TensorFlow uitvoeren op Google's aangepaste TensorFlow Processing Unit (TPU) -silicium voor verdere versnelling. De resulterende modellen die door TensorFlow zijn gemaakt, kunnen echter op vrijwel elk apparaat worden geïmplementeerd waar ze zullen worden gebruikt om voorspellingen te doen.

TensorFlow 2.0, uitgebracht in oktober 2019, heeft het framework op veel manieren vernieuwd op basis van gebruikersfeedback, om het gemakkelijker te maken om ermee te werken (bijvoorbeeld door de relatief eenvoudige Keras API te gebruiken voor modeltraining) en beter te presteren. Gedistribueerde training is gemakkelijker uit te voeren dankzij een nieuwe API, en ondersteuning voor TensorFlow Lite maakt het mogelijk om modellen op een grotere verscheidenheid aan platforms te implementeren. Code die voor eerdere versies van TensorFlow is geschreven, moet echter worden herschreven - soms slechts in geringe mate, soms aanzienlijk - om maximaal te profiteren van de nieuwe TensorFlow 2.0-functies.

TensorFlow voordelen

Het grootste voordeel dat TensorFlow biedt voor de ontwikkeling van machine learning is abstractie. In plaats van zich bezig te houden met de kernachtige details van het implementeren van algoritmen, of het bedenken van de juiste manieren om de uitvoer van de ene functie te koppelen aan de invoer van een andere, kan de ontwikkelaar zich concentreren op de algemene logica van de applicatie. TensorFlow zorgt voor de details achter de schermen.

TensorFlow biedt extra gemakken voor ontwikkelaars die TensorFlow-apps moeten debuggen en introspectie moeten krijgen. In de gretige uitvoeringsmodus kunt u elke grafiekbewerking afzonderlijk en transparant evalueren en wijzigen, in plaats van de hele grafiek als een enkel ondoorzichtig object te construeren en alles tegelijk te evalueren. Met de visualisatiesuite van TensorBoard kunt u de manier waarop grafieken worden uitgevoerd inspecteren en profileren door middel van een interactief, webgebaseerd dashboard.

TensorFlow haalt ook veel voordelen uit de steun van een A-lijst commerciële outfit in Google. Google heeft niet alleen het snelle tempo van de ontwikkeling achter het project aangewakkerd, maar ook veel belangrijke aanbiedingen rond TensorFlow gecreëerd die het gemakkelijker te implementeren en gebruiksvriendelijker maken: het bovengenoemde TPU-silicium voor snellere prestaties in de cloud van Google; een online hub voor het delen van modellen die met het framework zijn gemaakt; in-browser en mobielvriendelijke incarnaties van het framework; en veel meer.

Een voorbehoud: sommige details van de implementatie van TensorFlow maken het moeilijk om volledig deterministische modeltrainingsresultaten te verkrijgen voor sommige trainingstaken. Soms zal een model dat op het ene systeem is getraind enigszins afwijken van een model dat op een ander is getraind, zelfs als ze exact dezelfde gegevens krijgen. De redenen hiervoor zijn glad - bijv. Hoe willekeurige getallen worden gezaaid en waar, of bepaald niet-deterministisch gedrag bij het gebruik van GPU's). Dat gezegd hebbende, is het mogelijk om deze problemen te omzeilen, en het team van TensorFlow overweegt meer controles om het determinisme in een workflow te beïnvloeden.

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.

TensorFlow vs. de concurrentie

TensorFlow concurreert met een hele reeks andere machine learning-frameworks. PyTorch, CNTK en MXNet zijn drie belangrijke frameworks die in veel van dezelfde behoeften voorzien. Hieronder heb ik aangegeven waar ze opvallen en tekort schieten tegen TensorFlow.

  • PyTorch is niet alleen gebouwd met Python, maar heeft nog veel meer overeenkomsten met TensorFlow: hardware-versnelde componenten onder de motorkap, een zeer interactief ontwikkelmodel dat het mogelijk maakt om te ontwerpen terwijl je aan het werk bent, en veel nuttige componenten die al zijn opgenomen. PyTorch is over het algemeen een betere keuze voor snelle ontwikkeling van projecten die in korte tijd moeten worden uitgevoerd, maar TensorFlow wint voor grotere projecten en complexere workflows.

  • CNTK , de Microsoft Cognitive Toolkit, gebruikt net als TensorFlow een grafiekstructuur om de gegevensstroom te beschrijven, maar richt zich vooral op het creëren van diepgaande neurale netwerken. CNTK verwerkt veel neurale netwerktaken sneller en heeft een bredere set API's (Python, C ++, C #, Java). Maar CNTK is momenteel niet zo gemakkelijk te leren of te implementeren als TensorFlow.

  • Apache MXNet , door Amazon aangenomen als het belangrijkste deep learning-framework op AWS, kan bijna lineair worden geschaald over meerdere GPU's en meerdere machines. Het ondersteunt ook een breed scala aan taal-API's - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - hoewel de native API's niet zo prettig zijn om mee te werken als die van TensorFlow.