Ολόκληρη η ιδέα σε μία αλυσίδα
Να ολόκληρο το ταξίδι. Μην ανησυχείτε αν διαβάζεται σαν αίνιγμα· το υπόλοιπο άρθρο ξεδιπλώνει κάθε κρίκο.
Σπάστε μια πρόταση σε κομμάτια και παίρνετε tokens. Μετατρέψτε τα tokens σε λίστες αριθμών και παίρνετε embeddings. Αφήστε κάθε token να κάνει μια ερώτηση και παίρνετε ένα query· αφήστε τα υπόλοιπα να απαντήσουν και παίρνετε keys και values. Συγκρίνετε τα queries με τα keys και παίρνετε βαθμολογίες προσοχής. Κανονικοποιήστε τις με softmax και παίρνετε βάρη προσοχής. Χρησιμοποιήστε τα βάρη για να αναμίξετε τα values και παίρνετε πλαίσιο. Κάντε το για κάθε token και παίρνετε self-attention. Προσθέστε ένα feed-forward δίκτυο, residual connections και κανονικοποίηση και παίρνετε ένα transformer block. Στοιβάξτε τα blocks και παίρνετε έναν transformer. Εκπαιδεύστε τον να προβλέπει το επόμενο token και παίρνετε ένα γλωσσικό μοντέλο. Διδάξτε του να ακολουθεί οδηγίες και να μαθαίνει από ανθρώπινη ανατροφοδότηση και παίρνετε κάτι κοντά στο ChatGPT.
Βήμα 1: Σπάστε μια πρόταση σε κομμάτια και παίρνετε tokens
Ένας υπολογιστής δεν μπορεί να διαβάσει λέξεις όπως εσείς. Το πρώτο πράγμα που κάνει ένα γλωσσικό μοντέλο είναι να κόψει το κείμενο σε μικρά κομμάτια που λέγονται tokens. Ένα token μπορεί να είναι ολόκληρη λέξη («interview»), μέρος λέξης («inter» + «view»), σημείο στίξης ή ακόμα και ένα κενό προσκολλημένο σε μια λέξη.
Γιατί όχι ολόκληρες λέξεις; Είναι πάρα πολλές και νέες εμφανίζονται κάθε μέρα. Τα κομμάτια λέξεων επιτρέπουν σε ένα μοντέλο να χειρίζεται οποιοδήποτε κείμενο, συμπεριλαμβανομένων σπάνιων ονομάτων και τυπογραφικών λαθών, με σταθερό λεξιλόγιο δεκάδων χιλιάδων tokens. Κάθε token σε αυτό το λεξιλόγιο παίρνει έναν αριθμό ID. Η πρόταση «I aced the interview» θα μπορούσε να γίνει κάτι σαν [40, 1734, 279, 7274].
Ένα token είναι περίπου τα τρία τέταρτα μιας αγγλικής λέξης, οπότε ένα «παράθυρο πλαισίου 128.000 tokens» σημαίνει περίπου 95.000 λέξεις που μπορεί να λάβει υπόψη το μοντέλο ταυτόχρονα.
Βήμα 2: Μετατρέψτε τα tokens σε διανύσματα και παίρνετε embeddings
Ένα ID token όπως το 7274 είναι απλώς μια ετικέτα. Δεν λέει τίποτα για το νόημα. Έτσι το μοντέλο αναζητά κάθε ID σε έναν μεγάλο πίνακα και το αντικαθιστά με μια μακριά λίστα αριθμών, συχνά εκατοντάδων ή χιλιάδων. Αυτή η λίστα λέγεται διάνυσμα και το διάνυσμα που αναπαριστά ένα token λέγεται embedding.
Κανείς δεν γράφει αυτούς τους αριθμούς με το χέρι. Ξεκινούν τυχαίοι και προσαρμόζονται κατά την εκπαίδευση μέχρι να αποτυπώνουν τι σημαίνει κάθε token και πώς χρησιμοποιείται.
Βήμα 3: Τοποθετήστε τα embeddings στον χώρο και το νόημα γίνεται γεωμετρία
Αν δείτε κάθε embedding ως τις συντεταγμένες ενός σημείου, κάθε token γίνεται μια θέση σε έναν τεράστιο, πολυδιάστατο χώρο. Δεν μπορείτε να φανταστείτε χίλιες διαστάσεις, αλλά η ιδέα δουλεύει σε δύο ή τρεις.
Σε αυτόν τον χώρο, τα tokens με παρόμοιο νόημα καταλήγουν κοντά το ένα στο άλλο. Ο «μισθός» βρίσκεται κοντά στην «αμοιβή» και στις «αποδοχές». Η «συνέντευξη» βρίσκεται κοντά στη «συνάντηση» και στην «πρόσληψη». Ακόμα και οι κατευθύνσεις μπορούν να φέρουν νόημα: το διάσημο παράδειγμα είναι ότι το βήμα από το «άνδρας» στο «γυναίκα» δείχνει περίπου προς την ίδια κατεύθυνση με το βήμα από το «βασιλιάς» στο «βασίλισσα».
Τα embeddings από μόνα τους δεν λένε πού βρίσκεται ένα token και η σειρά αλλάζει το νόημα: το «ο υποψήφιος πήρε συνέντευξη από τον διευθυντή» δεν είναι το ίδιο με το «ο διευθυντής πήρε συνέντευξη από τον υποψήφιο». Γι' αυτό τα μοντέλα προσθέτουν και πληροφορία θέσης σε κάθε διάνυσμα.
Βήμα 4: Κάθε token κάνει και απαντά σε ερωτήσεις: queries, keys και values
Οι λέξεις αλλάζουν νόημα με τις γειτονικές τους: η λέξη «bank» σημαίνει κάτι διαφορετικό στο «river bank» και στο «bank account». Έτσι κάθε token πρέπει να κοιτάζει τα υπόλοιπα. Αυτή είναι η πιο σημαντική ιδέα της σύγχρονης AI.
Από το embedding κάθε token, το μοντέλο δημιουργεί τρία νέα διανύσματα πολλαπλασιάζοντάς το με τρεις μαθημένους πίνακες αριθμών:
- Query: η ερώτηση που κάνει αυτό το token. Σκεφτείτε τη λέξη «it» να ρωτά: «Σε ποιο ουσιαστικό νωρίτερα στην πρόταση αναφέρομαι;»
- Key: αυτό που προσφέρει αυτό το token, σαν ετικέτα σε ένα αρχείο. Το key ενός ουσιαστικού θα μπορούσε ουσιαστικά να λέει: «Είμαι κάτι στο οποίο μπορεί να γίνει αναφορά.»
- Value: η πραγματική πληροφορία που θα παραδώσει αυτό το token αν ένα άλλο token κρίνει ότι είναι σχετική.
Σκεφτείτε μια βιβλιοθήκη: το query είναι η αναζήτησή σας, τα keys είναι οι τίτλοι στα ράφια και τα values είναι αυτό που υπάρχει μέσα στα βιβλία.
Βήμα 5: Συγκρίνετε ένα query με τα keys και παίρνετε βαθμολογίες προσοχής
Κάθε token συγκρίνει το query του με το key κάθε token που μπορεί να δει, χρησιμοποιώντας ένα εσωτερικό γινόμενο (dot product): πολλαπλασιάστε τα δύο διανύσματα αριθμό προς αριθμό και προσθέστε τα αποτελέσματα. Παρόμοιες κατευθύνσεις δίνουν μεγάλο αποτέλεσμα· άσχετες δίνουν μικρό ή αρνητικό.
Το αποτέλεσμα είναι ένα σύνολο βαθμολογιών προσοχής, μία για κάθε ζεύγος tokens. Μια υψηλή βαθμολογία σημαίνει «αυτό το άλλο token φαίνεται σχετικό με την ερώτησή μου». Στην πρόταση «The recruiter called the candidate because she liked her portfolio», το token «her» πρέπει να παράγει υψηλή βαθμολογία με το «candidate» και χαμηλότερη με το «recruiter».
Βήμα 6: Κανονικοποιήστε τις βαθμολογίες με softmax και παίρνετε βάρη προσοχής
Οι ακατέργαστες βαθμολογίες μπορούν να έχουν οποιοδήποτε μέγεθος, θετικό ή αρνητικό. Μια συνάρτηση που λέγεται softmax τις μετατρέπει σε θετικές τιμές που αθροίζουν ακριβώς στο 1, δίνοντας στις μεγαλύτερες βαθμολογίες πολύ μεγαλύτερο μερίδιο.
Αυτά τα μερίδια είναι τα βάρη προσοχής, σαν ποσοστά εστίασης. Ένα απλοποιημένο παράδειγμα για το «her»:
| Άλλο token | Ακατέργαστη βαθμολογία | Βάρος προσοχής |
|---|---|---|
| candidate | 4,0 | 0,84 |
| recruiter | 2,0 | 0,11 |
| called | 1,0 | 0,04 |
| the | −1,0 | 0,01 |
Έτσι το «her» θα δώσει περίπου το 84% της προσοχής του στο «candidate».
Βήμα 7: Χρησιμοποιήστε τα βάρη για να συνδυάσετε τα values και παίρνετε πλαίσιο
Τώρα κάθε token χτίζει ένα νέο διάνυσμα παίρνοντας μια σταθμισμένη ανάμειξη των values: 84% από το value του «candidate», 11% από το «recruiter» και ούτω καθεξής. Το αποτέλεσμα είναι μια νέα αναπαράσταση του «her» που φέρει πληροφορία για το ποιος είναι πραγματικά το «her».
Αυτό σημαίνει πλαίσιο (context) μέσα σε ένα μοντέλο. Η λέξη δεν είναι πια απλώς το «her» αφηρημένα· είναι «το her, που σημαίνει τον υποψήφιο, σε μια πρόταση για ένα portfolio».
Βήμα 8: Αφήστε κάθε token να το κάνει αυτό και παίρνετε self-attention
Όταν κάθε token τρέχει αυτή τη διαδικασία ταυτόχρονα, λέγεται self-attention: η πρόταση που δίνει προσοχή στον εαυτό της.
Δύο βελτιώσεις το κάνουν ισχυρό:
- Μόνο τα tokens που μπορεί να δει. Σε ένα μοντέλο που γράφει κείμενο, κάθε token μπορεί να κοιτάζει μόνο τα tokens πριν από αυτό, ποτέ μπροστά. Αυτή η αιτιατή μάσκα (causal mask) υπάρχει επειδή, κατά τη δημιουργία, οι μελλοντικές λέξεις δεν υπάρχουν ακόμα.
- Πολλά κεφάλια ταυτόχρονα. Τα μοντέλα τρέχουν αρκετές διαδικασίες προσοχής παράλληλα, που λέγονται attention heads, καθεμία με τους δικούς της πίνακες query, key και value. Η μία μπορεί να παρακολουθεί τη γραμματική, μια άλλη ποιος αναφέρεται σε ποιον. Αυτό είναι το multi-head attention.
Βήμα 9: Προσθέστε feed-forward, residuals και κανονικοποίηση και παίρνετε ένα transformer block
Η προσοχή μοιράζει πληροφορία· το μοντέλο πρέπει επίσης να την επεξεργαστεί. Τρία ακόμα μέρη συμπληρώνουν τη μονάδα:
- Feed-forward δίκτυο: μετά την προσοχή, το διάνυσμα κάθε token περνά μόνο του μέσα από ένα μικρό νευρωνικό δίκτυο. Αν η προσοχή είναι μια σύσκεψη όπου όλοι μοιράζονται σημειώσεις, αυτό είναι κάθε άτομο που τις επεξεργάζεται στο γραφείο του.
- Residual connections: αντί να αντικαταστήσει το διάνυσμα ενός token με το νέο αποτέλεσμα, το μοντέλο προσθέτει το αποτέλεσμα στο αρχικό. Αυτό διατηρεί άθικτη την προηγούμενη πληροφορία και κάνει τα βαθιά δίκτυα ευκολότερα στην εκπαίδευση.
- Κανονικοποίηση: ένα βήμα που επαναδιαβαθμίζει τους αριθμούς σε σταθερό εύρος ώστε να μην μεγαλώνουν ανεξέλεγκτα ή να μην μηδενίζονται καθώς περνούν από πολλά επίπεδα.
Προσοχή συν feed-forward, τυλιγμένα με residual connections και κανονικοποίηση, είναι ένα transformer block.
Βήμα 10: Στοιβάξτε τα blocks και παίρνετε έναν transformer
Ένα block δίνει μέτρια κατανόηση. Στοιβάξτε δεκάδες, με την έξοδο του ενός να τροφοδοτεί το επόμενο, και παίρνετε έναν transformer, την αρχιτεκτονική που παρουσίασαν ερευνητές της Google στην εργασία του 2017 «Attention Is All You Need». Είναι το «T» στο GPT, που σημαίνει Generative Pre-trained Transformer.
Κάθε επίπεδο βελτιώνει την εικόνα: τα πρώιμα επίπεδα τείνουν να αποτυπώνουν τη γραμματική, τα μεταγενέστερα πιο αφηρημένες ιδέες όπως τον τόνο και την πρόθεση. Τα βάρη μέσα σε όλους αυτούς τους πίνακες, οι αριθμοί που μαθαίνει το μοντέλο, είναι αυτό που εννοούν οι άνθρωποι με τις παραμέτρους. Τα μεγάλα μοντέλα έχουν δισεκατομμύρια.
Βήμα 11: Εκπαιδεύστε το να προβλέπει το επόμενο token και παίρνετε ένα γλωσσικό μοντέλο
Μέχρι τώρα έχουμε μια μηχανή που μετατρέπει το κείμενο σε διανύσματα με επίγνωση πλαισίου. Τώρα της δίνουμε μια δουλειά. Στο τέλος της στοίβας, το μοντέλο μετατρέπει το διάνυσμα του τελευταίου token σε βαθμολογία για κάθε token του λεξιλογίου του και μετά εφαρμόζει ξανά softmax για να πάρει μια πιθανότητα για καθένα. Με άλλα λόγια: «Δεδομένων όλων όσων έχουν προηγηθεί, τι έρχεται μετά;»
Κατά την εκπαίδευση, το μοντέλο διαβάζει τεράστιες ποσότητες κειμένου: βιβλία, άρθρα, κώδικα, ιστοσελίδες. Σε κάθε θέση, μαντεύει το επόμενο token, συγκρίνει την εικασία του με το πραγματικό και μετακινεί ελαφρά όλες τις παραμέτρους του προς την κατεύθυνση που θα έκανε τη σωστή απάντηση πιο πιθανή. Επαναλάβετε το τρισεκατομμύρια φορές και το αποτέλεσμα είναι ένα γλωσσικό μοντέλο.
Αυτή η απλή εργασία διδάσκει πολλά: για να προβλέψει την επόμενη λέξη σε ένα σχολικό βιβλίο ή ένα συμβόλαιο, ένα μοντέλο πρέπει να μάθει γραμματική, γεγονότα και μοτίβα συλλογισμού.
Η παραγωγή κειμένου είναι απλώς αυτή η πρόβλεψη σε επανάληψη. Το μοντέλο διαλέγει ένα επόμενο token, συνήθως δειγματοληπτώντας από τις πιθανότητες (μια ρύθμιση που λέγεται temperature ελέγχει πόσο τολμηρή είναι η επιλογή), το προσθέτει στο κείμενο και προβλέπει ξανά, ένα token τη φορά.
Βήμα 12: Διδάξτε του να ακολουθεί οδηγίες και να μαθαίνει από ανατροφοδότηση και παίρνετε ChatGPT
Ένα μοντέλο εκπαιδευμένο μόνο στην πρόβλεψη του επόμενου token είναι μια λαμπρή αυτόματη συμπλήρωση, όχι βοηθός. Αν του κάνετε μια ερώτηση, μπορεί να απαντήσει με άλλες τρεις ερωτήσεις. Δύο ακόμα στάδια εκπαίδευσης το διορθώνουν:
- Instruction tuning: το μοντέλο εκπαιδεύεται σε πολλά παραδείγματα αιτήματος που ακολουθείται από καλή, χρήσιμη απάντηση. Μαθαίνει το μοτίβο «κάποιος ρωτά, εγώ απαντώ χρήσιμα».
- Μάθηση από ανθρώπινη ανατροφοδότηση: άνθρωποι συγκρίνουν ζεύγη απαντήσεων του μοντέλου και διαλέγουν την καλύτερη. Αυτές οι προτιμήσεις χρησιμοποιούνται για να κατευθύνουν περαιτέρω το μοντέλο προς απαντήσεις χρήσιμες, ακριβείς και ασφαλείς. Αυτό είναι γνωστό ως reinforcement learning from human feedback, ή RLHF.
Προσθέστε μια διεπαφή συνομιλίας και παίρνετε κάτι κοντά στο ChatGPT, το Claude ή το Gemini: ο ίδιος transformer, διαμορφωμένος να λειτουργεί ως βοηθός.
Όλα μαζί: το ταξίδι μιας πρότασης
Φανταστείτε ότι πληκτρολογείτε «The hardest interview question is…» Σε κλάσμα του δευτερολέπτου:
- Το κείμενο χωρίζεται σε tokens και καθένα γίνεται embedding με πληροφορία θέσης.
- Σε κάθε transformer block, κάθε token σχηματίζει query, key και value, βαθμολογεί τα προηγούμενα tokens, μετατρέπει τις βαθμολογίες σε βάρη και αναμειγνύει τα values τους. Το «Hardest» συνδέεται με το «question» και η φράση κατανοείται ως θέμα συνέντευξης.
- Τα feed-forward επίπεδα επεξεργάζονται κάθε ενημερωμένο διάνυσμα· τα residuals και η κανονικοποίηση κρατούν τα πάντα σταθερά· δεκάδες blocks το βελτιώνουν περαιτέρω.
- Το τελικό διάνυσμα γίνεται πιθανότητες πάνω στο λεξιλόγιο. Ένα token όπως το «tell» βαθμολογείται ψηλά· το μοντέλο το επιλέγει, το προσθέτει και ξεκινά ξανά.
Σύντομο γλωσσάρι
| Όρος | Σε απλά ελληνικά |
|---|---|
| Token | Ένα μικρό κομμάτι κειμένου, συχνά λέξη ή μέρος λέξης |
| Διάνυσμα | Μια διατεταγμένη λίστα αριθμών |
| Embedding | Το διάνυσμα που αναπαριστά το νόημα ενός token |
| Query / Key / Value | Τι ρωτά ένα token / τι προσφέρει / τι μοιράζεται |
| Βαθμολογία προσοχής | Πόσο σχετικό φαίνεται ένα token με ένα άλλο |
| Softmax | Μετατρέπει βαθμολογίες σε μερίδια που αθροίζουν στο 1 |
| Βάρος προσοχής | Το μερίδιο εστίασης που δίνει ένα token σε ένα άλλο |
| Πλαίσιο | Το νόημα ενός token ενημερωμένο από τα γειτονικά του |
| Self-attention | Κάθε token που δίνει προσοχή στα tokens που μπορεί να δει |
| Transformer block | Προσοχή + feed-forward + residuals + κανονικοποίηση |
| Παράμετροι | Οι μαθημένοι αριθμοί μέσα στο μοντέλο |
| Παράθυρο πλαισίου | Πόσα tokens μπορεί να λάβει υπόψη το μοντέλο ταυτόχρονα |
Γιατί έχει σημασία για την καριέρα σας
Αν παίρνετε συνέντευξη για θέση που αγγίζει την AI, το να εξηγείτε τα tokens ή την προσοχή με απλά λόγια είναι πραγματικό πλεονέκτημα. Σας κάνει επίσης εξυπνότερο χρήστη εργαλείων AI: θα καταλάβετε γιατί μπορούν να δηλώνουν με σιγουριά λάθος γεγονότα (προβλέπουν πιθανό κείμενο, όχι επαληθευμένη αλήθεια) και γιατί μια σαφής, συγκεκριμένη εντολή δίνει καλύτερες απαντήσεις. Για πρακτικές χρήσεις, δείτε τους οδηγούς μας για το πώς να χρησιμοποιείτε εργαλεία AI για εξάσκηση σε συνεντεύξεις και για το τι αλλάζουν πραγματικά οι AI interview copilots.
Συχνές ερωτήσεις
Ποια είναι η διαφορά ανάμεσα σε ένα token και μια λέξη;
Το token είναι η μονάδα που διαβάζει ένα γλωσσικό μοντέλο. Οι συνηθισμένες λέξεις είναι συχνά ένα μόνο token, ενώ οι μακρύτερες ή σπανιότερες λέξεις σπάνε σε αρκετά κομμάτια. Στα αγγλικά, ένα token είναι κατά μέσο όρο περίπου τα τρία τέταρτα μιας λέξης.
Καταλαβαίνει ένα γλωσσικό μοντέλο αυτά που λέει;
Χτίζει πλούσιες εσωτερικές αναπαραστάσεις νοήματος και πλαισίου, αλλά εκπαιδεύεται να προβλέπει πιθανό κείμενο, όχι να ελέγχει γεγονότα. Γι' αυτό οι απαντήσεις του μπορεί να ακούγονται σίγουρες και παρ' όλα αυτά να είναι λάθος, οπότε οι σημαντικοί ισχυρισμοί πρέπει πάντα να επαληθεύονται.
Είναι το ChatGPT απλώς ένας transformer;
Στον πυρήνα του, ναι: ένας μεγάλος transformer εκπαιδευμένος να προβλέπει το επόμενο token. Αυτό που τον κάνει χρήσιμο βοηθό είναι η επιπλέον εκπαίδευση σε οδηγίες και ανθρώπινη ανατροφοδότηση, μαζί με το προϊόν που χτίστηκε γύρω του.