Op het gebied van kunstmatige intelligentie, met name bij computer vision-taken met behulp van TensorFlow, is het belangrijk om het proces van het trainen van een model te begrijpen om optimale prestaties te bereiken. Een veelvoorkomende vraag die in deze context rijst, is of er voor elk tijdperk een andere set afbeeldingen wordt gebruikt tijdens de trainingsfase. Om deze vraag uitgebreid te beantwoorden, is het essentieel om de mechanica van hoe gegevens worden gebruikt in het trainingsproces, het concept van tijdperken en de strategieën die worden gebruikt om modelgeneralisatie en -prestaties te verbeteren, te overwegen.
Een epoch in de context van machine learning verwijst naar één complete doorgang door de gehele trainingsdataset. Tijdens de training leert een model iteratief van de data door zijn parameters aan te passen om een verliesfunctie te minimaliseren, die het verschil tussen de voorspelde en werkelijke outputs kwantificeert. In de praktijk vereist het trainen van een model vaak meerdere epochs, omdat één enkele doorgang door de data doorgaans onvoldoende is voor het model om te convergeren naar een optimale oplossing.
De dataset die wordt gebruikt bij training, wordt over het algemeen verdeeld in drie subsets: de trainingsset, de validatieset en de testset. De trainingsset wordt gebruikt om het model te fitten, de validatieset wordt gebruikt om hyperparameters af te stemmen en de modelprestaties te evalueren tijdens de training, en de testset is gereserveerd voor het beoordelen van de prestaties van het model nadat de training is voltooid. Het is belangrijk om op te merken dat de trainingsset constant blijft over tijdperken heen; de volgorde waarin de data aan het model wordt gepresenteerd, kan echter variëren.
Het concept om voor elk tijdperk een andere set afbeeldingen te gebruiken, is niet helemaal accuraat. In plaats daarvan gebeurt er vaak een proces dat data shuffling wordt genoemd. Aan het begin van elk tijdperk wordt de volgorde van de afbeeldingen in de trainingsset willekeurig geschud. Dit shufflingproces zorgt ervoor dat het model de volgorde van de gegevens niet leert, wat onbedoeld kan leiden tot overfittingpatronen die specifiek zijn voor de volgorde in plaats van de inhoud van de gegevens zelf. Door de gegevens voor elk tijdperk in een andere volgorde te presenteren, wordt het model aangemoedigd om meer algemene kenmerken te leren die robuust zijn voor variaties in de invoergegevens.
Data augmentation is een andere techniek die de indruk kan wekken dat er voor elk tijdperk een andere set afbeeldingen wordt gebruikt. Data augmentation houdt in dat er verschillende transformaties worden toegepast op de afbeeldingen in de trainingsset, zoals rotatie, schaling, omdraaien of kleuraanpassing. Deze transformaties creëren aangepaste versies van de originele afbeeldingen, waardoor de diversiteit van de trainingsgegevens effectief wordt vergroot zonder dat er extra gelabelde gegevens nodig zijn. Als gevolg hiervan wordt het model blootgesteld aan een breder scala aan variaties, wat het vermogen om te generaliseren naar ongeziene gegevens kan verbeteren. Hoewel data augmentation de onderliggende dataset niet verandert, verandert het wel het uiterlijk van de afbeeldingen, waardoor het effect van een andere set afbeeldingen in elk tijdperk wordt gesimuleerd.
Denk aan een voorbeeld waarbij een convolutioneel neuraal netwerk (CNN) wordt getraind om afbeeldingen van katten en honden te classificeren. De trainingsset bestaat uit 10,000 gelabelde afbeeldingen, met een gelijk aantal afbeeldingen voor elke klasse. Tijdens het eerste tijdperk verwerkt het model de afbeeldingen in de oorspronkelijke volgorde. Voordat het tweede tijdperk begint, worden de afbeeldingen geschud, zodat de volgorde waarin ze aan het model worden gevoerd, anders is. Daarnaast worden data-augmentatietechnieken toegepast, zoals het willekeurig roteren van afbeeldingen met maximaal 15 graden en het horizontaal omdraaien ervan. Deze transformaties resulteren in een gevarieerde invoer voor elk tijdperk, waardoor het vermogen van het model om invariante kenmerken te leren wordt verbeterd.
In TensorFlow kunnen data shuffling en augmentation worden geïmplementeerd met behulp van de `tf.data` API, die efficiënte en flexibele methoden biedt voor data preprocessing. De `Dataset.shuffle(buffer_size)` functie kan bijvoorbeeld worden gebruikt om de dataset te shufflen, waarbij `buffer_size` het aantal elementen bepaalt waaruit de nieuwe order wordt gegenereerd. Een grotere buffergrootte resulteert in een grondiger shuffling. Data augmentation kan worden bereikt met behulp van functies zoals `tf.image.random_flip_left_right` of `tf.image.random_brightness`, die willekeurige transformaties op de afbeeldingen toepassen.
Het is ook de moeite waard om op te merken dat de grootte van de dataset en het aantal tijdperken factoren zijn die de beslissing beïnvloeden om technieken als shuffling en augmentation te gebruiken. Voor kleinere datasets zijn deze technieken met name nuttig omdat ze helpen overfitting te beperken door variabiliteit te introduceren. Daarentegen kan voor zeer grote datasets de natuurlijke diversiteit van de data al voldoende variabiliteit bieden, waardoor de noodzaak voor uitgebreide augmentation wordt verminderd.
Terwijl dezelfde set afbeeldingen wordt gebruikt in verschillende tijdperken tijdens modeltraining, wordt de volgorde van presentatie doorgaans gewijzigd door middel van shuffling en kan het uiterlijk van afbeeldingen worden aangepast met behulp van data-augmentatietechnieken. Deze praktijken zijn integraal voor het verbeteren van het vermogen van het model om te generaliseren en goed te presteren op ongeziene data, waardoor de kernuitdagingen van overfitting worden aangepakt en de robuustheid van machine learning-modellen in computer vision-taken wordt verbeterd.
Andere recente vragen en antwoorden over Basis computervisie met ML:
- Is het in het voorbeeld keras.layer.Dense(128, activation=tf.nn.relu) mogelijk dat we het model overfitten als we het getal 784 (28*28) gebruiken?
- Wat is underfitting?
- Hoe bepaal je het aantal afbeeldingen dat nodig is voor het trainen van een AI-visiemodel?
- Waarom hebben we convolutionele neurale netwerken (CNN's) nodig om complexere scenario's bij beeldherkenning aan te kunnen?
- Hoe filtert de activeringsfunctie "relu" waarden uit een neuraal netwerk?
- Wat is de rol van de optimalisatiefunctie en de verliesfunctie bij machine learning?
- Hoe komt de invoerlaag van het neurale netwerk in computervisie met ML overeen met de grootte van de afbeeldingen in de Fashion MNIST-dataset?
- Wat is het doel van het gebruik van de Fashion MNIST-dataset bij het trainen van een computer om objecten te herkennen?

