Connect with us

Τι είναι ένα Autoencoder;

Τεχνητή νοημοσύνη 101

Τι είναι ένα Autoencoder;

mm

Αν έχετε διαβάσει για τεχνικές μη επιβλεπόμενης μάθησης trước, μπορεί να έχετε συναντήσει τον όρο “autoencoder”. Τα autoencoders είναι ένας από τους κύριους τρόπους με τους οποίους αναπτύσσονται μοντέλα μη επιβλεπόμενης μάθησης. Όμως, τι είναι ακριβώς ένα autoencoder;

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

Τι είναι ένα Autoencoder;

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

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

Γιατί θα θέλατε να εκπαιδεύσετε ένα δίκτυο να αναπαράγει απλώς τα δεδομένα που του δίνονται; Ο λόγος είναι ότι το δίκτυο μαθαίνει την “ουσιαστική”, ή τις πιο σημαντικές λειτουργίες των δεδομένων εισόδου. Μετά την εκπαίδευση του δικτύου, μπορεί να δημιουργηθεί ένα μοντέλο που μπορεί να συνθέσει παρόμοια δεδομένα, με την προσθήκη ή αφαίρεση ορισμένων στόχων λειτουργιών. Για παράδειγμα, θα μπορούσατε να εκπαιδεύσετε ένα autoencoder σε grainy εικόνες και στη συνέχεια να χρησιμοποιήσετε το εκπαιδευμένο μοντέλο για να αφαιρέσετε το grain/θόρυβο από την εικόνα.

Αρχιτεκτονική Autoencoder

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

Φωτογραφία: Michela Massi via Wikimedia Commons,(https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

Όπως αναφέρθηκε προηγουμένως, ένα autoencoder μπορεί ουσιαστικά να χωριστεί σε τρία διαφορετικά συστατικά: τον κωδικοποιητή, einen σφικτήρα και τον αποκωδικοποιητή.

Το τμήμα κωδικοποίησης του autoencoder είναι τυπικά ένα feedforward, πυκνά συνδεδεμένο δίκτυο. Ο σκοπός των στρωμάτων κωδικοποίησης είναι να πάρουν τα δεδομένα εισόδου και να τα συμπιέσουν σε μια.latent αναπαράσταση, δημιουργώντας μια νέα αναπαράσταση των δεδομένων που έχει μειωμένη διασταση.

Τα στρώματα κώδικα, ή ο σφικτήρας, χειρίζονται την συμπιεσμένη αναπαράσταση των δεδομένων. Ο σφικτήρας κώδικα σχεδιάζεται προσεκτικά για να καθορίσει τις πιο σχετικές περιοχές των παρατηρημένων δεδομένων, ή με άλλα λόγια, τις λειτουργίες των δεδομένων που είναι πιο σημαντικές για την ανακατασκευή των δεδομένων. Ο στόχος εδώ είναι να καθορίσει ποιες πτυχές των δεδομένων πρέπει να διατηρηθούν και ποιες μπορεί να απορριφθούν. Ο σφικτήρας πρέπει να ισορροπήσει δύο διαφορετικές σκέψεις: μέγεθος αναπαράστασης (πόσο συμπαγής είναι η αναπαράσταση) και σχετικότητα μεταβλητής/λειτουργίας. Ο σφικτήρας εκτελεί element-wise ενεργοποίηση στα βάρη και τις偏ές του δικτύου. Το στρώμα σφικτήρα ονομάζεται επίσης иногда.latent αναπαράσταση ή.latent μεταβλητές.

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

Η πιο βασική αρχιτεκτονική ενός autoencoder είναι μια feed-forward αρχιτεκτονική, με μια δομή πολύ παρόμοια με ένα μονό στρώμα perceptron που χρησιμοποιείται σε multilayer perceptrons. Όπως και τα κανονικά feed-forward νευρωνικά δίκτυα, το auto-encoder εκπαιδεύεται μέσω της χρήσης της backpropagation.

Ιδιότητες ενός Autoencoder

Υπάρχουν διάφορα είδη autoencoders, αλλά όλα έχουν ορισμένα χαρακτηριστικά που τα ενώνουν.

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

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

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

Το μέγεθος κώδικα quyếtίζει πόσοι κόμβοι αρχίζουν το μεσαίο μέρος του δικτύου και λιγότεροι κόμβοι συμπιέζουν τα δεδομένα περισσότερο. Σε ένα βαθύ autoencoder, ενώ ο αριθμός των στρωμάτων μπορεί να είναι οποιοσδήποτε αριθμός που ο μηχανικός θεωρεί κατάλληλο, ο αριθμός των κόμβων σε ένα στρώμα πρέπει να μειώνεται καθώς ο κωδικοποιητής συνεχίζει. Αντιθέτως, το αντίθετο ισχύει στον αποκωδικοποιητή, που σημαίνει ότι ο αριθμός των κόμβων ανά στρώμα πρέπει να αυξάνεται καθώς τα στρώματα αποκωδικοποίησης πλησιάζουν το τελικό στρώμα. Τέλος, η συνάρτηση απώλειας ενός autoencoder είναι τυπικά είτε binary cross-entropy είτε mean squared error. Η binary cross-entropy είναι κατάλληλη για περιπτώσεις όπου οι τιμές εισόδου των δεδομένων είναι σε ένα εύρος 0 – 1.

Τύποι Autoencoder

Όπως αναφέρθηκε παραπάνω, υπάρχουν παραλλαγές στην κλασική αρχιτεκτονική autoencoder. Ας εξετάσουμε τις διαφορετικές αρχιτεκτονικές autoencoder.

Σπαρσός

Φωτογραφία: Michela Massi via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

Ενώ τα autoencoders τυπικά έχουν einen σφικτήρα που συμπιέζει τα δεδομένα μέσω μίας μείωσης των κόμβων, σπαρσά autoencoders είναι μια εναλλακτική λύση σε αυτήν την τυπική λειτουργική μορφή. Σε ένα σπαρσό δίκτυο, τα κρυφά στρώματα διατηρούν το ίδιο μέγεθος με τα στρώματα κωδικοποίησης και αποκωδικοποίησης. Αντίθετα, οι ενεργοποιήσεις μέσα σε ένα δεδομένο στρώμα ποινικοποιούνται, ρυθμίζοντας το έτσι ώστε η συνάρτηση απώλειας να πιάσει καλύτερα τις στατιστικές λειτουργίες των δεδομένων εισόδου. Για να το πούμε με άλλα λόγια, ενώ τα κρυφά στρώματα ενός σπαρσού autoencoder έχουν περισσότερους κόμβους από ένα παραδοσιακό autoencoder, μόνο ένα certo ποσοστό από αυτούς είναι ενεργοί σε οποιοδήποτε δεδομένο χρόνο. Οι πιο επηρεαστικές ενεργοποιήσεις διατηρούνται και οι άλλες αγνοούνται, και αυτή η περιορισμός βοηθά το δίκτυο να καθορίσει μόνο τις πιο σημαντικές λειτουργίες των δεδομένων εισόδου.

Συμβατικός

Συμβατικοί autoencoders σχεδιάζονται για να είναι ανθεκτικοί ενάντια σε μικρές παραλλαγές στα δεδομένα, διατηρώντας μια σταθερή αναπαράσταση των δεδομένων. Αυτό επιτυγχάνεται εφαρμόζοντας μια ποινή στη συνάρτηση απώλειας. Αυτή η τεχνική κανονικοποίησης βασίζεται στο Frobenius norm του Jacobian matrix για τις ενεργοποιήσεις του κωδικοποιητή εισόδου. Η επίδραση αυτής της τεχνικής κανονικοποίησης είναι ότι το μοντέλο αναγκάζεται να κατασκευάσει μια κωδικοποίηση όπου παρόμοια εισοδοί θα έχουν παρόμοιες κωδικοποιήσεις.

Συμβολικός

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

Αποθάρρυνση

Φωτογραφία: MAL via Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

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

Βαριά

Βαριά autoencoders λειτουργούν κάνωντας υποθέσεις σχετικά με το πώς οι.latent μεταβλητές των δεδομένων είναι κατανεμημένες. Ένας βαριάς autoencoder παράγει μια πιθανότητα κατανομής για τις διαφορετικές λειτουργίες των δεδομένων εκπαίδευσης/των.latent ιδιοτήτων. Κατά την εκπαίδευση, ο κωδικοποιητής δημιουργεί.latent κατανομές για τις διαφορετικές λειτουργίες των δεδομένων εισόδου.

 

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

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

Εφαρμογές Autoencoder

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

Η αποθάρρυνση δεδομένων είναι η χρήση των autoencoders για να αφαιρέσουν θόρυβο από εικόνες. Παρόμοια, τα autoencoders μπορούν να χρησιμοποιηθούν για να修復άλλες τύπους ζημιών εικόνας, όπως θολές εικόνες ή εικόνες που λείπουν τμήματα. Η μείωση διαστάσεων μπορεί να βοηθήσει τα δίκτυα υψηλής ικανότητας να μάθουν χρήσιμες λειτουργίες εικόνων, που σημαίνει ότι τα autoencoders μπορούν να χρησιμοποιηθούν για να βελτιώσουν την εκπαίδευση άλλων τύπων νευρωνικών δικτύων. Αυτό ισχύει επίσης για την χρήση των autoencoders για την εξαγωγή λειτουργιών, поскольку τα autoencoders μπορούν να χρησιμοποιηθούν για να αναγνωρίσουν λειτουργίες άλλων συνόλων δεδομένων εκπαίδευσης για να εκπαιδεύσουν άλλα μοντέλα.

Σε σχέση με τη δημιουργία εικόνων, τα autoencoders μπορούν να χρησιμοποιηθούν για να δημιουργήσουν ψεύτικες ανθρώπινες εικόνες ή animate χαρακτήρες, που έχει εφαρμογές στη σχεδίαση συστημάτων αναγνώρισης προσώπου ή την αυτοματοποίηση ορισμένων аспектών της animation.

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

Blogger και προγραμματιστής με ειδικότητες στα Machine Learning και Deep Learning θέματα. Ο Daniel ελπίζει να βοηθήσει τους άλλους να χρησιμοποιήσουν τη δύναμη του AI για κοινωνικό καλό.