Καλωσορίσατε στο συμπληρωματικό μάθημα Τεχνητής Νοημοσύνης και Μηχανικής Μάθησης (Machine Learning), όπου υιοθετούμε μια πιο μαθηματική προσέγγιση σε διάφορα επιλεγμένα θέματα της τεχνητής νοημοσύνης που σχετίζονται με τις πρώτες δύο σειρές διαλέξεων, αλλά τα οποία επιλέξαμε να παραλείψουμε στην πορεία εκείνων των μαθημάτων. Την πρώτη σειρά (Τεχνητή Νοημοσύνη και Μηχανική Μάθηση) μπορείτε να τη βρείτε εδώ και τη δεύτερη σειρά (Παραγωγική Τεχνητή Νοημοσύνη) μπορείτε να τη βρείτε εδώ.
Οι διαλέξεις αυτής της σειράς δεν είναι θεματικά οργανωμένες με τον ίδιο τρόπο όπως οι διαλέξεις των άλλων δύο σειρών. Ο συνδετικός κρίκος μεταξύ των διαλέξεων είναι μια πιο μαθηματικά απαιτητική προσέγγιση σε διάφορα προβλήματα, έννοιες και αλγορίθμους της μηχανικής μάθησης και της τεχνητής νοημοσύνης. Τα θέματα έχουν επιλεγεί ώστε να επιτρέπουν την εμβάθυνση της κατανόησής μας. Ωστόσο, δεν είναι απαραίτητα ως προαπαιτούμενη γνώση για την παρακολούθηση των πρώτων δύο σειρών. Αντίστροφα, παίρνουμε ως δεδομένες τη γνώση και την εξοικείωση με τα θέματα της πρώτης σειράς.
Θα βρείτε παρακάτω συνδέσμους προς τις διαλέξεις, οι οποίες είναι οργανωμένες θεματικά σε «ενότητες». Όπως και στα άλλα μαθήματα, προσπαθούμε να εξετάζουμε κάθε θέμα αναλυτικά σε διαφάνειες και μετά στην «πράξη» με υλοποίηση στην Python.
Python και Colab: θα χρησιμοποιήσουμε τη γλώσσα προγραμματισμού Python. Ο προγραμματισμός γίνεται στο Colab. Το Colab είναι ένα δωρεάν, βασισμένο στο cloud εργαλείο από την Google, το οποίο επιτρέπει τη συγγραφή και την εκτέλεση κώδικα Python σε περιβάλλον Jupyter Notebook. Δουλεύει εξ ολοκλήρου στον browser, χωρίς να απαιτείται εγκατάσταση λογισμικού ή ρύθμιση περιβάλλοντος, οπότε η χρήση του εξασφαλίζει σε όλους πρόσβαση στο ίδιο υπολογιστικό περιβάλλον. Θα χρειαστείτε όμως λογαριασμό Gmail.
Διάλεξη 1: Τι θα καλύψει αυτό το μάθημα;
Σε αυτή τη διάλεξη περιγράφουμε τους στόχους αυτής της σειράς διαλέξεων και εξηγούμε επίσης τη σχέση της με τις άλλες σειρές διαλέξεων για τη Μηχανική Μάθηση (1η σειρά) και την Παραγωγική Τεχνητή Νοημοσύνη (2η σειρά).
Διάλεξη 2: Συναρτήσεις Απώλειας
Σε αυτή τη διάλεξη επιστρέφουμε στην επιτηρούμενη μάθηση (supervised learning) και εξετάζουμε τον ρόλο που παίζει η επιλογή συνάρτησης απώλειας. Βλέπουμε πώς αλλάζοντας την έννοια της απώλειας, αλλάζουμε και τη λύση που παίρνουμε. Συζητάμε επίσης την υπολογιστική πολυπλοκότητα που ενδεχομένως προκύπτει από την επιλογή της συνάρτησης απώλειας.
Διάλεξη 3: Η Μέθοδος Gradient Descent
Σε αυτή τη διάλεξη εισάγουμε τη μέθοδο Gradient Descent (Κάθοδος Κλίσης) και εξηγούμε τις λεπτομέρειες της εφαρμογής της μεθόδου. Επίσης συζητάμε διάφορα παραδείγματα όπου χρησιμοποιούμε τη μέθοδο. Στην πορεία συζητάμε επίσης τον ορισμό της κυρτής συνάρτησης, και εξηγούμε τον ρόλο που παίζει στη μαθηματική θεωρία της βελτιστοποίησης (Optimization Theory).
Διάλεξη 4: Η Μέθοδος Gradient Descent και Νευρωνικά Δίκτυα
Σε αυτή τη διάλεξη συνεχίζουμε τη μελέτη της μεθόδου Gradient Descent και τη συνδέουμε με την εκπαίδευση νευρωνικών δικτύων. Η μέθοδος Gradient Descent και οι παραλλαγές της βασικής μεθόδου είναι ο βασικός τρόπος που βρίσκουμε παραμέτρους που πετυχαίνουν μικρή απώλεια (και μεγάλη ακρίβεια). Η μέθοδος είναι εξαιρετικά αποδοτική, και ουσιαστικά ο μόνος υπολογιστικά εφικτός τρόπος να εκπαιδεύσουμε νευρωνικά δίκτυα με εκατομμύρια (και παραπάνω) παραμέτρους. Επίσης, συζητάμε τη χρήση της μεθόδου σε κακόβουλες επιθέσεις (adversarial attacks), ένα από τα κυριότερα προβλήματα ασφάλειας για τα μεγάλα νευρωνικά δίκτυα, τόσο στη μηχανική όραση όσο και στην επεξεργασία φυσικής γλώσσας.
Διάλεξη 5: Η Μέθοδος Gradient Descent και οι Κακόβουλες Επιθέσεις στην Python (Python/Colab).
Περνάμε στην Python και στην PyTorch και υλοποιούμε τα παραδείγματα που είδαμε στην προηγούμενη διάλεξη. Δίνουμε ιδιαίτερη έμφαση στην υλοποίηση κακόβουλων επιθέσεων, χρησιμοποιώντας τη μέθοδο Gradient Descent, και υλοποιούμε μια επιτυχή επίθεση κατά του νευρωνικού δικτύου του ResNet18.
Διάλεξη 6: Η Μέθοδος Gradient Descent και οι Βασικές Παραλλαγές της Μεθόδου.
Επιστρέφουμε άλλη μία φορά στη μέθοδο Gradient Descent και στην εφαρμογή της σε νευρωνικά δίκτυα και συζητάμε διάφορες σημαντικές παραλλαγές της, όπως το Stochastic Gradient Descent, το Momentum και το Adam. Εξετάζουμε επίσης πώς υλοποιούνται αυτές οι παραλλαγές και πώς αλλάζει η συμπεριφορά της μεθόδου.
Διάλεξη 7: Η Μέθοδος Gradient Descent και οι Βασικές Παραλλαγές της στην Python (Python / Colab).
Ξαναπερνάμε στην Python, για να δούμε στην πράξη και στον κώδικα πώς υλοποιούνται οι παραλλαγές της Gradient Descent, όπως το Stochastic Gradient Descent και το Adam, και πώς διαφέρουν μεταξύ τους σε διάφορα προβλήματα.
Διάλεξη 8: Συναρτήσεις Απώλειας και η Αρχή της Μέγιστης Πιθανοφάνειας - Μέρος 1ο
Εξηγούμε την ιδέα της Μέγιστης Πιθανοφάνειας – ένα από τα θεμέλια της μαθηματικής θεωρίας της στατιστικής (Maximum Likelihood Principle). Εξηγούμε τη σχέση μεταξύ αυτής της αρχής και της συνάρτησης απώλειας που χρησιμοποιούμε στη Λογιστική Παλινδρόμηση και στα νευρωνικά δίκτυα. Συνεχίζουμε τη συζήτησή μας στην επόμενη διάλεξη.
Διάλεξη 9: Συναρτήσεις Απώλειας και η Αρχή της Μέγιστης Πιθανοφάνειας - Μέρος 2ο
Αυτό είναι το 2ο μέρος της διάλεξης για τη μέγιστη πιθανοφάνεια. Συνεχίζουμε τη συζήτηση της προηγούμενης διάλεξης και συνδέουμε την αρχή της μέγιστης πιθανοφάνειας (maximum likelihood principle) με την απώλεια που ονομάζεται αρνητική λογαριθμική πιθανοφάνεια (negative log-likelihood loss) και με τη cross-entropy loss.
Διάλεξη 10: Η Λογιστική Παλινδρόμηση και ο Διαχωρισμός του Χώρου
Εξετάζουμε με μεγαλύτερη λεπτομέρεια τον διαχωρισμό του χώρου που προκύπτει από τη λύση της λογιστικής παλινδρόμησης και αποδεικνύουμε, μεταξύ άλλων, ότι ο διαχωρισμός του χώρου διαμορφώνεται από την τομή των ημιχώρων (halfspaces), από όπου συνεπάγεται ότι ο διαχωρισμός του χώρου είναι σύνολο (κυρτών) πολύεδρων. Αυτό το αποτέλεσμα είναι χρήσιμο στη σειρά διαλέξεων για την παραγωγική τεχνητή νοημοσύνη, συγκεκριμένα στις διαλέξεις για τις σημασιολογικές ενσωματώσεις.