Gradient Descent

βαθιά μάθηση
μαθηματικά
βαθμίδα κατάβασης
Gradient Descent cover image

Εισαγωγή

Φανταστείτε ότι έχουμε μια συνάρτηση f(x)f(x) και θα θέλαμε να βρούμε το ελάχιστο της. Τι θα έκανες ;

Απλό σωστά; Χρειάζεται μόνο να λύσουμε την ακόλουθη εξίσωση:

f(x)=0f'(x) = 0

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

Ας χτίσουμε λίγη διαίσθηση

Ας υποθέσουμε ότι έχουμε μια συνάρτηση f με το αντίστοιχο γράφημα:

Graph 1

Ας ξεκινήσουμε με ένα τυχαίο σημείο x0x_{0}. Ο στόχος είναι να μετακινήσετε αυτό το σημείο και να το κάνετε όλο και πιο κοντά στο xx* έτσι ώστε f(f'(x*)=0) = 0. Το πρόβλημα λοιπόν μπορεί να χωριστεί σε δύο μέρη:

  • Προς ποια κατεύθυνση πρέπει να μετακινήσουμε το σημείο xx; Αριστερά ή δεξιά ;

  • Πόσο να το μετακινήσουμε;

Η κατεύθυνση

Ας δημιουργήσουμε λίγη διαίσθηση για να απαντήσουμε στην πρώτη ερώτηση. Ρίξτε μια ματιά στο παρακάτω σημείο:

Graph 2

Graph 3

Σημειώστε ότι:

  • όταν το σημείο x0x_{0} βρίσκεται στα δεξιά του βέλτιστου σημείου xx*, η εφαπτομένη του ανεβαίνει.

  • όταν το σημείο x0x_{0} βρίσκεται στα δεξιά του βέλτιστου σημείου xx*, η εφαπτομένη του κατεβαίνει.

Η κατεύθυνση μιας γραμμής καθορίζεται από το πρόσημο της κλίσης της:

  • Μια γραμμή ανεβαίνει ποδηλωˊνει\υποδηλώνει η κλίση aa είναι θετική.

  • Μια γραμμή κατεβαίνει ποδηλωˊνει\υποδηλώνει η κλίση aa είναι αρνητική.

Σημειώστε ότι: \

Η κλίση της εφαπτομένης μιας συνάρτησης σε ένα ορισμένο σημείο x0x_{0} δεν είναι μεγαλύτερη από την παράγωγο σε αυτό το σημείο f(x0)f'(x_{0}):

tangent(x0):g(x)=f(x0).(xx0)+f(x0)tangent(x*{0}): g(x) = f'(x*{0}).(x-x*{0}) + f(x*{0})

Ως απάντηση λοιπόν στην ερώτηση "Πού πρέπει να μετακινήσουμε x0x_{0} ?":

  • f(x0)<0f'(x_{0}) < 0     \implies x0x_{0} στα δεξιά του xx*     \implies Πρέπει να μετακινήσουμε το x0x_{0} προς τα αριστερά.

  • f(x0)>0f'(x_{0}) > 0     \implies x0x_{0} στα αριστερά του xx*     \implies Πρέπει να μετακινήσουμε το x0x_{0} προς τα δεξιά.

Τα βήματα

Τώρα για τη δεύτερη ερώτηση, Πόσο πρέπει να μετακινήσουμε x0x_{0} ?

Ρίξτε μια ματιά στα ακόλουθα παραδείγματα:

Graph 4

Graph 5

Μπορούμε να συμπεράνουμε ότι:

  • x0x_{0} είναι κοντά στο xx* => Η κλίση της εφαπτομένης είναι μικρή => η f(x0)f'(x_{0}) είναι μικρή.

  • Η x0x_{0} απέχει από την xx* => Η κλίση της εφαπτομένης είναι μεγάλη => η f(x0)f'(x_{0}) είναι μεγάλη.

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

Κλίση κατάβασης

Το Gradient descent είναι η διατύπωση των απαντήσεων των δύο προηγούμενων ερωτήσεων. Είναι ένας επαναληπτικός αλγόριθμος βελτιστοποίησης που προσεγγίζει το ελάχιστο xx* της συνάρτησης ξεκινώντας από ένα τυχαίο αρχικό σημείο x0x_{0}. Ο αλγόριθμος δηλώνεται ως εξής:

xn+1=xnlr×dfdx_nx*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x\_{n}}

που:

  • dfdxn\frac{\mathrm{d} f}{\mathrm{d} x*{n}} δεν είναι περισσότερο από την παράγωγο του ff στο σημείο xnx*{n}.

  • Το lrlr είναι μια θετική σταθερά που καθορίζει πόσο μεγάλα θα είναι τα βήματα.

Σημειώσε ότι:

  • Το xnx_{n} βρίσκεται στα δεξιά του xx* => dfdxn>0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 => xn+1=xnθετικοˊx_{n+ 1} = x_{n} - θετικό => xnx_{n} μετακινείται προς τα αριστερά.

  • Το xnx_{n} βρίσκεται στα αριστερά του xx* => dfdxn<0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0 => xn+1=xn+θετικοˊx*{n +1} = x*{n} + θετικό => xnx_{n} μετακινείται προς τα δεξιά.

  • xnx_{n} κοντά στο xx* => dfdxn\frac{\mathrm{d} f}{\mathrm{d} x_{n}} κοντά στο 00 => Μικρή ενημέρωση σε xnx_{ n}.

Κουίζ

  • Πότε σταματά η επανάληψη της κλίσης κατάβασης:

  • Όταν το xnx_{n} είναι αρκετά μικρό.

  • Όταν το xnx_{n} είναι κοντά στο x0x_{0} .

  • Όταν dfdx_n=0\frac{\mathrm{d} f}{\mathrm{d} x\_{n}} = 0 . XXX

  • Πώς επιλέγουμε x0x_{0}:

  • Το επιλέγουμε τυχαία. XXX

  • Το παίρνουμε στη γειτονιά των xnx{n}.

  • Εξαρτάται από το πρόβλημα.

  • Γιατί χρειαζόμαστε κλίση κατάβασης:

  • Επειδή οι υπολογιστές δεν είναι αρκετά ισχυροί για τον υπολογισμό των παραγώγων.

  • Επειδή είναι εξαιρετικά δύσκολο να βρείτε τους τύπους παραγώγων των μοντέλων βαθιάς μάθησης. XXX

  • Επειδή οι συναρτήσεις έχουν περισσότερα από ένα τοπικά ελάχιστα.


Career Services background pattern

Υπηρεσίες καριέρας

Contact Section background image

Ας μείνουμε σε επαφή

Code Labs Academy © 2025 Όλα τα δικαιώματα διατηρούνται.