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

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

Τι υπολογίζει η οπισθοδιάδοση

Η οπισθοδιάδοση δεν ενημερώνει από μόνη της τις παραμέτρους. Υπολογίζει κλίσεις όπως Lw\frac{\partial L}{\partial w} και Lb\frac{\partial L}{\partial b}, όπου LL είναι η απώλεια. Ένας βελτιστοποιητής όπως η κατάβαση κλίσης χρησιμοποιεί αυτές τις κλίσεις για να κάνει την πραγματική ενημέρωση.

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

Γιατί ο κανόνας αλυσίδας είναι η βασική ιδέα

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

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

Παράδειγμα οπισθοδιάδοσης με έναν νευρώνα

Χρησιμοποίησε έναν νευρώνα με μία είσοδο:

z=wx+bz = wx + b a=σ(z)a = \sigma(z) L=12(ay)2L = \frac{1}{2}(a - y)^2

Εδώ το xx είναι η είσοδος, το ww είναι το βάρος, το bb είναι η μετατόπιση, το aa είναι η πρόβλεψη, το yy είναι ο στόχος και το σ\sigma είναι η σιγμοειδής συνάρτηση.

Πάρε

x=2,w=0.5,b=0,y=1.x = 2, \qquad w = 0.5, \qquad b = 0, \qquad y = 1.

Βήμα 1: Πέρασμα προς τα εμπρός

Πρώτα υπολόγισε το σταθμισμένο άθροισμα του νευρώνα:

z=wx+b=0.52+0=1.z = wx + b = 0.5 \cdot 2 + 0 = 1.

Τώρα εφάρμοσε τη σιγμοειδή:

a=σ(1)0.731.a = \sigma(1) \approx 0.731.

Τώρα υπολόγισε την απώλεια:

L=12(0.7311)20.036.L = \frac{1}{2}(0.731 - 1)^2 \approx 0.036.

Η πρόβλεψη είναι κάτω από τον στόχο, άρα η απώλεια είναι θετική.

Βήμα 2: Πέρασμα προς τα πίσω

Τώρα υπολόγισε την κλίση ως προς το βάρος.

Ξεκίνα από την απώλεια και προχώρα προς τα μέσα:

La=ay.\frac{\partial L}{\partial a} = a - y.

Για τη σιγμοειδή,

az=a(1a).\frac{\partial a}{\partial z} = a(1-a).

Και για το σταθμισμένο άθροισμα,

zw=x,zb=1.\frac{\partial z}{\partial w} = x, \qquad \frac{\partial z}{\partial b} = 1.

Τώρα σύνδεσε τα κομμάτια μεταξύ τους:

Lw=Laazzw=(ay)a(1a)x.\frac{\partial L}{\partial w} = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial z} \cdot \frac{\partial z}{\partial w} = (a-y)a(1-a)x. Lb=Laazzb=(ay)a(1a).\frac{\partial L}{\partial b} = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial z} \cdot \frac{\partial z}{\partial b} = (a-y)a(1-a).

Αντικατάστησε με τους αριθμούς:

Lb(0.7311)(0.731)(10.731)0.0529\frac{\partial L}{\partial b} \approx (0.731 - 1)(0.731)(1 - 0.731) \approx -0.0529 Lw(0.0529)(2)0.1058.\frac{\partial L}{\partial w} \approx (-0.0529)(2) \approx -0.1058.

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

Αν χρησιμοποιήσεις κατάβαση κλίσης με ρυθμό μάθησης η=0.1\eta = 0.1, τότε

wnew=wηLw=0.50.1(0.1058)0.5106w_{\text{new}} = w - \eta \frac{\partial L}{\partial w} = 0.5 - 0.1(-0.1058) \approx 0.5106 bnew=bηLb=00.1(0.0529)0.0053.b_{\text{new}} = b - \eta \frac{\partial L}{\partial b} = 0 - 0.1(-0.0529) \approx 0.0053.

Αυτή είναι όλη η ιδέα σε μικρογραφία: πέρασμα προς τα εμπρός, απώλεια, πέρασμα προς τα πίσω, ενημέρωση.

Γιατί η οπισθοδιάδοση λειτουργεί για βαθιά δίκτυα

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

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

Συνηθισμένα λάθη στην οπισθοδιάδοση

Σύγχυση της οπισθοδιάδοσης με την κατάβαση κλίσης

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

Να ξεχνάς ότι η απώλεια βρίσκεται στο τέλος

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

Να αγνοείς τη συμπεριφορά της συνάρτησης ενεργοποίησης

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

Να υποθέτεις ότι ένα πέρασμα προς τα πίσω σημαίνει ότι το μοντέλο έμαθε

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

Πότε χρησιμοποιείται η οπισθοδιάδοση

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

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

Ένας πρακτικός τρόπος να το θυμάσαι

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

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

Δοκίμασε ένα παρόμοιο πρόβλημα

Κράτησε το ίδιο παράδειγμα, αλλά άλλαξε τον στόχο από y=1y = 1 σε y=0y = 0. Υπολόγισε ξανά τα Lw\frac{\partial L}{\partial w} και Lb\frac{\partial L}{\partial b} και μετά έλεγξε πώς αλλάζουν τα πρόσημα. Αυτή η μία αλλαγή κάνει τον ρόλο της απώλειας πολύ πιο ξεκάθαρο από το να απομνημονεύεις μόνο τους τύπους.

Χρειάζεσαι βοήθεια με μια άσκηση;

Ανέβασε την ερώτησή σου και πάρε επαληθευμένη λύση βήμα-βήμα σε δευτερόλεπτα.

Άνοιξε το GPAI Solver →