Προγραμματισμός

Τι είναι η βαθιά μάθηση; Αλγόριθμοι που μιμούνται τον ανθρώπινο εγκέφαλο

Η βαθιά μάθηση καθορίζεται

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

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

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

Βαθιά μάθηση έναντι μηχανικής μάθησης

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

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

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

Εφαρμογές βαθιάς μάθησης

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

Το φθινόπωρο του 2016, η ποιότητα των αποτελεσμάτων της Μετάφρασης Google για ζεύγη Αγγλικά-Γαλλικά, Αγγλικά-Κινέζικα και Αγγλικά-Ιαπωνικά ξαφνικά βελτιώθηκε δραματικά, από τη δημιουργία σαλάτας λέξεων έως την παραγωγή προτάσεων κοντά στην ποιότητα μιας επαγγελματικής μετάφρασης από έναν άνθρωπο. Αυτό που συνέβη στο παρασκήνιο είναι ότι οι ομάδες του Google Brain και της Μετάφρασης Google ανανέωσαν τη Μετάφραση Google από τη χρήση των παλιών πακέτων αλγορίθμων στατιστικής μηχανικής μετάφρασης (ένα είδος κλασικής μηχανικής εκμάθησης) έως τη χρήση ενός βαθύ νευρωνικού δικτύου εκπαιδευμένου με ενσωματωμένες λέξεις χρησιμοποιώντας το πλαίσιο TensorFlow της Google .

Αυτό δεν ήταν εύκολο έργο. Χρειάστηκαν πολλοί ερευνητές σε επίπεδο διδακτορικού για μήνες εργασίας σε μοντέλα και χιλιάδες εβδομάδες GPU για την εκπαίδευση των μοντέλων. Επίσης, ώθησε την Google να δημιουργήσει ένα νέο είδος τσιπ, ένα Tensor Processing Unit (TPU), για τη λειτουργία νευρωνικών δικτύων σε κλίμακα για τη Μετάφραση Google.

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

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

Η σημαντική ανακάλυψη στο οπτικό πεδίο του νευρικού δικτύου ήταν το 1998 LeNet-5 του Yann LeCun, επτά επιπέδων συνελικτικό νευρικό δίκτυο (CNN) για αναγνώριση χειρόγραφων ψηφίων που ψηφιοποιούνται σε εικόνες 32x32 pixel. Για την ανάλυση εικόνων υψηλότερης ανάλυσης, το δίκτυο LeNet-5 θα πρέπει να επεκταθεί σε περισσότερους νευρώνες και περισσότερα επίπεδα.

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

Άλλα προβλήματα όρασης εκτός από τη βασική ταξινόμηση εικόνας που έχουν επιλυθεί με βαθιά μάθηση περιλαμβάνουν την ταξινόμηση εικόνας με εντοπισμό, ανίχνευση αντικειμένων, τμηματοποίηση αντικειμένων, μεταφορά στυλ εικόνας, χρωματισμό εικόνας, ανακατασκευή εικόνας, υπερ-ανάλυση εικόνας και σύνθεση εικόνας.

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

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

Νευρωνικά δίκτυα βαθιάς μάθησης

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

Backpropagation

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

Νευρώνες

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

Λειτουργίες ενεργοποίησης

Στη δεκαετία του 1940 και του 1950 οι τεχνητοί νευρώνες χρησιμοποίησαν μια λειτουργία ενεργοποίησης βημάτων και κλήθηκαν perceptrons. Τα σύγχρονα νευρωνικά δίκτυα μπορεί λένε Χρησιμοποιούν perceptrons, αλλά στην πραγματικότητα έχουν ομαλές λειτουργίες ενεργοποίησης, όπως η συνάρτηση logistic ή sigmoid, η υπερβολική εφαπτομένη και η Rectified Linear Unit (ReLU). Το ReLU είναι συνήθως η καλύτερη επιλογή για γρήγορη σύγκλιση, αν και έχει ένα ζήτημα νευρώνων που «πεθαίνουν» κατά τη διάρκεια της προπόνησης εάν το ποσοστό εκμάθησης είναι πολύ υψηλό.

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

Τοπολογίες νευρικού δικτύου

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

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

Εκπαίδευση

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

Για όσους ενδιαφέρονται για τις λεπτομέρειες, το backpropagation χρησιμοποιεί τη διαβάθμιση της λειτουργίας σφάλματος (ή κόστους) σε σχέση με τα βάρη και τις προκαταλήψεις του μοντέλου για να ανακαλύψει τη σωστή κατεύθυνση για την ελαχιστοποίηση του σφάλματος. Δύο πράγματα ελέγχουν την εφαρμογή των διορθώσεων: ο αλγόριθμος βελτιστοποίησης και η μεταβλητή του ρυθμού εκμάθησης, η οποία συνήθως πρέπει να είναι μικρή για να εγγυηθεί τη σύγκλιση και να αποφευχθεί η πρόκληση νεκρών νευρώνων ReLU.

Βελτιστοποιητές

Τα εργαλεία βελτιστοποίησης για νευρωνικά δίκτυα χρησιμοποιούν συνήθως κάποια μορφή αλγορίθμου καθόδου κλίσης για να οδηγήσουν την οπίσθια αναπαραγωγή, συχνά με έναν μηχανισμό για να αποφευχθεί η προσκόλληση στα τοπικά ελάχιστα, όπως η βελτιστοποίηση τυχαία επιλεγμένων μίνι-παρτίδων (Stochastic Gradient Descent) και η εφαρμογή ορμή διορθώσεις στην κλίση. Ορισμένοι αλγόριθμοι βελτιστοποίησης προσαρμόζουν επίσης τα ποσοστά εκμάθησης των παραμέτρων του μοντέλου εξετάζοντας το ιστορικό διαβάθμισης (AdaGrad, RMSProp και Adam).

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

Πραγματικά DNN

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

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

Αλγόριθμοι βαθιάς μάθησης

Όπως ανέφερα νωρίτερα, η περισσότερη βαθιά μάθηση γίνεται με βαθιά νευρωνικά δίκτυα. Τα συμπαγικά νευρικά δίκτυα (CNN) χρησιμοποιούνται συχνά για την όραση της μηχανής. Τα επαναλαμβανόμενα νευρωνικά δίκτυα (RNN) χρησιμοποιούνται συχνά για φυσική γλώσσα και άλλη επεξεργασία ακολουθίας, όπως είναι τα δίκτυα Long-Term-Memory (LSTM) και τα νευρωνικά δίκτυα που βασίζονται στην προσοχή. Τυχαία δάση, επίσης γνωστά ως δάση τυχαίας απόφασης, τα οποία δεν είναι νευρωνικά δίκτυα, είναι χρήσιμα για μια σειρά προβλημάτων ταξινόμησης και παλινδρόμησης.

Νευρωνικά δίκτυα CNN

Τα συμπαγικά νευρικά δίκτυα χρησιμοποιούν συνήθως συνελικτικά, συγκεντρωτικά, ReLU, πλήρως συνδεδεμένα και επίπεδα απώλειας για προσομοίωση ενός οπτικού φλοιού. Το συνελικτικό επίπεδο βασικά παίρνει τα ακέραια πολλών μικρών επικαλυπτόμενων περιοχών. Το στρώμα συγκέντρωσης εκτελεί μια μορφή μη γραμμικής κάτω δειγματοληψίας. Τα επίπεδα ReLU εφαρμόζουν τη λειτουργία ενεργοποίησης χωρίς κορεσμό f (x) = μέγιστο (0, x). Σε ένα πλήρως συνδεδεμένο στρώμα, οι νευρώνες έχουν συνδέσεις με όλες τις ενεργοποιήσεις στο προηγούμενο στρώμα. Ένα επίπεδο απώλειας υπολογίζει τον τρόπο με τον οποίο η εκπαίδευση του δικτύου τιμωρεί την απόκλιση μεταξύ των προβλεπόμενων και των πραγματικών ετικετών, χρησιμοποιώντας μια λειτουργία απώλειας Softmax ή cross-entropy για ταξινόμηση ή μια λειτουργία απώλειας Ευκλείδειας για παλινδρόμηση.

RNN, LSTM και νευρωνικά δίκτυα που βασίζονται στην προσοχή

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

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

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

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

Τυχαία δάση

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

Πλαίσια βαθιάς μάθησης

Αν και θα μπορούσατε να γράψετε προγράμματα βαθιάς μάθησης από τις πρώτες αρχές, είναι πολύ πιο αποτελεσματικό να χρησιμοποιείτε πλαίσια βαθιάς μάθησης, ειδικά δεδομένου ότι έχουν βελτιστοποιηθεί για χρήση με GPU και άλλους επιταχυντές. Το προεξέχον πλαίσιο είναι το TensorFlow, το οποίο προήλθε από το Google. Το αγαπημένο API υψηλού επιπέδου για το TensorFlow είναι το Keras, το οποίο μπορεί επίσης να χρησιμοποιηθεί με άλλα back-end πλαίσια.

Το PyTorch, από το Facebook και άλλα, είναι μια ισχυρή εναλλακτική λύση για το TensorFlow και έχει τη διάκριση της υποστήριξης δυναμικών νευρωνικών δικτύων, στα οποία η τοπολογία του δικτύου μπορεί να αλλάξει από εποχή σε εποχή. Το Fastai είναι ένα API τρίτου μέρους υψηλού επιπέδου που χρησιμοποιεί το PyTorch ως back-end.

Το MXNet, από την Amazon και άλλους, είναι μια άλλη ισχυρή εναλλακτική λύση για το TensorFlow, με ισχυρισμό για καλύτερη επεκτασιμότητα. Το Gluon είναι το προτιμώμενο επιτακτικό API υψηλού επιπέδου για το MXNet.

Το Chainer, από την IBM, την Intel και άλλους, ήταν με κάποιο τρόπο η έμπνευση για το PyTorch, δεδομένου ότι ορίζει το νευρικό δίκτυο από το τρέξιμο και υποστηρίζει δυναμικά νευρωνικά δίκτυα.

Ενώ όλα τα προαναφερθέντα πλαίσια είναι κυρίως Python, το Deeplearning4j (DL4J), αρχικά από το Skymind και τώρα ένα έργο Apache, είναι κυρίως Java και Scala. Το DL4J είναι συμβατό με το Apache Spark και το Hadoop.

Το ONNX προτάθηκε αρχικά ως ανοιχτό οικοσύστημα για εναλλάξιμα μοντέλα AI. Το ONNX έχει πλέον χρόνο εκτέλεσης εκτός από τη μορφή αρχείου ανταλλαγής.