Η αρχιτεκτονική transformer είναι ένας σχεδιασμός νευρωνικού δικτύου που βασίζεται στο self-attention. Αντί να στηρίζεται κυρίως σε επεξεργασία βήμα προς βήμα, επιτρέπει σε κάθε token να συλλέγει πληροφορία από άλλα σχετικά token της ακολουθίας.
Γι’ αυτό οι transformers λειτουργούν τόσο καλά στη γλώσσα και σε άλλες εργασίες ακολουθιών. Αν μία λέξη εξαρτάται από μια άλλη λέξη που βρίσκεται πολύ πιο μακριά, το attention δίνει στο μοντέλο μια άμεση διαδρομή ανάμεσά τους.
Τι σημαίνει αρχιτεκτονική transformer
Ένα transformer block κάνει περισσότερα από το να εφαρμόζει έναν μόνο τύπο, αλλά το self-attention είναι η κεντρική ιδέα. Στο self-attention, κάθε token παράγει τρία διανύσματα:
- ένα query, που παριστάνει τι αναζητά αυτό το token
- ένα key, που παριστάνει τι προσφέρει αυτό το token για αντιστοίχιση
- ένα value, που είναι η πληροφορία που μπορεί να μεταφερθεί
Αν οι αναπαραστάσεις των token τοποθετηθούν σε έναν πίνακα , ένα attention head συνήθως σχηματίζει
όπου τα , και είναι μαθημένοι πίνακες.
Ο τυπικός τύπος του scaled dot-product attention είναι
Εδώ το είναι η διάσταση των key. Η κλιμάκωση με βοηθά ώστε οι αρχικές βαθμολογίες των dot product να μη γίνονται υπερβολικά μεγάλες καθώς αυξάνεται η διάσταση.
Το softmax εφαρμόζεται γραμμή προς γραμμή. Κάθε γραμμή απαντά στην ερώτηση ενός token: «Πόση προσοχή πρέπει να δώσω στα άλλα token;»
Πώς λειτουργεί το self-attention με απλά λόγια
Το self-attention συνήθως δεν επιλέγει ένα token και αγνοεί τα υπόλοιπα. Κατασκευάζει έναν σταθμισμένο μέσο όρο των διανυσμάτων value.
Αν ένα token ταιριάζει έντονα με το key ενός άλλου token, εκείνο το token παίρνει μεγαλύτερο βάρος. Αν η αντιστοίχιση είναι ασθενής, το βάρος είναι μικρότερο. Η έξοδος για ένα token είναι επομένως ένα μείγμα πληροφορίας από την ακολουθία που λαμβάνει υπόψη το συμφραζόμενο.
Αυτό βοηθά στη συμφωνία υποκειμένου-ρήματος, στην αναφορά αντωνυμιών και σε άλλες σχέσεις μεγάλης εμβέλειας. Το μοντέλο δεν χρειάζεται η πληροφορία να περάσει από πολλά ενδιάμεσα βήματα πριν γίνει διαθέσιμη.
Παράδειγμα self-attention βήμα προς βήμα
Πάρε ένα query και δύο υποψήφια token σε ένα μόνο attention head. Για να κρατήσουμε τους υπολογισμούς απλούς, χρησιμοποίησε .
Έστω ότι το τρέχον token έχει query
και τα δύο υποψήφια token έχουν
με values
Οι αρχικές βαθμολογίες attention είναι τα dot product:
Επειδή , ο συντελεστής κλιμάκωσης είναι , άρα οι κλιμακωμένες βαθμολογίες παραμένουν και .
Τώρα εφάρμοσε softmax σε αυτές τις δύο βαθμολογίες:
Η έξοδος του attention είναι ο σταθμισμένος συνδυασμός
Η βασική ιδέα είναι απλή: η έξοδος καταλήγει πιο κοντά στο επειδή το query ταίριαξε πιο έντονα με το απ’ ό,τι με το .
Αυτό είναι το βασικό μοτίβο μέσα σε ένα πολύ μεγαλύτερο μοντέλο. Οι πραγματικοί transformers το κάνουν αυτό σε υψηλότερες διαστάσεις και σε πολλά token ταυτόχρονα, αλλά η αριθμητική ιδέα είναι η ίδια.
Τι άλλο υπάρχει μέσα σε ένα transformer block
Ένας transformer είναι κάτι περισσότερο από έναν τύπο attention. Ένα τυπικό block συνήθως περιέχει:
- multi-head attention, ώστε το μοντέλο να μπορεί να μάθει πολλούς τύπους σχέσεων ταυτόχρονα
- ένα position-wise feedforward δίκτυο, που μετασχηματίζει την αναπαράσταση κάθε token μετά το attention
- residual συνδέσεις, που βοηθούν στη διατήρηση και βελτίωση της πληροφορίας ανάμεσα στα layers
- layer normalization, που βοηθά στη σταθεροποίηση της εκπαίδευσης
Στην αρχική αρχιτεκτονική transformer για εργασίες sequence-to-sequence, το μοντέλο είχε μια στοίβα encoder και μια στοίβα decoder.
- Ο encoder χρησιμοποιεί self-attention πάνω στην ακολουθία εισόδου.
- Ο decoder χρησιμοποιεί masked self-attention ώστε μια θέση να μην μπορεί να «δει» μελλοντικά token εξόδου.
- Ο decoder μπορεί επίσης να χρησιμοποιεί cross-attention, όπου τα queries προέρχονται από τον decoder και τα keys και values από την έξοδο του encoder.
Πολλά σύγχρονα γλωσσικά μοντέλα χρησιμοποιούν μόνο την πλευρά του decoder. Η βασική ιδέα του attention παραμένει εκεί, αλλά η συνολική αρχιτεκτονική είναι εξειδικευμένη για πρόβλεψη του επόμενου token.
Γιατί οι transformers χρειάζονται πληροφορία θέσης
Το attention από μόνο του είναι permutation-equivariant ως προς τα token εισόδου. Με απλά λόγια, αν εφαρμόσεις μόνο attention στο ίδιο σύνολο διανυσμάτων token χωρίς να προσθέσεις θέση, το μοντέλο δεν γνωρίζει εγγενώς ποιο token ήρθε πρώτο.
Γι’ αυτό οι transformers προσθέτουν πληροφορία θέσης, όπως μαθημένα position embeddings ή positional encodings. Χωρίς αυτό το επιπλέον σήμα, εργασίες ευαίσθητες στη σειρά, όπως η γλώσσα, θα ήταν πολύ πιο δύσκολο να μοντελοποιηθούν σωστά.
Συνηθισμένα λάθη για την αρχιτεκτονική transformer
Να νομίζεις ότι το attention είναι όλος ο transformer
Είναι η κεντρική ιδέα, αλλά η αρχιτεκτονική εξαρτάται επίσης από feedforward layers, residual διαδρομές, normalization και πληροφορία θέσης.
Να μπερδεύεις το self-attention με το cross-attention
Στο self-attention, τα , και προέρχονται από την ίδια ακολουθία. Στο cross-attention, δεν προέρχονται όλα από την ίδια πηγή.
Να ξεχνάς τον ρόλο του masking
Τα γλωσσικά μοντέλα μόνο με decoder χρειάζονται causal masking κατά την εκπαίδευση και το inference, ώστε ένα token να μην μπορεί να δώσει attention σε μελλοντικά token.
Να θεωρείς τα βάρη attention πλήρη εξήγηση
Τα βάρη attention μπορεί να είναι κατατοπιστικά, αλλά δεν αποτελούν πλήρη απόδειξη του συλλογισμού του μοντέλου. Η τελική συμπεριφορά εξαρτάται επίσης από τα διανύσματα value, τα επόμενα layers και τους μη γραμμικούς μετασχηματισμούς.
Πότε χρησιμοποιούνται τα μοντέλα transformer
Οι transformers χρησιμοποιούνται ευρέως στη γλωσσική μοντελοποίηση, στη μετάφραση, στη σύνοψη, στη δημιουργία κώδικα, στην ομιλία και σε πολλές εργασίες όρασης. Λειτουργούν ιδιαίτερα καλά όταν οι σχέσεις μέσα σε μια ακολουθία ή ένα σύνολο έχουν μεγαλύτερη σημασία από καθαρά τοπικά μοτίβα.
Δεν είναι μαγική λύση για κάθε περίπτωση. Για πολύ μικρά σύνολα δεδομένων, αυστηρούς περιορισμούς πραγματικού χρόνου ή προβλήματα όπου η τοπική επαγωγική δομή έχει τη μεγαλύτερη σημασία, μια άλλη αρχιτεκτονική μπορεί να ταιριάζει καλύτερα.
Δοκίμασε ένα παρόμοιο πρόβλημα
Πάρε μια φράση τριών λέξεων και εστίασε σε μία λέξη. Αποφάσισε ποιες από τις άλλες λέξεις πρέπει να πάρουν υψηλό βάρος attention και γιατί, και μετά σχεδίασε ένα μικρό παράδειγμα query-key-value που να ταιριάζει με αυτή τη διαίσθηση.
Αν θέλεις να πας ένα βήμα παραπέρα, υπολόγισε με το χέρι μια μικρή έξοδο attention. Αυτός είναι συνήθως ο πιο γρήγορος δρόμος από το «Ξέρω τον τύπο» στο «Καταλαβαίνω τι κάνει η αρχιτεκτονική».
Χρειάζεσαι βοήθεια με μια άσκηση;
Ανέβασε την ερώτησή σου και πάρε επαληθευμένη λύση βήμα-βήμα σε δευτερόλεπτα.
Άνοιξε το GPAI Solver →