AI 101
Wat is Transfer Learning?

Wat is Transfer Learning?
Bij het beoefenen van machine learning, kan het trainen van een model veel tijd in beslag nemen. Het creëren van een modelarchitectuur van scratch, het trainen van het model en vervolgens het model aanpassen, is een enorme hoeveelheid tijd en moeite. Een veel efficiëntere manier om een machine learning-model te trainen, is door een architectuur te gebruiken die al is gedefinieerd, mogelijk met gewichten die al zijn berekend. Dit is het hoofdidee achter transfer learning, het nemen van een model dat al is gebruikt en het hergebruiken voor een nieuwe taak.
Voordat we ingaan op de verschillende manieren waarop transfer learning kan worden gebruikt, laten we even stilstaan bij waarom transfer learning zo’n krachtige en nuttige techniek is.
Het oplossen van een diep lerend probleem
Wanneer je probeert een diep lerend probleem op te lossen, zoals het bouwen van een afbeeldingsclassificator, moet je een modelarchitectuur creëren en vervolgens het model trainen op je gegevens. Het trainen van het modelclassificator houdt in dat de gewichten van het netwerk worden aangepast, een proces dat uren of zelfs dagen kan duren, afhankelijk van de complexiteit van zowel het model als de dataset. De trainingsduur zal schalen met de grootte van de dataset en de complexiteit van de modelarchitectuur.
Als het model niet de benodigde nauwkeurigheid bereikt voor de taak, zal waarschijnlijk aanpassing van het model nodig zijn en vervolgens moet het model opnieuw worden getraind. Dit betekent nog meer uren van training totdat een optimale architectuur, trainingsduur en dataset-partitie kan worden gevonden. Wanneer je bedenkt hoeveel variabelen moeten worden afgestemd op elkaar voor een classificator om nuttig te zijn, is het logisch dat machine learning-engineers altijd op zoek zijn naar eenvoudigere, efficiëntere manieren om modellen te trainen en te implementeren. Om deze reden is de transfer learning-techniek ontwikkeld.
Nadat een model is ontworpen en getest, kan het, als het model nuttig blijkt te zijn, worden opgeslagen en later opnieuw worden gebruikt voor soortgelijke problemen.
Typen van Transfer Learning
In het algemeen zijn er twee verschillende soorten transfer learning: het ontwikkelen van een model van scratch en het gebruik van een vooraf getraind model.
Wanneer je een model van scratch ontwikkelt, moet je een modelarchitectuur creëren die je trainingsgegevens kan interpreteren en patronen ervan kan extraheren. Nadat het model voor de eerste keer is getraind, zul je waarschijnlijk wijzigingen moeten aanbrengen om de optimale prestaties van het model te bereiken. Je kunt dan de modelarchitectuur opslaan en gebruiken als uitgangspunt voor een model dat voor een soortgelijke taak zal worden gebruikt.
In de tweede situatie – het gebruik van een vooraf getraind model – hoef je alleen maar een vooraf getraind model te selecteren om te gebruiken. Veel universiteiten en onderzoeksteams maken de specificaties van hun model beschikbaar voor algemeen gebruik. De architectuur van het model kan worden gedownload samen met de gewichten.
Bij het uitvoeren van transfer learning kan de gehele modelarchitectuur en de gewichten voor de taak worden gebruikt, of alleen bepaalde delen/lagen van het model. Het gebruik van alleen een deel van het vooraf getrainde model en het trainen van de rest van het model wordt fine-tuning genoemd.
Finetuning van een netwerk
Finetuning van een netwerk beschrijft het proces van het trainen van slechts een deel van de lagen in een netwerk. Als een nieuwe trainingsdataset veel lijkt op de dataset die werd gebruikt om het oorspronkelijke model te trainen, kunnen veel van de dezelfde gewichten worden gebruikt.
Het aantal lagen in het netwerk dat moet worden ontdooid en opnieuw getraind, moet schalen met de grootte van de nieuwe dataset. Als de dataset die wordt getraind klein is, is het beter om de meeste lagen te behouden en alleen de laatste paar lagen te trainen. Dit is om te voorkomen dat het netwerk overfit. Als alternatief kunnen de laatste lagen van het vooraf getrainde netwerk worden verwijderd en nieuwe lagen worden toegevoegd, die vervolgens worden getraind. In tegenstelling tot wanneer de dataset een grote dataset is, mogelijk groter dan de oorspronkelijke dataset, moet het gehele netwerk opnieuw worden getraind. Om het netwerk te gebruiken als een vaste functie-extractor, kan de meeste van het netwerk worden gebruikt om functies te extraheren en alleen de laatste laag van het netwerk kan worden ontdooid en getraind.
Wanneer je een netwerk fine-tuned, moet je alleen onthouden dat de vroegere lagen van de ConvNet de informatie bevatten die de meer generieke functies van de afbeeldingen vertegenwoordigt. Dit zijn functies zoals randen en kleuren. In tegenstelling tot de latere lagen van de ConvNet, die de details bevatten die meer specifiek zijn voor de individuele klassen in de dataset waarop het model oorspronkelijk is getraind. Als je een model traint op een dataset die heel anders is dan de oorspronkelijke dataset, zul je waarschijnlijk de initiële lagen van het model willen gebruiken om functies te extraheren en alleen de rest van het model opnieuw willen trainen.
Transfer Learning-voorbeelden
De meest voorkomende toepassingen van transfer learning zijn waarschijnlijk die waarbij afbeeldingsgegevens als invoer worden gebruikt. Dit zijn vaak voorspelling/classificatie-taken. De manier waarop Convolutional Neural Networks afbeeldingsgegevens interpreteren, leent zich voor het hergebruik van aspecten van modellen, omdat de convolutionele lagen vaak zeer vergelijkbare functies onderscheiden. Een voorbeeld van een veelvoorkomend transfer learning-probleem is de ImageNet 1000-taak, een enorme dataset met 1000 verschillende klassen van objecten. Bedrijven die modellen ontwikkelen die hoge prestaties behalen op deze dataset, geven hun modellen vaak vrij onder licenties die anderen toestaan ze te hergebruiken. Sommige van de modellen die het resultaat zijn van dit proces, zijn de Microsoft ResNet-model, het Google Inception-model en de Oxford VGG Model-groep.












