Επιλύθηκε: αποθήκευση μοντέλου με καλύτερη απώλεια επικύρωσης

Τελευταία ενημέρωση: 09/25/2023
Συγγραφέας: Python SourceTrail

Η αποτελεσματικότητα οποιουδήποτε μοντέλου μηχανικής μάθησης μπορεί πρωτίστως να αποδοθεί στην εγκυρότητα των δεδομένων που χρησιμοποιούνται για την εκπαίδευση και στην ικανότητα του μοντέλου να γενικεύει καλά από αυτές τις πληροφορίες. Επομένως, η εκπαίδευση ενός μοντέλου με τη χαμηλότερη απώλεια επικύρωσης είναι κρίσιμη. Εκπαιδεύοντας ένα μοντέλο αποτελεσματικά, διασφαλίζουμε ότι το μοντέλο δεν είναι ούτε ανεπαρκές ούτε υπερβολικό.

Η απώλεια επικύρωσης αντιστοιχεί στο ποσοστό σφάλματος σε ένα δείγμα διατήρησης του συνόλου εκπαίδευσης που δεν χρησιμοποιείται στη φάση εκπαίδευσης και μας βοηθά να μετρήσουμε την ικανότητα γενίκευσης του μοντέλου. Ο πρωταρχικός στόχος σε οποιοδήποτε μοντέλο μηχανικής μάθησης είναι να επιτευχθεί η χαμηλότερη απώλεια επικύρωσης, υποδεικνύοντας έτσι ότι το μοντέλο μας μαθαίνει και γενικεύεται καλά.

Μια μέθοδος για την αποθήκευση μοντέλων με την καλύτερη απώλεια επικύρωσης

Η εκπαίδευση ενός μοντέλου περιλαμβάνει πολλές επαναλήψεις, γνωστές και ως εποχές, και η απώλεια επικύρωσης διαφέρει για κάθε εποχή. Η Python παρέχει πολλές βιβλιοθήκες όπως η Keras που αποθηκεύει αυτά τα μοντέλα σε κάθε εποχή. Μπορούμε να χρησιμοποιήσουμε μια δυνατότητα που ονομάζεται ModelCheckpoint για να αποθηκεύσουμε το μοντέλο κάθε φορά που η απώλεια επικύρωσης βελτιώνεται από την προηγούμενη.

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)

Κατανόηση του Κώδικα: Βήμα προς Βήμα

Ας δούμε το απόσπασμα κώδικα βήμα προς βήμα για να κατανοήσουμε κάθε μέρος:

1. Εισαγάγετε τη συνάρτηση ModelCheckpoint από την Keras.
2. Καθορίστε τη διαδρομή αρχείου όπου θέλετε να αποθηκεύσετε το μοντέλο χρησιμοποιώντας τη μορφή .hdf5. Αυτή η μορφή έχει σχεδιαστεί για να αποθηκεύει και να οργανώνει μεγάλες ποσότητες δεδομένων.
3. Εκκινήστε τη λειτουργία ModelCheckpoint. Εδώ, παρακολουθούμε το 'val_loss' με μια λειτουργία 'min' που υποδεικνύει ότι στοχεύουμε στην ελαχιστοποίηση αυτής της τιμής. Με το 'save_best_only=True', το πιο πρόσφατο καλύτερο μοντέλο σύμφωνα με την ποσότητα που παρακολουθείται δεν θα αντικατασταθεί.
4. Στη συνέχεια, το σημείο ελέγχου προστίθεται στη λίστα επανακλήσεων. Άλλες παράμετροι εκπαίδευσης όπως το EarlyStopping μπορούν επίσης να συμπεριληφθούν σε αυτήν τη λίστα.
5. Στη συνέχεια, το μοντέλο εκπαιδεύεται στα δεδομένα χρησιμοποιώντας το model.fit(). Το όρισμα callbacks περιλαμβάνεται στη λίστα callbacks.

Ο κώδικας αποθηκεύει το μοντέλο ως 'weights.best.hdf5' σε κάθε εποχή όπου η απώλεια επικύρωσης είναι στο ελάχιστο.

Βιβλιοθήκες βασικών Python για αποθήκευση μοντέλων

Η Python παρέχει ένα πλούσιο οικοσύστημα βιβλιοθηκών για την αποθήκευση μοντέλων μηχανικής μάθησης. Αυτές που χρησιμοποιούνται κυρίως είναι:

  • Keras: Αυτό το API νευρωνικών δικτύων υψηλού επιπέδου που μπορεί να τρέχει πάνω από άλλα API χαμηλότερου επιπέδου όπως το TensorFlow επιτρέπει την εύκολη και γρήγορη δημιουργία πρωτοτύπων μοντέλων βαθιάς μάθησης. Η λειτουργία ModelCheckpoint στο Keras παρέχει την ευελιξία παρακολούθησης διαφόρων παραμέτρων κατά τη διάρκεια της εκπαιδευτικής διαδικασίας και αποθήκευσης του μοντέλου ή των βαρών σε διάφορα στάδια.
  • TensorFlow: Το πλαίσιο μηχανικής εκμάθησης ανοιχτού κώδικα της Python επιτρέπει στους προγραμματιστές να δημιουργούν πολύπλοκα μοντέλα ML με ευκολία. Παρέχει μια λειτουργική μονάδα SavedModel η οποία είναι μια καθολική μορφή σειριοποίησης για μοντέλα TensorFlow.
  • Scikit-learn: Αυτή η δημοφιλής βιβλιοθήκη Python για μηχανική εκμάθηση παρέχει βοηθητικά προγράμματα για αποθήκευση και φόρτωση μοντέλων. Η λειτουργική μονάδα Joblib χρησιμοποιείται συνήθως για τη σειριοποίηση αντικειμένων Python με μεγάλες numpy συστοιχίες - ένα κοινό σενάριο στις ροές εργασιών μηχανικής εκμάθησης.

Η επιλογή της βιβλιοθήκης εξαρτάται σε μεγάλο βαθμό από τις απαιτήσεις του έργου σας, την εξοικείωσή σας με τη βιβλιοθήκη και την πολυπλοκότητα του μοντέλου σας. Ωστόσο, η Python παρέχει άφθονους πόρους για την εκπαίδευση, την αξιολόγηση, την αποθήκευση και τη φόρτωση μοντέλων με ευκολία.

Σχετικές αναρτήσεις: