Ένα συνελικτικό νευρωνικό δίκτυο, ή CNN, είναι ένα νευρωνικό δίκτυο που αναζητά μικρά τοπικά μοτίβα και έπειτα τα συνδυάζει σε μεγαλύτερα. Στις εικόνες, τα πρώτα επίπεδα συχνά ανιχνεύουν ακμές ή γωνίες, τα μεσαία επίπεδα ανιχνεύουν υφές ή τμήματα, και τα βαθύτερα επίπεδα χρησιμοποιούν αυτά τα σήματα για να υποστηρίξουν μια τελική πρόβλεψη.
Η βασική ιδέα είναι ο διαμοιρασμός βαρών. Αντί να μαθαίνει ένα ξεχωριστό βάρος για κάθε ζεύγος εικονοστοιχείου-θέσης, ένα CNN επαναχρησιμοποιεί το ίδιο μικρό φίλτρο σε πολλές θέσεις. Αυτό το κάνει πολύ φθηνότερο από ένα πλήρως συνδεδεμένο επίπεδο πάνω στην ακατέργαστη εικόνα και το βοηθά να ανιχνεύει το ίδιο είδος μοτίβου σε περισσότερα από ένα σημεία.
Τι κάνει ένα συνελικτικό νευρωνικό δίκτυο
Σε ένα πλήρως συνδεδεμένο επίπεδο, κάθε έξοδος μπορεί να εξαρτάται από κάθε τιμή εισόδου ταυτόχρονα. Ένα CNN είναι πιο δομημένο. Χρησιμοποιεί μικρούς πυρήνες, που συχνά ονομάζονται φίλτρα, οι οποίοι εξετάζουν κάθε φορά ένα τοπικό τμήμα.
Για μια είσοδο ενός καναλιού και έναν πυρήνα , ένα στοιχείο εξόδου μπορεί να γραφτεί ως
Αυτή είναι η ιδέα του τοπικού σταθμισμένου αθροίσματος πίσω από ένα συνελικτικό επίπεδο. Σε πολλές βιβλιοθήκες μηχανικής μάθησης, η πράξη που υλοποιείται είναι τεχνικά συσχέτιση αντί για την ανεστραμμένη μαθηματική συνέλιξη, αλλά η πρακτική διαίσθηση είναι η ίδια: ο πυρήνας σαρώνει την είσοδο και παράγει έναν χάρτη χαρακτηριστικών.
Ο χάρτης χαρακτηριστικών σου δείχνει πού εμφανίζεται έντονα το μαθημένο μοτίβο.
Γιατί βοηθούν τα κοινά φίλτρα
Αν η ίδια κατακόρυφη ακμή εμφανίζεται κοντά στην πάνω αριστερή γωνία μιας εικόνας ή κοντά στο κέντρο, συνήθως θέλουμε το μοντέλο να την εντοπίζει και στις δύο περιπτώσεις. Ένα CNN το υποστηρίζει αυτό επαναχρησιμοποιώντας τις ίδιες παραμέτρους φίλτρου σε διαφορετικές θέσεις.
Αυτό έχει δύο πρακτικά αποτελέσματα:
- Μειώνει τον αριθμό των μαθημένων παραμέτρων σε σύγκριση με ένα πλήρως συνδεδεμένο επίπεδο πάνω στην ακατέργαστη εικόνα.
- Ενθαρρύνει το δίκτυο να ανιχνεύει επαναλαμβανόμενα τοπικά μοτίβα αντί να απομνημονεύει μία σταθερή θέση.
Αυτή η επαναχρησιμοποίηση είναι ένας από τους λόγους που τα CNN έγιναν αποτελεσματικά σε εργασίες εικόνας.
Πώς μοιάζει μια βασική αρχιτεκτονική CNN
Ένα βασικό CNN συχνά ακολουθεί αυτό το μοτίβο:
- συνελικτικό επίπεδο
- ενεργοποίηση όπως η ReLU
- προαιρετικό pooling ή υποδειγματοληψία προς τα κάτω
- περισσότερα συνελικτικά blocks
- τελικό επίπεδο πρόβλεψης
Τα πρώτα επίπεδα συνήθως συλλαμβάνουν απλή τοπική δομή. Τα βαθύτερα επίπεδα συνδυάζουν αυτές τις αποκρίσεις σε μεγαλύτερα, πιο ειδικά για την εργασία χαρακτηριστικά.
Το pooling δεν είναι υποχρεωτικό, αλλά όταν χρησιμοποιείται, μικραίνει τις χωρικές διαστάσεις ώστε τα επόμενα επίπεδα να δουλεύουν με μια πιο συμπαγή αναπαράσταση. Ένα συνηθισμένο παράδειγμα είναι το max pooling, που κρατά τη μεγαλύτερη τιμή σε κάθε μικρή περιοχή.
Αν το stride είναι και το padding είναι , τότε μια είσοδος με έναν πυρήνα παράγει έξοδο . Αυτός ο κανόνας μεγέθους είναι χρήσιμος όταν ελέγχεις αν ένα λυμένο παράδειγμα βγάζει νόημα.
Λυμένο παράδειγμα: πώς δημιουργείται ένας χάρτης χαρακτηριστικών CNN
Πάρε αυτή την εικόνα εισόδου :
Χρησιμοποίησε αυτόν τον πυρήνα :
Υπόθεσε stride και χωρίς padding. Αφού η είσοδος είναι και ο πυρήνας είναι , η έξοδος πρέπει να είναι . Κάθε στοιχείο εξόδου είναι το άθροισμα ενός τμήματος , επειδή κάθε στοιχείο του πυρήνα είναι ίσο με .
Η πάνω αριστερή τιμή εξόδου είναι
Το τμήμα ένα βήμα προς τα δεξιά είναι
οπότε
Αν υπολογίσουμε όλες τις έγκυρες θέσεις, παίρνουμε
Αυτή η έξοδος είναι ο χάρτης χαρακτηριστικών. Οι μεγάλες τιμές δείχνουν πού ο πυρήνας βρήκε ισχυρή αντιστοίχιση. Εδώ το φίλτρο αποκρίνεται πιο έντονα εκεί όπου εμφανίζεται ένα πλήρες φωτεινό μπλοκ .
Αν τώρα εφαρμόσεις ReLU, τίποτα δεν αλλάζει επειδή όλα τα στοιχεία είναι ήδη μη αρνητικά. Αν στη συνέχεια χρησιμοποιήσεις max pooling με stride , η έξοδος μετά το pooling γίνεται
Αυτό δεν δημιουργεί νέα πληροφορία. Κρατά τις ισχυρότερες κοντινές αποκρίσεις και μειώνει το χωρικό πλέγμα.
Αυτό το παράδειγμα είναι απλό, αλλά δείχνει καθαρά τον βασικό μηχανισμό: ένα φίλτρο μετακινείται, υπολογίζει τοπικά σταθμισμένα αθροίσματα και δημιουργεί έναν χάρτη για το πού εμφανίζεται ένα μοτίβο.
Τι μαθαίνει ένα CNN κατά την εκπαίδευση
Ο παραπάνω πυρήνας επιλέχθηκε με το χέρι, αλλά σε ένα πραγματικό CNN οι τιμές του φίλτρου μαθαίνονται από τα δεδομένα. Η εκπαίδευση προσαρμόζει αυτές τις τιμές ώστε οι χάρτες χαρακτηριστικών που προκύπτουν να γίνονται χρήσιμοι για την εργασία.
Αν η εργασία είναι ταξινόμηση εικόνων, το δίκτυο μαθαίνει φίλτρα που βοηθούν να διαχωρίζονται οι κλάσεις. Αν η εργασία είναι τμηματοποίηση ή ανίχνευση, τα επόμενα επίπεδα εκπαιδεύονται για αυτές τις εξόδους. Ο βασικός μηχανισμός είναι ο ίδιος: forward pass, loss, backpropagation, ενημέρωση παραμέτρων.
Συνηθισμένα λάθη όταν μαθαίνεις CNNs
Να νομίζεις ότι ένα CNN σημαίνει απλώς "ταξινομητής εικόνων"
Οι εικόνες είναι το κλασικό παράδειγμα, αλλά τα CNN αφορούν στην πραγματικότητα την τοπική δομή και τα κοινά φίλτρα. Αν οι κοντινές τιμές έχουν σημασία, η ίδια ιδέα μπορεί να είναι χρήσιμη και πέρα από τις εικόνες.
Να υποθέτεις ότι το pooling απαιτείται πάντα
Είναι συνηθισμένο, όχι καθολικό. Ορισμένες αρχιτεκτονικές μειώνουν το χωρικό μέγεθος με συνελίξεις με βήμα, ενώ άλλες διατηρούν περισσότερη χωρική λεπτομέρεια για περισσότερο χρόνο.
Να αγνοείς το stride και το padding
Το μέγεθος του χάρτη χαρακτηριστικών εξαρτάται από αυτές τις επιλογές. Αν αλλάξεις το stride ή το padding, αλλάζεις όχι μόνο το σχήμα της εξόδου, αλλά και ποιες τοπικές γειτονιές μπορεί να δει κάθε μονάδα.
Να αντιμετωπίζεις το επίπεδο μόνο ως τύπο
Ο τύπος της συνέλιξης έχει σημασία, αλλά σημασία έχει και η αρχιτεκτονική. Ένα CNN λειτουργεί επειδή η συνέλιξη, η ενεργοποίηση, η στοίβαξη και η εκπαίδευση συνεργάζονται.
Πότε είναι χρήσιμα τα συνελικτικά νευρωνικά δίκτυα
Τα CNN χρησιμοποιούνται ευρέως σε εργασίες υπολογιστικής όρασης όπως η ταξινόμηση εικόνων, η ανίχνευση αντικειμένων και η τμηματοποίηση. Εμφανίζονται επίσης σε ορισμένες εφαρμογές επεξεργασίας σήματος και ακολουθιών όπου τα τοπικά μοτίβα έχουν σημασία.
Είναι ιδιαίτερα χρήσιμα όταν η είσοδος έχει μια προφανή δομή πλέγματος ή διατεταγμένης γειτονιάς. Αν αυτή η συνθήκη είναι αδύναμη, μια διαφορετική αρχιτεκτονική μπορεί να ταιριάζει καλύτερα.
Ένα νοητικό μοντέλο που κάνει τα CNN πιο εύκολα στην κατανόηση
Σκέψου ένα CNN σαν ανιχνευτή μοτίβων που ξεκινά από μικρά μοτίβα και γίνεται πιο αφηρημένος όσο αυξάνεται το βάθος. Ένα επίπεδο ρωτά: "Εμφανίζεται αυτό το μικρό μοτίβο εδώ;" Τα επόμενα επίπεδα ρωτούν: "Συνδυάζονται αυτά τα απλούστερα μοτίβα σε κάτι πιο ουσιαστικό;"
Γι’ αυτό τα CNN είναι πιο εύκολο να κατανοηθούν όταν εστιάζεις στους χάρτες χαρακτηριστικών και όχι μόνο στη λέξη "συνέλιξη".
Δοκίμασε τη δική σου εκδοχή
Κράτησε την ίδια είσοδο, αλλά άλλαξε τον πυρήνα σε
Υπολόγισε ξανά τον χάρτη χαρακτηριστικών και δες ποιες περιοχές παράγουν τώρα μεγάλες θετικές ή αρνητικές αποκρίσεις. Αυτή η μικρή αλλαγή κάνει πολύ πιο ξεκάθαρο το πώς διαφορετικά φίλτρα ανιχνεύουν διαφορετικά μοτίβα.
Χρειάζεσαι βοήθεια με μια άσκηση;
Ανέβασε την ερώτησή σου και πάρε επαληθευμένη λύση βήμα-βήμα σε δευτερόλεπτα.
Άνοιξε το GPAI Solver →