We observeren een toenemend aantal geweldige tools die het ingewikkelde proces vergemakkelijken dat diepgaand leren is, waardoor het zowel toegankelijker als efficiënter wordt.
Elk probleem dat het waard is om op te lossen, heeft geweldige hulpmiddelen nodig voor ondersteuning. Diep leren is geen uitzondering. Het is in ieder geval een rijk waarin goede gereedschappen de komende jaren steeds belangrijker zullen worden. We bevinden ons nog steeds in de relatief vroege dagen van de deep-learning supernova, met veel diepgaande ingenieurs en enthousiastelingen die hun eigen weg banen naar efficiënte processen. We observeren echter ook een toenemend aantal geweldige tools die het ingewikkelde proces vergemakkelijken dat diepgaand leren is, waardoor het zowel toegankelijker als efficiënter wordt. Naarmate diepgaand leren zich gestaag uitbreidt van het werk van onderzoekers en experts naar een breder veld van zowel DL-enthousiastelingen die het veld willen betreden (toegankelijkheid), als groeiende engineeringteams die hun processen willen stroomlijnen en de complexiteit (efficiëntie) willen verminderen, hebben een overzicht samengesteld van de beste DL-tools.
De deep learning-levenscyclus nader bekijken
Om beter te kunnen beoordelen welke hulpmiddelen toegankelijkheid en efficiëntie bij diep leren kunnen bevorderen, laten we eerst eens kijken hoe het proces eruit ziet. De levenscyclus van een typische (gesuperviseerde) deep-learningapplicatie bestaat uit verschillende stappen, beginnend vanaf onbewerkte gegevens en eindigend met voorspellingen in het wild.
A typical deep learning lifecycle © 2018 Luminovo
Data Sourcing
De eerste stap naar een deep learning applicatie is het verzamelen van de juiste gegevens. Soms heb je geluk en zijn er historische gegevens beschikbaar. Soms moet u zoeken naar open-source datasets, het web schrapen, de onbewerkte gegevens kopen of een gesimuleerde dataset gebruiken. Omdat deze stap vaak heel specifiek is voor de toepassing, hebben we deze niet opgenomen in ons gereedschapslandschap. Houd er echter rekening mee dat er websites zijn zoals Google’s Dataset Search of Fast.ai-datasets die het probleem van het vinden van de juiste gegevens kunnen verminderen.
Data Labeling
De meeste gesurveilleerde deep-learningapplicaties hebben betrekking op afbeeldingen, video’s, tekst of audio en voordat u uw model traint, moet u deze onbewerkte gegevens annoteren met ground-truth-labels. Dit kan een kostenintensieve en tijdrovende taak zijn. In een ideale opstelling is dit proces verweven met modeltraining en -implementatie en probeert het zoveel mogelijk gebruik te maken van je getrainde modellen voor diep leren (zelfs als hun prestaties nog niet perfect zijn).
Data Versioning
Hoe meer uw gegevens in de loop van de tijd evolueren (stel dat u een slim labelproces opzet en uw modellen blijft herscholen terwijl uw dataset groeit), des te belangrijker het wordt om uw datasets te verslaan (net zoals u altijd uw code en uw getrainde modellen zou moeten verslaan) .
Scaling Hardware
Deze stap is relevant voor zowel modeltraining als implementatie: toegang krijgen tot de juiste hardware. Wanneer u overstapt van lokale ontwikkeling naar grootschalige experimenten tijdens modeltraining, moet uw hardware op de juiste manier worden geschaald. Hetzelfde geldt voor de schaal volgens de vraag van de gebruiker wanneer uw model wordt ingezet.
Model Architecture
Om uw model te trainen, moet u de modelarchitectuur van uw neurale netwerk kiezen.
Opmerking: als u een standaardprobleem heeft (bijv. Katten herkennen in internetmemes), betekent dit vaak niet meer dan het meest recente beschikbare state-of-the-art-model kopiëren vanuit een open-source GitHub-repository, maar af en toe wilt u om je handen vuil te maken en de architectuur van je model aan te passen om de prestaties te verbeteren. Met nieuwere benaderingen zoals Neural Architecture Search (NAS), wordt het kiezen van de juiste modelarchitectuur steeds meer ondergebracht onder de modeltrainingsfase, maar vanaf 2018 voor de meeste toepassingen is de marginale toename in prestaties van NAS de toegevoegde rekenkosten niet waard.
Deze stap is waar mensen vaak aan denken als ze denken aan toepassingen voor het coderen van diep leren, maar zoals je ziet is het slechts een van de vele en vaak niet het belangrijkste.
Model Training
Tijdens de modeltraining voert u de gelabelde gegevens naar uw neurale netwerk en werkt u de modelgewichten iteratief bij om het verlies op uw trainingsset tot een minimum te beperken. Nadat u uw enige meetwaarde hebt gekozen (zie Modelevaluatie), kunt u uw model trainen met veel verschillende sets hyperparameters (bijvoorbeeld welke combinatie van leersnelheid, modelarchitectuur en reeks voorbewerkingsstappen u moet kiezen) in een proces dat afstemming met hyperparameters wordt genoemd.
Model Evaluation
Het heeft geen zin om een neuraal netwerk te trainen als je geen onderscheid kunt maken tussen een goed en een slecht model. Tijdens de modelevaluatie kiest u meestal één meetwaarde om te optimaliseren voor (terwijl u mogelijk vele andere waarneemt). Voor deze statistiek probeert u het best presterende model te vinden dat generaliseert van uw trainingsgegevens tot de validatiegegevens. Dit houdt in het bijhouden van de verschillende experimenten (met mogelijk verschillende hyperparameters, architecturen en datasets) en hun prestatiemaatstaven, het visualiseren van de resultaten van de getrainde modellen en het vergelijken van experimenten met elkaar. Zonder de juiste tooling kan dit snel ingewikkeld en verwarrend worden, vooral wanneer u samenwerkt met meerdere technici op dezelfde deep learning-pijplijn.
Model Versioning
Een kleine stap (maar nog steeds het vermelden waard) tussen uiteindelijke modelevaluatie en modelimplementatie: het labelen van uw modellen met verschillende versies. Hiermee kunt u eenvoudig teruggaan naar een modelversie die goed werkte, wanneer u ontdekt dat uw nieuwste modelversie niet aan uw verwachtingen voldoet.
Model Deployment
Als u een versie van uw model hebt die u graag in productie wilt nemen, moet u deze implementeren op een manier die uw gebruikers (dit kunnen mensen of andere toepassingen zijn) met uw model kunnen praten: verstuur verzoeken met gegevens en kom terug voorspellingen van het model. Idealiter ondersteunt uw tooling voor modelimplementatie geleidelijk schakelen tussen verschillende modelversies, zodat u kunt anticiperen op de effecten van het hebben van een nieuw model in productie.
Monitoring Predictions
Zodra uw model is geïmplementeerd, wilt u de voorspellingen in de echte wereld nauwlettend in de gaten houden en u op de hoogte houden van veranderende datadistributies en vernederende prestaties voordat uw gebruikers bij u aankloppen en klagen over uw service.
Opmerking: het stroomschema verwijst al naar de cirkelvormige aard van de typische diepgaande leerworkflow. In feite kan het behandelen van de feedbackloop tussen ingezette modellen en nieuwe labels (vaak mens-in-de-loop genoemd) als een eersteklas burger in uw deep learning-workflow een van de belangrijkste succesfactoren zijn voor veel toepassingen. In real-life diepgaand leerwerk zijn dingen vaak ingewikkelder dan het stroomdiagram suggereert. Je zult merken dat je over stappen springt (bijvoorbeeld wanneer je werkt met een vooraf gelabelde dataset), verschillende stappen teruggaat (de modelprestaties zijn niet nauwkeurig genoeg en je moet meer gegevens verzamelen) of heen en weer gaan in gekke loops ( Architectuur => Training => Evaluatie => Training => Evaluatie => Architectuur).
Onze favoriete diepgaande leermiddelen
Er wordt hard gewerkt om hulpmiddelen te maken die ingenieurs efficiënter maken, en om gebruik te maken van de krachtige tools die briljante deep learning mensen daar hebben gecreëerd. De volgende grafiek geeft een overzicht van de meest veelbelovende deep learning tools die momenteel op de markt zijn. Van DL-engineers voor DL-engineers en iedereen die graag meer wilt weten over het maken van geweldige deep learning applicaties.