|
- %
- % Optimization Techniques Work 2 report
- %
- % authors:
- % Χρήστος Χουτουρίδης ΑΕΜ 8997
- % cchoutou@ece.auth.gr
-
-
- \documentclass[a4paper, 11pt]{AUTHReport}
-
- % Document configuration
- \AuthorName{Χρήστος Χουτουρίδης}
- \AuthorMail{cchoutou@ece.auth.gr}
- \AuthorAEM{8997}
-
- % \CoAuthorName{CoAuthor Name}
- % \CoAuthorMail{CoAuthor Mail}
- % \CoAuthorAEM{AEM}
-
- % \WorkGroup{Ομάδα Χ}
-
- \DocTitle{1η Εργαστηριακή Άσκηση}
- \DocSubTitle{Ελαχιστοποίηση συναρτήσεων πολλών μεταβλητών χωρίς περιορισμούς με χρήση παραγώγων}
-
- \Department{Τμήμα ΗΜΜΥ. Τομέας Ηλεκτρονικής}
- \ClassName{Τεχνικές Βελτιστοποίησης}
-
- \InstructorName{Γ. Ροβιθάκης}
- \InstructorMail{rovithak@auth.gr}
- \CurrentDate{\today}
-
- \usepackage{capt-of}
- \usepackage{enumitem}
- \usepackage{tabularx}
- \usepackage{array}
- \usepackage{amssymb}
- \usepackage{amsfonts}
- \usepackage{amsmath}
- \usepackage{commath}
-
- \usepackage{float}
-
- \hypersetup{
- colorlinks=true,
- linkcolor=red, % Internal links, those generated by cross-referenced elements
- filecolor=blue, % Links to local files
- urlcolor=blue % Links to web sites
- }
-
- \begin{document}
-
- \setlist[itemize]{topsep=0pt, partopsep=0pt, itemsep=3pt, parsep=3pt}
-
- \InsertTitle
-
- %\tableofcontents
-
- \sloppy
-
- \section{Εισαγωγή}
- Η παρούσα εργασία αφορά το πρόβλημα της ελαχιστοποίησης μιας δοσμένης συνάρτησης πολλών μεταβλητών $f: \mathbb{R}^n \rightarrow \mathbb{R}$ χωρίς περιορισμούς.
- Για το σκοπό αυτό κάνουμε χρήση τριών μεθόδων.
- Της μεθόδου μέγιστης καθόδου (Steepest Descent), της μεθόδου Newton, και της Levenberg-Marquardt.
- Ακόμα για κάθε μία από αυτές θα υλοποιήσουμε τρεις διαφορετικές τεχνικές υπολογισμού βήματος.
-
- \section{Παραδοτέα}
- Τα παραδοτέα της εργασίας αποτελούνται από:
- \begin{itemize}
- \item Την παρούσα αναφορά.
- \item Τον κατάλογο \textbf{scripts/}, που περιέχει τον κώδικα της MATLAB.
- \item Το \href{https://git.hoo2.net/hoo2/OptimizationTechniques/src/branch/master/Work2}{σύνδεσμο} με το αποθετήριο που περιέχει όλο το project με τον κώδικα της MATLAB, της αναφοράς και τα παραδοτέα.
- \end{itemize}
-
- \section{Προγραμματιστική προσέγγιση}
- Για τον προγραμματισμό και εκτέλεση των μεθόδων της παρούσας εργασίας έγινε χρήση της MATLAB.
- Στον κατάλογο \textbf{scripts}, περιέχονται όλες οι μέθοδοι και οι τεχνικές υπολογισμού βημάτων με τη μορφή συναρτήσεων καθώς και scripts που τις καλούν.
- Για κάθε μία μέθοδο (ένα θέμα της εργασίας), υπάρχει το αντίστοιχο script που περιέχει τους υπολογισμούς, τις κλήσεις των μεθόδων και τη δημιουργία των διαγραμμάτων.
- Για το πρώτο θέμα το αρχείο Script\_1\_Plots.m για το δεύτερο το Script\_2\_Steepest\_descent.m και ούτω καθεξής.
- Στην παρούσα εργασία η υλοποίηση του κώδικα ακολουθεί την τεχνική της προηγούμενης εργασίας και “ομαδοποιεί” αρκετές λειτουργίες.
- Πιο συγκεκριμένα.
-
- \subsection{Κλήση μεθόδων επιλογής βήματος $\gamma_k$}
- \label{subsec:polymorphic-calls}
- Δεδομένου ότι οι μέθοδοι θα πρέπει να καλεστούν και εκτελεστούν με παραπάνω από μία τεχνική επιλογής βήματος $\gamma_k$, δημιουργήσαμε εσωτερικά της κάθε μεθόδου ένα κοινό interface για τις μεθόδους επιλογής βήματος.
- Αυτό έχει τη μορφή: \textit{\textbf{gamma\_<method>(f, grad\_f, dk, xk)}}, όπου το \textbf{f} είναι η αντικειμενική συνάρτηση, \textbf{grad\_f} η συνάρτηση κλίσης της, \textbf{dk} η τιμή της συνάρτησης κλίσης στο xk και \textbf{xk} το σημείο ενδιαφέροντος.
- Για την κάθε μία από αυτές δημιουργήσαμε ξεχωριστή συνάρτηση που υλοποιεί το παραπάνω interface.
- Μία για σταθερό βήμα, μία για επιλογή βήματος που ελαχιστοποιεί την $f(x_k + \gamma_k d_k)$ και μία με τη μέθοδο Armijo.
- Για την επιλογή και κλήση των μεθόδων επιλογής βήματος εισαγάγαμε μία νέα παράμετρο string που χρησιμοποιείται ως enumerator και με βάση αυτή γίνεται η τελική επιλογή.
- Έτσι για παράδειγμα η κλήση \textit{method\_newtown(f, gradf, [0, 0], 0.001, 1000, 'armijo')} υλοποιεί τη μέθοδο newton χρησιμοποιώντας τη μέθοδο Armijo για επιλογή βήματος ενώ η \textit{method\_newtown(f, gradf, [0, 0], 0.001, 1000, 'minimized')}, χρησιμοποιεί βήμα που ελαχιστοποιεί την $f(x_k + \gamma_k d_k)$.
-
- \subsection{Symbolic expression functions}
- Μία ακόμη προγραμματιστική τεχνική που ακολουθήθηκε είναι η χρήση \textbf{symbolic expression} για την αναπαράσταση των διαφορετικών αντικειμενικών συναρτήσεων.
- Ο λόγος που επιλέχθηκε είναι η \textbf{δυνατότητα εξαγωγής ενός symbolic expression που αναπαριστά την κλίση $\nabla f$ και τον Εσσιανό $\nabla^2f$ μιας συνάρτησης} από την MATLAB, κάνοντας χρήση των εντολών \textit{gradient()} και \textit{hessian()}.
- Αν αντίθετα χρησιμοποιούσαμε απλές συναρτήσεις, πολυώνυμα ή lambdas για την αναπαράσταση των αντικειμενικών συναρτήσεων, τότε για τον υπολογισμό της κλίσης και του Εσσιανού θα έπρεπε:
- \begin{itemize}
- \item Είτε να υπολογίζαμε αριθμητικά τις παραγώγους gradient και hessian μέσα στις μεθόδους, κάτι που θα εισήγαγε \textit{\textbf{αχρείαστο αριθμητικό σφάλμα}}.
- \item Είτε να κάναμε χρήση δύο επιπλέων συναρτήσεων (ή πολυωνύμων) για την αναπαράσταση τους, κάτι που ουσιαστικά θα δημιουργούσε \textit{\textbf{πλεονασμό πληροφορίας εισόδου}} και άρα μεγαλύτερη πιθανότητα να κάνουμε λάθος.
- \end{itemize}
- Η αναπαράσταση όμως με χρήση symbolic expression είναι πιο “βαριά” όταν χρειάζεται να υπολογίσουμε την τιμή μιας συνάρτησης σε κάποιο σημείο (subs(expr, number)).
- Αυτό είναι κάτι που χρειάζεται εκτενώς στον κώδικά μας.
- Για το λόγο αυτό, ενώ η συνάρτηση δίνεται ως symbolic expression, μέσω αυτής υπολογίζονται αυτόματα η κλίση, ο Εσσιανός αλλά και οι “κανονικές” συναρτήσεις MATLAB που τις υλοποιούν.
- Έτσι έχουμε την ακριβή αναπαράσταση της κλίσης και του Εσσιανού ως συναρτήσεις χωρίς να πληρώνουμε το κόστος της subs().
-
- \section{Απεικόνιση της συνάρτησης - Θέμα 1}
- Η συνάρτηση με την οποία ασχολούμαστε στην παρούσα εργασία είναι η:
- \boldmath
- \begin{equation}
- f(x,y) = x^5 \cdot e^{-x^2 - y^2}
- \end{equation}
- \label{eq:ObjectiveFunction}
- \unboldmath
- Στο παρακάτω σχήμα \ref{fig:plot3dFunction} φαίνεται η τρισδιάστατη απεικόνιση της συνάρτησης.
- \InsertFigure{!h}{0.8}{fig:plot3dFunction}{../scripts/figures/Plot_Function.png}{Γραφική παράσταση της f}
-
- Από το σχήμα μπορούμε πολύ εύκολα να διακρίνουμε ότι η συνάρτηση έχει ένα ευκρινές μέγιστο και ένα ελάχιστο στο διάστημα $x,y \in [-3, 3]$.
- Για να πάρουμε μια καλύτερη αίσθηση για το που βρίσκονται αυτά τα τοπικά ακρότατα, παρακάτω παραθέτουμε ένα γράφημα με τις ισοβαρείς καμπύλες της $f$.
- \InsertFigure{H}{0.8}{fig:plotContour}{../scripts/figures/Plot_Contour.png}{Ισοβαρείς της f}
-
- Από το παραπάνω σχήμα \ref{fig:plotContour} φαίνεται ότι το ελάχιστο της f βρίσκεται στο αρνητικό ημιεπίπεδο των χ, κοντά στο $y = 0$
- \par
- Τα διαγράμματα για τη μέθοδο δημιουργούνται εκτελώντας το αρχείο \textbf{Script\_1\_Plots.m}
-
- \section{Τεχνικές υπολογισμού βήματος}
- Πριν προχωρήσουμε στα επόμενα θέματα της εργασίας και στην ανάλυση των μεθόδων υπολογισμού του ελάχιστου, θέλουμε να αναφερθούμε στις διαφορετικές τεχνικές επιλογής βήματος $\gamma_k$ και ειδικότερα για αυτή της ελαχιστοποίησης της $f(x_k + \gamma_k d_k)$ και την Armijo.
-
- \subsection{Ελαχιστοποίηση της $f(x_k + \gamma_k d_k)$}
- Η μέθοδος αυτή αναζητά την τιμή $\gamma_k$ που ελαχιστοποιεί την τιμή της συνάρτησης κατά μήκος της κατεύθυνσης $d_k$ (αρχείο: \textbf{gamma\_minimized.m}).
- Δηλαδή, λύνουμε το μονοδιάστατο πρόβλημα:
- \boldmath
- \[\displaystyle \min{\gamma_k} \{f(x_k + \gamma_k d_k)\} \]
- Η κατεύθυνση $d_k$ μπορεί να είναι:
- \begin{itemize}
- \item Η αρνητική κλίση $-\nabla f(x_k)$ (Steepest Descent).
- \item Η Newton direction $-{H_k}^{-1} \nabla f(x_k)$ (Newton και Levenberg-Marquardt).
- \end{itemize}
- \unboldmath
- Πλεονεκτήματα της μεθόδου είναι η \textbf{ακρίβεια}, καθώς το βήμα $\gamma_k$ υπολογίζεται με βέλτιστο τρόπο για τη συγκεκριμένη κατεύθυνση και η \textbf{γρήγορη σύγκλιση}, ειδικά σε προβλήματα όπου η $f(x)$ είναι καμπυλωτή με $\gamma_k$ επακριβώς ορισμένο.
- Στα μειονεκτήματα μπορούμε να αναφέρουμε το \textbf{υπολογιστικό κόστος}, καθώς ο υπολογισμός του $\gamma_k$ απαιτεί πολλαπλές αξιολογήσεις της $f(x)$.
-
- \subsection{Armijo rule}
- Η Armijo rule είναι μια προσαρμοστική τεχνική που επιλέγει το $\gamma_k$ για να εξασφαλίσει επαρκή μείωση της συνάρτησης (αρχείο: \textbf{gamma\_armijo.m}).
- Η βασική ιδέα είναι ότι η συνάρτηση πρέπει να μειώνεται "αρκετά" σε κάθε βήμα, χωρίς να χρειάζεται να υπολογίζεται το ακριβές ελάχιστο.
- Η συνθήκη του Armijo είναι:
- \boldmath
- \[ f(x_k + \gamma_k d_k) \leq f(x_k) + \sigma\gamma_k {d_k}^T\nabla f(x_k) \]
- Όπου $\sigma \in (0, 0.1)$ είναι μια σταθερά (τυπικά $\sigma = 0.1$) και $\gamma_k$ αρχικά να ορίζεται ως 1 και να μειώνεται προοδευτικά (π.χ., $\gamma_k = \beta \cdot \gamma_k$) έως ότου ικανοποιηθεί η συνθήκη.
- \unboldmath
- \par
- Πλεονεκτήματα της μεθόδου είναι η \textbf{σταθερότητα}, καθώς αποτρέπει πολύ μεγάλα βήματα που μπορεί να αυξήσουν την τιμή της $f(x)$, αλλά και η \textbf{ανθεκτικότητα}, καθώς λειτουργεί καλά ακόμα και όταν η $f(x)$ δεν συμπεριφέρεται πολύ καλά.
- Στα μειονεκτήματα μπορούμε να αναφέρουμε την \textbf{εξάρτησή της από τις παραμέτρους} \boldmath $\sigma$ και $\beta$\unboldmath, μια κακή επιλογή των οποίων μπορεί να οδηγήσει σε αργή σύγκλιση.
-
- \section{Μέθοδος Μέγιστης Καθόδου - Θέμα 2}
- Η πρώτη μέθοδος που χρησιμοποιούμε στην εργασία, είναι η μέθοδος μέγιστης καθόδου (Steepest descent) (αρχείο: \textbf{method\_steepest\_descent.m}).
- Είναι μια μέθοδος πρώτης τάξης που χρησιμοποιεί την κατεύθυνση της αρνητικής κλίσης $\nabla f(x,y)$ της $f$ ως κατεύθυνση καθόδου.
- Η μέθοδος θεωρείται βασική και συχνά χρησιμοποιείται ως εισαγωγή στις μεθόδους βελτιστοποίησης.
- \par
- Η μέθοδος επιλέγει την κατεύθυνση $d_k = -\nabla f(x_k)$, η οποία είναι η κατεύθυνση της μέγιστης τοπικής μείωσης της συνάρτησης.
- Στη συνέχεια, υπολογίζεται το βήμα $\gamma_k$ για να βρεθεί το επόμενο σημείο $x_{k+1} = x_k + \gamma_k d_k$.
- Για να χρησιμοποιήσουμε τη μέθοδο, η συνάρτηση $f$ \textbf{πρέπει να είναι συνεχής και διαφορίσιμη} και η κλίση $\nabla f$ να είναι υπολογίσιμη.
- Επίσης για την εφαρμογή της μεθόδου, για το αρχικό σημείο θα πρέπει \boldmath$\nabla f(x_0) \neq 0$\unboldmath.
- Όλοι οι υπολογισμοί και τα διαγράμματα για τη μέθοδο βρίσκονται στο αρχείο \textbf{Script\_2\_Steepest\_descent.m}
-
- \subsection{Σημείο εκκίνησης (0,0)}
- Για το σημείο (0, 0) η κλίση της $f$ είναι: $\nabla f(0,0) = \begin{bmatrix} 0 \\ 0 \end{bmatrix}$, με αποτέλεσμα η μέθοδος να μην μπορεί να εφαρμοστεί για κανένα τρόπο υπολογισμού βήματος.
-
- \subsection{Σημείο εκκίνησης (-1,1)}
- Για το σημείο (-1, 1) η τιμή της $f$ είναι: $f(-1, 1) = -0.1353$ και το διάνυσμα της κλίσης: $\nabla f(0,0) = \begin{bmatrix} 0.4060 \\ 0.2707 \end{bmatrix}$, επομένως μπορούμε να εφαρμόσουμε τη μέθοδο.
-
- \par
- \underline{Σταθερό βήμα} \\
- Επιλέγοντας ακρίβεια $\epsilon = 0.0001$, εκτελούμε την μέθοδο \textit{method\_steepest\_descent()} και υπολογίζουμε τον αριθμό επαναλήψεων για διαφορετικές τιμές $\gamma_k$.
- \InsertFigure{H}{0.8}{fig:StDes_Iter_o_gamma_2}{../scripts/figures/StDes_Iter_o_gamma_2.png}{Αριθμός επαναλήψεων για διαφορετικές τιμές $\gamma_k$ [Μέγιστη Κάθοδος].}
-
- Στο παραπάνω σχήμα \ref{fig:StDes_Iter_o_gamma_2} παρατηρούμε ότι για τιμές του $\gamma_k > 0.61$ η μέθοδος αποκλίνει.
- Από την παραπάνω διαδικασία επίσης υπολογίζουμε το $\gamma_k = 0,46768$ για το οποίο η μέθοδος συγκλίνει με τα λιγότερα βήματα.
- Στο παρακάτω σχήμα \ref{fig:StDes_fixed_2} αναπαριστούμε την πορεία των σημείων καθώς συγκλίνουν στο ελάχιστο.
- \InsertFigure{H}{0.8}{fig:StDes_fixed_2}{../scripts/figures/StDes_fixed_2.png}{Σύγκλιση της μεθόδου Steepest descent [fixed $\gamma_k$].}
-
- \par
- \underline{Ελαχιστοποίηση της $f(x_k + \gamma_k d_k$)} \\
- Για την ελαχιστοποίηση της $f$, χρησιμοποιήθηκε η bisection από την προηγούμενη εργασία, η οποία τροποποιήθηκε ώστε δέχεται functions και όχι symbolic expressions.
- \InsertFigure{H}{0.8}{fig:StDes_minimized_2}{../scripts/figures/StDes_minimized_2.png}{Σύγκλιση της μεθόδου Steepest descent [minimized f].}
- Από το γράφημα φαίνεται τόσο ότι η μέθοδος συγκλίνει κοντά στο ελάχιστο γρηγορότερα, όσο και ότι πραγματοποιεί “διορθώσεις πορείας”.
-
- \par
- \underline{Armijo rule} \\
- Για τη μέθοδο η βασική ιδέα είναι να ξεκινήσει ο αλγόριθμος από ένα μεγάλο $\gamma_k = 1$ και συνεχώς να μειώνεται με βάση τον κανόνα Armijo.
- Μετά από ένα tuning των παραμέτρων της μεθόδου καταλήξαμε στα $\beta=0.4, \sigma=0.1$
- \InsertFigure{H}{0.8}{fig:StDes_armijo_2}{../scripts/figures/StDes_armijo_2.png}{Σύγκλιση της μεθόδου Steepest descent [armijo rule].}
-
- \par
- \underline{Σύγκριση} \\
- Στο παρακάτω διάγραμμα φαίνονται τα βήματα αλλά ο ρυθμός σύγκλισης της κάθε μεθόδου.
- \InsertFigure{H}{0.8}{fig:StDes_compare_2}{../scripts/figures/StDes_compare_2.png}{Ευκλείδεια απόσταση από το ελάχιστο για κάθε μέθοδο υπολογισμού $\gamma_k$ [Steepest descent].}
-
- \subsection{Σημείο εκκίνησης (1,-1)}
- Για το σημείο (1, -1) η τιμή της $f$ είναι: $f(1, -1) = -0.1353$ και το διάνυσμα της κλίσης: $\nabla f(0,0) = \begin{bmatrix} 0.4060 \\ 0.2707 \end{bmatrix}$, επομένως μπορούμε να εφαρμόσουμε τη μέθοδο.
-
- \par
- \underline{Σταθερό βήμα} \\
- Για σταθερό βήμα εκτελέσαμε διαδοχικά τη μέθοδο \textit{method\_steepest\_descent()} για να υπολογίσουμε τον αριθμό επαναλήψεων για διαφορετικές τιμές $\gamma_k$, όμως σε καμία τιμή ο αλγόριθμος δεν καταφέρνει να συγκλίνει.
- Ακόμα και για μεγάλες τιμές βήματος, όπως για παράδειγμα $\gamma_k = 1$, ο αλγόριθμος εγκλωβίζεται στο δεξιό ημιεπίπεδο, όπως φαίνεται και στο διάγραμμα \ref{fig:StDes_fixed_3} παρακάτω.
- \InsertFigure{H}{0.8}{fig:StDes_fixed_3}{../scripts/figures/StDes_fixed_3.png}{Μη σύγκλιση της μεθόδου Steepest descent [Fixed step].}
-
- \par
- \underline{Ελαχιστοποίηση της $f(x_k + \gamma_k d_k$)} \\
- \InsertFigure{H}{0.8}{fig:StDes_minimized_3}{../scripts/figures/StDes_minimized_3.png}{Σύγκλιση της μεθόδου Steepest descent [minimized f].}
- Για υπολογισμό βήματος ελαχιστοποιώντας τη $f(x_k + \gamma_k d_k)$, όπως φαίνεται και από το γράφημα \ref{fig:StDes_minimized_3}, η μέθοδος συγκλίνει, καταφέρνοντας να περάσει την περιοχή με μηδενικές κλίσεις κοντά στον άξονα των y.
-
- \par
- \underline{Armijo rule} \\
- \InsertFigure{H}{0.8}{fig:StDes_armijo_3}{../scripts/figures/StDes_armijo_3.png}{Μη σύγκλιση της μεθόδου Steepest descent [armijo rule].}
- Αντίθετα η μέθοδος armijo δεν συγκλίνει, καθώς και αυτή εγκλωβίζεται στο δεξιό ημιεπίπεδο.
-
- \section{Μέθοδος Newton - Θέμα 3}
- Η δεύτερη μέθοδος που χρησιμοποιούμε στην εργασία, είναι η μέθοδος Newton (αρχείο: \textbf{method\_newton.m}).
- Η μέθοδος χρησιμοποιεί πληροφορίες δεύτερης τάξης (Εσσιανό - Hessian) για τη βελτίωση της κατεύθυνσης καθόδου.
- Η μέθοδος ορίζει την κατεύθυνση
- \boldmath\[d_k = -{H_k}^{-1}\nabla f(x_k)\]\unboldmath
- Όπου $H_k$ είναι ο Εσσιανός πίνακας της $f$ στο $x_k$.
- Το επόμενο σημείο υπολογίζεται ως
- \boldmath\[x_{k+1} = x_k + \gamma_k d_k\]\unboldmath
- Ο υπολογισμός βήματος γίνεται παλι είτε με σταθερό βήμα, είτε με ελαχιστοποίηση της $f(x_k + \gamma_k d_k)$, είτε με τον κανόνα armijo.
- Για να λειτουργήσει η μέθοδος, η $f$ πρέπει να είναι \textbf{δύο φορές διαφορίσιμη} και ο Εσσιανός \boldmath$H_k$\unboldmath να είναι \textbf{θετικά ορισμένος και αντιστρέψιμος}.
- \par
- Στα πλεονεκτήματα της μεθόδου είναι η \textbf{ταχύτερη σύγκλιση} από την Steepest Descent για κυρτές συναρτήσεις και το γεγονός ότι εκμεταλλεύεται την \textbf{πληροφορία καμπυλότητας} της συνάρτησης.
- Όμως είναι υπολογιστικά δαπανηρή και δεν είναι ανθεκτική σε μη κυρτές συναρτήσεις ή σε περιπτώσεις όπου ο Εσσιανός είναι κακώς ορισμένος.
- Όλοι οι υπολογισμοί για τη μέθοδο βρίσκονται στο αρχείο \textbf{Script\_3\_Newton.m}
-
- \subsection{Σημείο εκκίνησης (0,0)}
- Για το σημείο $x_k = (0, 0)$ η κλίση της $f$ είναι: $\nabla f(x_k) = \begin{bmatrix} 0 \\ 0 \end{bmatrix}$ και ο εσσιανός $H(x_k) = \begin{bmatrix} 0 & 0 \\ 0 & 0 \end{bmatrix}$ με αποτέλεσμα η μέθοδος και εδώ να μην μπορεί να εφαρμοστεί για κανένα τρόπο υπολογισμού βήματος.
-
- \subsection{Σημείο εκκίνησης (-1,1)}
- Για το σημείο $x_k = (-1, 1)$ η κλίση της $f$ είναι: $\nabla f(x_k) = \begin{bmatrix} 0.4060 \\ 0.2707 \end{bmatrix}$ και ο εσσιανός $H(x_k) = \begin{bmatrix} -0.2707 & -0.8120 \\ -0.8120 & -0.2707 \end{bmatrix}$ με ιδιοτιμές $\lambda = \begin{bmatrix} -1.0827 \\ 0.5413 \end{bmatrix}$.
- Από τα παραπάνω προκύπτει πως ο Εσσιανός είναι αόριστος και άρα δεν μπορεί να εφαρμοστεί η μέθοδος, για κανένα τρόπο υπολογισμού βήματος.
-
- \subsection{Σημείο εκκίνησης (1,-1)}
- Για το σημείο $x_k = (1, -1)$ η κλίση της $f$ είναι: $\nabla f(x_k) = \begin{bmatrix} 0.4060 \\ 0.2707 \end{bmatrix}$ και ο εσσιανός $H(x_k) = \begin{bmatrix} 0.2707 & 0.8120 \\ 0.8120 & 0.2707 \end{bmatrix}$ με ιδιοτιμές $\lambda = \begin{bmatrix} -0.5413 \\ 1.0827 \end{bmatrix}$.
- Και εδώ, από τα παραπάνω προκύπτει πως ο Εσσιανός είναι αόριστος και άρα δεν μπορεί να εφαρμοστεί η μέθοδος, για κανένα τρόπο υπολογισμού βήματος.
-
- \section{Μέθοδος Levenberg-Marquardt - Θέμα 4}
- Η τελευταία μέθοδος που χρησιμοποιούμε στην εργασία, είναι η μέθοδος Levenberg-Marquardt (αρχείο: \textbf{method\_lev\_mar.m}).
- Πρόκειται για μια τροποποιημένη έκδοση της μεθόδου Newton, η οποία εισάγει έναν παράγοντα απόσβεσης για τη σταθεροποίηση όταν ο εσσιανός δεν είναι θετικά ορισμένος.
- \boldmath
- Για το λόγο αυτό χρησιμοποιείται ένας προσαρμοσμένος εσσιανός $H_k' = H_k + \mu_k I$, όπου $\mu_k > 0$ ένας παράγοντας, τέτοιος ώστε ο $H_k'$ να είναι θετικά ορισμένος.
- Έτσι σε κάθε βήμα, γίνεται έλεγχος των ιδιοτιμών του εσσιανού.
- Αν υπάρχει ιδιοτιμή μικρότερη ή ίση με το 0, τότε υπολογίζεται ο παράγοντας \[\mu_k = \abs{\min\{\lambda(H_k)\}} + \epsilon \]
- Όπου $\epsilon > 0$ ένας παράγοντας προσαύξησης ώστε να βεβαιωθούμε πως ο παραγόμενος προσαρμοσμένος Εσσιανός $H_k' = H_k + \mu_k I$ είναι θετικά ορισμένος και δεν έχει κάποια μηδενική ιδιοτιμή.
- \unboldmath
- Να σημειώσουμε εδώ πως για μεγάλες τιμές του $\mu_k$ η μέθοδος συμπεριφέρεται σαν Gradient Descent, ενώ για μικρές προσεγγίζει τη μέθοδο Newton.
- \par
- Για να λειτουργήσει η μέθοδος, η $f$ πρέπει να είναι \textbf{δύο φορές διαφορίσιμη}.
- Επίσης σημαντικό ρόλο στην ευστάθεια της μεθόδου παίζει η επιλογή το $\epsilon$ και άρα κατ' επέκταση και του $\mu_k$.
- Στα πλεονεκτήματα της μεθόδου έχουμε την σταθερότητα ακόμα και για κακώς ορισμένους Εσσιανούς πίνακες, η οποία όμως έρχεται με υπολογιστικό κόστος.
- Όλοι οι υπολογισμοί για τη μέθοδο βρίσκονται στο αρχείο \textbf{Script\_4\_LevMar.m}
-
- \subsection{Σημείο εκκίνησης (0,0)}
- Για το σημείο $x_k = (0, 0)$ η κλίση της $f$ είναι: $\nabla f(x_k) = \begin{bmatrix} 0 \\ 0 \end{bmatrix}$ και ο εσσιανός $H(x_k) = \begin{bmatrix} 0 & 0 \\ 0 & 0 \end{bmatrix}$ με αποτέλεσμα η μέθοδος και εδώ να μην μπορεί να εφαρμοστεί για κανένα τρόπο υπολογισμού βήματος.
-
- \subsection{Σημείο εκκίνησης (-1,1)}
- Για το σημείο $x_k = (0, 0)$ η κλίση της $f$ είναι: $\nabla f(x_k) = \begin{bmatrix} 0.4060 \\ 0.2707 \end{bmatrix}$ και η μέθοδος μπορεί να εφαρμοστεί.
- \par
- \underline{Σταθερό βήμα} \\
- Επιλέγοντας ακρίβεια $\epsilon = 0.0001$, προσπαθούμε να βρούμε τον συντελεστή $\epsilon$ για τον οποίο η μέθοδος είναι σταθερή.
- Κατόπιν εκτελούμε την μέθοδο \textit{method\_lev\_mar()} και υπολογίζουμε τον αριθμό επαναλήψεων για διαφορετικές τιμές $\gamma_k$.
- Μετά από tuning, καταλήξαμε στην τιμή $\epsilon = 0.3$ για την οποία αναζητήσαμε και υπολογίσαμε το βήμα $\gamma_k = 1.4152$ με τη γρηγορότερη σύγκλιση.
- \InsertFigure{H}{0.8}{fig:LevMar_Iter_o_gamma_2}{../scripts/figures/LevMar_Iter_o_gamma_2.png}{Αριθμός επαναλήψεων για διαφορετικές τιμές $\gamma_k$ [Μέθοδος L-M].}
-
- Στο παρακάτω σχήμα \ref{fig:LevMar_fixed_2} αναπαριστούμε την πορεία των σημείων καθώς συγκλίνουν στο ελάχιστο.
- Παρατηρούμε ωστόσο ότι η μέθοδος κάνει αρκετή "διόρθωση πορείας" μέχρι τη σύγκλιση.
- \InsertFigure{H}{0.8}{fig:LevMar_fixed_2}{../scripts/figures/LevMar_fixed_2.png}{Σύγκλιση της μεθόδου Levenberg-Marquardt [fixed $\gamma_k$].}
-
- \par
- \underline{Ελαχιστοποίηση της $f(x_k + \gamma_k d_k$)} \\
- Για την ελαχιστοποίηση της $f$, χρησιμοποιήθηκε και εδώ η bisection από την προηγούμενη εργασία.
- \InsertFigure{H}{0.8}{fig:LevMar_minimized_2}{../scripts/figures/LevMar_minimized_2.png}{Σύγκλιση της μεθόδου Levenberg-Marquardt [minimized f].}
- Από το γράφημα φαίνεται τόσο ότι η μέθοδος συγκλίνει κοντά στο ελάχιστο, όσο και ότι πραγματοποιεί “διορθώσεις πορείας”, μικρότερες όμως από αυτές του σταθερού βήματος.
-
- \par
- \underline{Armijo rule} \\
- Για τη μέθοδο η βασική ιδέα και εδώ είναι να ξεκινήσει ο αλγόριθμος από ένα μεγάλο $\gamma_k = 1$ και συνεχώς να μειώνεται με βάση τον κανόνα Armijo.
- Μετά από ένα tuning των παραμέτρων της μεθόδου καταλήξαμε στα $\beta=0.4, \sigma=0.1$
- \InsertFigure{H}{0.8}{fig:LevMar_armijo_2}{../scripts/figures/LevMar_armijo_2.png}{Σύγκλιση της μεθόδου Levenberg-Marquardt [armijo rule].}
-
- \par
- \underline{Σύγκριση} \\
- Στο παρακάτω διάγραμμα φαίνονται τα βήματα αλλά ο ρυθμός σύγκλισης της κάθε μεθόδου.
- \InsertFigure{H}{0.8}{fig:LevMar_compare_2}{../scripts/figures/LevMar_compare_2.png}{Ευκλείδεια απόσταση από το ελάχιστο για κάθε μέθοδο υπολογισμού $\gamma_k$ [Levenberg-Marquardt].}
-
- \subsection{Σημείο εκκίνησης (1,-1)}
- Για το σημείο (1, -1) η τιμή της $f$ είναι: $f(1, -1) = -0.1353$ και το διάνυσμα της κλίσης: $\nabla f(0,0) = \begin{bmatrix} 0.4060 \\ 0.2707 \end{bmatrix}$, επομένως μπορούμε να εφαρμόσουμε τη μέθοδο.
-
- \par
- \underline{Σταθερό βήμα} \\
- Για σταθερό βήμα εκτελέσαμε διαδοχικά τη μέθοδο \textit{method\_lev\_mar()} για να υπολογίσουμε τον αριθμό επαναλήψεων για διαφορετικές τιμές $\gamma_k$, όμως σε καμία τιμή ο αλγόριθμος δεν καταφέρνει να συγκλίνει.
- Παρακάτω (σχήμα \ref{fig:LevMar_fixed_3}), παραθέτουμε ένα παράδειγμα $\gamma_k = 0.1$, όπου ο αλγόριθμος εγκλωβίζεται στο δεξιό ημιεπίπεδο.
- \InsertFigure{H}{0.8}{fig:LevMar_fixed_3}{../scripts/figures/LevMar_fixed_3.png}{Μη σύγκλιση της μεθόδου Levenberg-Marquardt [Fixed step].}
-
- \par
- \underline{Ελαχιστοποίηση της $f(x_k + \gamma_k d_k$)} \\
- \InsertFigure{H}{0.8}{fig:LevMar_minimized_3}{../scripts/figures/LevMar_minimized_3.png}{Σύγκλιση της μεθόδου Levenberg-Marquardt [minimized f].}
- Για υπολογισμό βήματος ελαχιστοποιώντας τη $f(x_k + \gamma_k d_k)$, όπως φαίνεται και από το γράφημα \ref{fig:LevMar_minimized_3}, η μέθοδος συγκλίνει, καταφέρνοντας να περάσει την περιοχή με μηδενικές κλίσεις κοντά στον άξονα των $\psi$.
-
- \par
- \underline{Armijo rule} \\
- \InsertFigure{H}{0.8}{fig:LevMar_armijo_3}{../scripts/figures/LevMar_armijo_3.png}{Μη σύγκλιση της μεθόδου Levenberg-Marquardt [armijo rule].}
- Αντίθετα η μέθοδος armijo δεν συγκλίνει, καθώς και αυτή εγκλωβίζεται στο δεξιό ημιεπίπεδο.
-
- \section{Σύγκριση των μεθόδων - Συμπεράσματα}
- Εκτελώντας όλους του αλγόριθμους σε συνδυασμό με όλες τις μεθόδους, για το σημείο (-1, 1), \textbf{για τον αριθμό επαναλήψεων} έχουμε: \\
-
- \noindent
- \renewcommand{\arraystretch}{1.2}
- \begin{tabularx}{\textwidth}{%
- >{\raggedleft\arraybackslash}m{0.21\textwidth} |
- >{\centering\arraybackslash}m{0.21\textwidth} |
- >{\centering\arraybackslash}m{0.21\textwidth} |
- >{\centering\arraybackslash}m{0.21\textwidth}
- }
- Μέθοδος & Σταθερό βήμα & Ελαχιστοποίηση της f & Armijo \\
- \hline
- St. Descent & 11 & 10 & 11 \\
- Newton & - & - & - \\
- Lev-Mar & 7 & 7 & 9
- \end{tabularx} \\ [2ex]
- Από τον παραπάνω πίνακα, αλλά και από τη πορεία σύγκλισης συμπεραίνουμε πως ο αλγόριθμος Lev-Mar είναι ο πιο αποδοτικός.
- Επίσης σε συνδυασμό με τον τρόπο επιλογής βήματος το οποίο ελαχιστοποιεί τη $f(x_k + \gamma_kd_k)$ ο αλγόριθμος εκτός από γρηγορότερος, καταφέρνει να απεγκλωβίζεται από περιοχές με πολύ μικρή κλίση.
- Αντίθετα οι μέθοδοι με σταθερό βήμα και armijo, φαίνεται ότι παρουσιάζουν τοπικό χαρακτήρα, καθώς εγκλωβίζονται εύκολα, με αποτέλεσμα να μην υπάρχει εγγύηση ότι το σημείο που βρέθηκε είναι ολικό ελάχιστο.
- Ακόμα η μέθοδος Newton δεν φάνηκε να μπορεί να χρησιμοποιηθεί στην παρούσα εργασία, καθώς η επιλογή των σημείων ήταν τέτοια που είτε η κλίση ήταν 0, είτε ο Εσσιανός κακώς ορισμένος.
- Αυτό φυσικά αναδεικνύει απλώς την μικρότερη εφαρμοσιμότητα του αλγορίθμου.
-
- \end{document}
|