Die Wirksamkeit jedes maschinellen Lernmodells lässt sich in erster Linie auf die Gültigkeit der für das Training verwendeten Daten und die Fähigkeit des Modells zurückführen, diese Informationen gut zu verallgemeinern. Daher ist es entscheidend, ein Modell mit dem geringsten Validierungsverlust zu trainieren. Indem wir ein Modell effektiv trainieren, stellen wir sicher, dass das Modell weder eine Unter- noch eine Überanpassung aufweist.
Der Validierungsverlust entspricht der Fehlerrate einer Hold-out-Stichprobe des Trainingssatzes, die nicht in der Trainingsphase verwendet wird, und hilft uns, die Generalisierungsfähigkeit des Modells zu messen. Das Hauptziel jedes Modells für maschinelles Lernen besteht darin, den geringsten Validierungsverlust zu erzielen, was darauf hinweist, dass unser Modell gut lernt und verallgemeinert.
Eine Methode zum Speichern von Modellen mit dem besten Validierungsverlust
Das Training eines Modells umfasst mehrere Iterationen, auch Epochen genannt, und der Validierungsverlust ist für jede Epoche unterschiedlich. Python bietet mehrere Bibliotheken wie Keras, die diese Modelle in jeder Epoche speichern. Wir können eine Funktion namens ModelCheckpoint verwenden, um das Modell immer dann zu speichern, wenn sich der Validierungsverlust gegenüber dem vorherigen verbessert.
from keras.callbacks import ModelCheckpoint # specify the path to save the model filepath="weights.best.hdf5" # initiate the ModelCheckpoint function checkpoint = ModelCheckpoint(filepath, monitor='val_loss', verbose=1, save_best_only=True, mode='min') # define the list of callbacks callbacks_list = [checkpoint] # fit the model model.fit(X, Y, validation_split=0.33, epochs=150, batch_size=10, callbacks=callbacks_list, verbose=0)
Den Code verstehen: Schritt für Schritt
Gehen wir das Code-Snippet Schritt für Schritt durch, um jeden Teil zu verstehen:
1. Importieren Sie die ModelCheckpoint-Funktion aus Keras.
2. Definieren Sie den Dateipfad, in dem Sie das Modell speichern möchten, im .hdf5-Format. Dieses Format dient zum Speichern und Organisieren großer Datenmengen.
3. Starten Sie die ModelCheckpoint-Funktion. Hier überwachen wir „val_loss“ mit einem „min“-Modus, der anzeigt, dass wir diesen Wert minimieren möchten. Bei „save_best_only=True“ wird das aktuell beste Modell gemäß der überwachten Menge nicht überschrieben.
4. Der Prüfpunkt wird dann zur Rückrufliste hinzugefügt. Auch andere Trainingsparameter wie EarlyStopping können in diese Liste aufgenommen werden.
5. Das Modell wird dann mithilfe von model.fit() anhand der Daten trainiert. Das Argument callbacks übernimmt die callbacks_list.
Der Code speichert das Modell als „weights.best.hdf5“ in jeder Epoche, in der der Validierungsverlust am geringsten ist.
Wichtige Python-Bibliotheken zum Speichern von Modellen
Python bietet ein umfangreiches Ökosystem an Bibliotheken zum Speichern von Modellen des maschinellen Lernens. Die am häufigsten verwendeten sind:
- Keras: Diese High-Level-API für neuronale Netzwerke, die auf anderen Low-Level-APIs wie TensorFlow ausgeführt werden kann, ermöglicht das einfache und schnelle Prototyping von Deep-Learning-Modellen. Die ModelCheckpoint-Funktion in Keras bietet die Flexibilität, verschiedene Parameter während des Trainingsprozesses zu überwachen und das Modell oder die Gewichte in verschiedenen Phasen zu speichern.
- TensorFlow: Mit dem Open-Source-Framework für maschinelles Lernen von Python können Entwickler problemlos komplexe ML-Modelle erstellen. Es bietet ein SavedModel-Modul, ein universelles Serialisierungsformat für TensorFlow-Modelle.
- Scikit-lernen: Diese beliebte Python-Bibliothek für maschinelles Lernen bietet Dienstprogramme zum Speichern und Laden von Modellen. Das Joblib-Modul wird typischerweise zum Serialisieren von Python-Objekten mit großen Numpy-Arrays verwendet – ein häufiges Szenario in Arbeitsabläufen für maschinelles Lernen.
Die Wahl der Bibliothek hängt weitgehend von den Anforderungen Ihres Projekts, Ihrer Vertrautheit mit der Bibliothek und der Komplexität Ihres Modells ab. Dennoch bietet Python reichlich Ressourcen, um Modelle problemlos zu trainieren, zu bewerten, zu speichern und zu laden.