Πώς να επιλέξετε το καλύτερο ποσοστό εκμάθησης για το πρόγραμμα μηχανικής εκμάθησης

Ένα κοινό πρόβλημα που αντιμετωπίζουμε όλοι όταν εργαζόμαστε σε έργα βαθιάς μάθησης είναι η επιλογή ενός ποσοστού εκμάθησης και βελτιστοποίησης (οι υπερ-παράμετροι). Εάν είστε σαν κι εμένα, μπορείτε να μαντέψετε έναν βελτιστοποιητή και ένα ποσοστό εκμάθησης και, στη συνέχεια, να ελέγξετε αν λειτουργούν (και δεν είμαστε μόνοι).

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

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

Πειραματική ρύθμιση

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

Πρέπει να σημειωθεί ότι τα παρακάτω αποτελέσματα αφορούν ένα συγκεκριμένο μοντέλο και σύνολο δεδομένων. Οι ιδανικές υπερ-παράμετροι για άλλα μοντέλα και σύνολα δεδομένων θα διαφέρουν.

(Εάν θέλετε να δώσετε λίγο χρόνο GPU για να εκτελέσετε μια μεγαλύτερη έκδοση αυτού του πειράματος στο CIFAR-10, επικοινωνήστε μαζί μας).

Ποιο ποσοστό εκμάθησης λειτουργεί καλύτερα;

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

Το μοντέλο εκπαιδεύτηκε με 6 διαφορετικούς βελτιστοποιητές: Gradient Descent, Adam, Adagrad, Adadelta, RMS Prop και Momentum. Για κάθε βελτιστοποιητή, εκπαιδεύτηκε με 48 διαφορετικά ποσοστά εκμάθησης, από 0,000001 έως 100 σε λογαριθμικά διαστήματα.

Σε κάθε εκτέλεση, το δίκτυο εκπαιδεύεται έως ότου επιτύχει τουλάχιστον 97% ακρίβεια αμαξοστοιχίας. Ο μέγιστος επιτρεπόμενος χρόνος ήταν 120 δευτερόλεπτα. Τα πειράματα διεξήχθησαν σε ένα Nvidia Tesla K80, που φιλοξενήθηκε από τον FloydHub. Ο πηγαίος κώδικας είναι διαθέσιμος για λήψη.

Εδώ είναι ο χρόνος εκπαίδευσης για κάθε επιλογή ρυθμού μάθησης και βελτιστοποίησης

Το παραπάνω γράφημα είναι ενδιαφέρον. Μπορούμε να το δούμε:

  • Για κάθε βελτιστοποιητή, η πλειονότητα των ποσοστών εκμάθησης αποτυγχάνει να εκπαιδεύσει το μοντέλο.
  • Υπάρχει ένα σχήμα κοιλάδας για κάθε βελτιστοποιητή: πολύ χαμηλό ποσοστό εκμάθησης δεν εξελίσσεται ποτέ και πολύ υψηλό ποσοστό εκμάθησης προκαλεί αστάθεια και ποτέ δεν συγκλίνει. Στο μεταξύ, υπάρχει μια μπάντα με «σωστά» ποσοστά μάθησης που εκπαιδεύουν με επιτυχία.
  • Δεν υπάρχει ρυθμός εκμάθησης που να λειτουργεί για όλους τους βελτιστοποιητές.
  • Το ποσοστό εκμάθησης μπορεί να επηρεάσει το χρόνο εκπαίδευσης κατά τάξη μεγέθους.

Για να συνοψίσουμε τα παραπάνω, είναι σημαντικό να επιλέξετε το σωστό ποσοστό εκμάθησης. Διαφορετικά, το δίκτυό σας θα αποτύχει είτε να προπονηθεί, είτε θα χρειαστεί πολύ περισσότερος χρόνος για σύγκλιση.

Για να δείξουμε πώς κάθε βελτιστοποιητής διαφέρει στο βέλτιστο ποσοστό εκμάθησης, εδώ είναι το πιο γρήγορο και πιο αργό μοντέλο για εκπαίδευση για κάθε ρυθμό εκμάθησης, σε όλους τους βελτιστοποιητές. Σημειώστε ότι ο μέγιστος χρόνος είναι 120 δευτερόλεπτα (για παράδειγμα, το δίκτυο απέτυχε να εκπαιδεύσει) σε ολόκληρο το γράφημα - δεν υπάρχει κανένας ρυθμός εκμάθησης που να λειτουργεί για κάθε βελτιστοποιητή:

Ρίξτε μια ματιά στο ευρύ φάσμα των μαθησιακών ποσοστών (από 0,001 έως 30) που επιτυγχάνουν επιτυχία με τουλάχιστον έναν βελτιστοποιητή από το παραπάνω γράφημα.

Ποιο βελτιστοποιητικό έχει την καλύτερη απόδοση;

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

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

Μερικές παρατηρήσεις:

  • Όλοι οι βελτιστοποιητές, εκτός από το RMSProp (βλ. Τελικό σημείο) , καταφέρνουν να συγκλίνουν σε εύλογο χρόνο.
  • Ο Αδάμ μαθαίνει το γρηγορότερο.
  • Ο Adam είναι πιο σταθερός από τους άλλους βελτιστοποιητές και δεν υποφέρει από σημαντικές μειώσεις στην ακρίβεια.
  • Το RMSProp εκτελέστηκε με τα προεπιλεγμένα ορίσματα από το TensorFlow (ρυθμός αποσύνθεσης 0,9, epsilon 1e-10, momentum 0,0) και θα μπορούσε να συμβαίνει ότι αυτά δεν λειτουργούν καλά για αυτήν την εργασία. Αυτή είναι μια καλή περίπτωση για αυτόματη αναζήτηση υπερπαραμέτρων (ανατρέξτε στην τελευταία ενότητα για περισσότερα σχετικά με αυτό).

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

Πώς επηρεάζει το μέγεθος του μοντέλου το χρόνο εκπαίδευσης;

Τώρα ας δούμε πώς επηρεάζει το μέγεθος του μοντέλου πώς εκπαιδεύεται.

Θα αλλάξουμε το μέγεθος του μοντέλου με γραμμικό παράγοντα. Αυτός ο συντελεστής θα κλιμακώσει γραμμικά τον αριθμό των συνελικτικών φίλτρων και το πλάτος του πρώτου πυκνού στρώματος, έτσι κλιμακώνοντας περίπου γραμμικά τον συνολικό αριθμό βαρών στο μοντέλο.

Υπάρχουν δύο πτυχές που θα διερευνήσουμε:

  1. Πώς αλλάζει ο χρόνος εκπαίδευσης καθώς μεγαλώνει το μοντέλο, για σταθερό βελτιστοποιητή και ρυθμό εκπαίδευσης;
  2. Ποιο ποσοστό εκμάθησης εκπαιδεύεται ταχύτερα σε κάθε μέγεθος μοντέλου, για ένα σταθερό εργαλείο βελτιστοποίησης;

Πώς αλλάζει ο χρόνος εκπαίδευσης καθώς μεγαλώνει το μοντέλο;

Παρακάτω παρουσιάζεται ο χρόνος που απαιτείται για την επίτευξη 96% ακρίβειας προπόνησης στο μοντέλο, αυξάνοντας το μέγεθός του από 1x σε 10x. Έχουμε χρησιμοποιήσει μία από τις πιο επιτυχημένες υπερ-παραμέτρους μας από νωρίτερα:

  • Ο χρόνος εκπαίδευσης αυξάνεται γραμμικά με το μέγεθος του μοντέλου
  • Το ίδιο ποσοστό εκμάθησης εκπαιδεύει επιτυχώς το δίκτυο σε όλα τα μεγέθη μοντέλων.

(Σημείωση: τα ακόλουθα αποτελέσματα μπορούν να βασιστούν μόνο για το σύνολο δεδομένων και τα μοντέλα που δοκιμάστηκαν εδώ, αλλά μπορεί να αξίζει τον έλεγχο για τα πειράματά σας.)

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

Αυτό δείχνει επίσης ότι, καθώς το δίκτυο μεγαλώνει, δεν συνεπάγεται καμία εργασία O (n²) για τη σύγκλιση του μοντέλου (η γραμμική ανάπτυξη στο χρόνο μπορεί να εξηγηθεί από τις επιπλέον λειτουργίες που πραγματοποιούνται για την προπόνηση κάθε βάρους).

Αυτό το αποτέλεσμα είναι πιο καθησυχαστικό, καθώς δείχνει το πλαίσιο βαθιάς μάθησης (εδώ TensorFlow) κλιμακώνει αποτελεσματικά.

Ποιο ποσοστό εκμάθησης αποδίδει καλύτερα για διαφορετικά μεγέθη μοντέλου;

Ας εκτελέσουμε το ίδιο πείραμα για πολλαπλά ποσοστά μάθησης και ας δούμε πώς ο χρόνος εκπαίδευσης ανταποκρίνεται στο μέγεθος του μοντέλου:

  • Τα ποσοστά εκμάθησης 0,0005, 0,001, 0,00146 είχαν την καλύτερη απόδοση - αυτά αποδόθηκαν επίσης καλύτερα στο πρώτο πείραμα. Βλέπουμε εδώ την ίδια μπάντα "sweet spot" όπως στο πρώτο πείραμα.
  • Ο χρόνος εκμάθησης κάθε ρυθμού μάθησης αυξάνεται γραμμικά με το μέγεθος του μοντέλου.
  • Η απόδοση του μαθησιακού ρυθμού δεν εξαρτάται από το μέγεθος του μοντέλου. Οι ίδιες τιμές που είχαν την καλύτερη απόδοση για μέγεθος 1x είχαν την καλύτερη απόδοση για μέγεθος 10x.
  • Πάνω από 0,001, η αύξηση του ποσοστού εκμάθησης αύξησε το χρόνο προπόνησης και επίσης αύξησε τη διακύμανση του χρόνου εκπαίδευσης (σε σύγκριση με μια γραμμική συνάρτηση του μεγέθους του μοντέλου).
  • Ο χρόνος εκπαίδευσης μπορεί να διαμορφωθεί κατά προσέγγιση ως c + kn για ένα μοντέλο με n βάρη, σταθερό κόστος c και σταθερή μάθηση k = f (ρυθμός εκμάθησης) .

Συνοπτικά, το ποσοστό εκμάθησης με την καλύτερη απόδοση για το μέγεθος 1x ήταν επίσης το καλύτερο ποσοστό εκμάθησης για το μέγεθος 10x.

Αυτοματοποίηση επιλογής μαθησιακού ποσοστού

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

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

Υπάρχουν διάφοροι τρόποι αυτόματης επιλογής υπερ-παραμέτρων. Θα περιγράψω μερικές διαφορετικές προσεγγίσεις εδώ.

Αναζήτηση πλέγματος

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

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

Εκπαίδευση βάσει πληθυσμού

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

Στο PBT, δημιουργείται ένας πληθυσμός μοντέλων. Όλοι εκπαιδεύονται συνεχώς παράλληλα. Όταν κάποιο μέλος του πληθυσμού είχε αρκετό χρόνο για να εκπαιδεύσει για να δείξει βελτίωση, η ακρίβεια επικύρωσης συγκρίνεται με τον υπόλοιπο πληθυσμό. Εάν η απόδοσή του είναι στο χαμηλότερο 20%, τότε αντιγράφει και μεταλλάσσει τις υπερ-παραμέτρους και τις μεταβλητές μιας από τις κορυφαίες 20% επιδόσεις.

Με αυτόν τον τρόπο, οι πιο επιτυχημένες υπερ-παράμετροι γεννήθηκαν πολλές ελαφρώς μεταλλαγμένες παραλλαγές τους και πιθανώς ανακαλύφθηκαν οι καλύτερες υπερ-παράμετροι.

Επόμενα βήματα

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

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

Αυτά τα κείμενα αποτελούν μέρος μιας διερεύνησης θεμάτων αρχιτεκτονικής AI. Ακολουθήστε αυτήν τη δημοσίευση (και δώστε αυτό το άρθρο μερικά χειροκροτήματα!) Για να λάβετε ενημερώσεις όταν βγουν τα επόμενα κομμάτια.