Σε αυτή την εργασία, εξετάζουμε τον μηχανισμό συμπερασμάτων σε ένα εκπαιδευμένο μοντέλο χρησιμοποιώντας τη συμβολοσειρά "Γνωρίζει αυτό" ως παράδειγμα. Θα περιγράψουμε την αρχιτεκτονική του μοντέλου, η οποία θα αναπαράγει ακριβώς τη μαθησιακή διαδικασία και θα εξετάσει τα διάφορα συστατικά που εμπλέκονται στη μετατροπή των μαρκών εισόδου σε σημαντικές προβλέψεις. Οι βασικές παράμετροι όπως το μέγεθος του λεξιλογίου, ο αριθμός των μονάδων, τα στρώματα και οι επικεφαλής της προσοχής θα θεωρηθούν ότι παρέχουν πλαίσιο για τη λειτουργικότητα του μοντέλου.

Επισκόπηση αρχιτεκτονικής μοντέλου
Ας εξετάσουμε τον μηχανισμό συμπερασμάτων του εκπαιδευμένου μοντέλου για το παράδειγμα της ακόλουθη συμβολοσειρά e ^ it it . Η αρχιτεκτονική του μοντέλου, για λόγους σαφήνειας, θα είναι περίπου η ίδια όπως στο θεωρημένο παράδειγμα του μηχανισμού της διαδικασίας κατάρτισης:
- Vocab: 26
- num_units: 6
- num_layers: 1
- num_heads: 2
- FFN_INNER_DIM: 12
- maximum_relative_position: 8
Αντιπροσωπεία και επεξεργασία κωδικοποιητή
Για κάθε διακριτικό, η αναπαράσταση του φορέα του διακριτικού εξάγεται από τη μήτρα ενσωμάτωσης πηγής του εκπαιδευμένου μοντέλου και τροφοδοτείται στην είσοδο κωδικοποιητή. Στον κωδικοποιητή, απολύτως όλοι οι ίδιοι μετασχηματισμοί εμφανίζονται όπως στην εκπαίδευση μοντέλου. Η διαφορά είναι ότι ο μηχανισμός εγκατάλειψης δεν εφαρμόζεται στις μήτρες. Μετά από μετασχηματισμούς στον κωδικοποιητή παίρνουμε το matrix encoder_outputs . (Εικόνα 1 - Η μήτρα Encoder_outputs)

Παράμετροι και αρχικοποίηση συμπερασμάτων
Στη συνέχεια, εξετάστε ένα παράδειγμα για συμπέρασμα με τις ακόλουθες παραμέτρους. Στην περίπτωσή μας, χρησιμοποιήθηκαν οι ακόλουθες παράμετροι συμπερασμάτων:
- beam_size = 2
- μήκος_penalty = 0.2
- Coverage_Penalty = 0.2
- δειγματοληψία_topk = 5
- Sampling_Temperature = 0.5
Στη συνέχεια, εφαρμόζοντας τη συνάρτηση tfa.seq.tile_batch Επιτρέπει τον πίνακα τιμής που λαμβάνεται μετά την αντιγραφή του κωδικοποιητή από την ποσότητα beam_size . Η έξοδος είναι μια μήτρα τιμών * μέγεθος δέσμης, στην περίπτωσή μας δύο. (Εικόνα 2 - Έξοδοι κωδικοποιητή * μέγεθος δέσμης) Το δεύτερο βήμα είναι να αρχικοποιήσετε τις μεταβλητές: 1) μέγεθος παρτίδας για μετάφραση, στο παράδειγμα μας batch_size = 1 ; 2) matrix start_ids , που περιέχουν δείκτες μαρκών της έναρξης της ακολουθίας & s & gt; από beam_size διάσταση → start_ids = tfa.seq2seq.tile_batch (start_ids, beam_size) = [1 1] ; 3) Matrix τελείωσε , γεμάτο με μηδενικά, με τύπο δεδομένων boolean και διάσταση batch_size * beam_size → tf.zeros ([batch_size * beam_size], dtype = tf.bool)] = 4) matrix initial_log_probs → tf.tile (beam_size - 1), [batch_size]) = [0 -inf] ; 5) Λεξικό με επιπλέον μεταβλητές extra_vars , το οποίο περιέχει τις ακόλουθες μεταβλητές, αρχικοποιείται: Στη συνέχεια, σε ένα βρόχο, επαναλάβουμε μέχρι να φτάσουμε στη μέγιστη τιμή (η προεπιλεγμένη μέγιστη τιμή είναι maximum_decoding_length = 250 ) ή μέχρι να δημιουργηθεί ένα διακριτικό τέλος της ακολουθίας. Με το Matrix start_ids , οι παραστάσεις διανυσμάτων των μαρκών εξάγονται από το target ενσωματωμένο matrix του εκπαιδευμένου μοντέλου και μαζί με το comneper_outputs matrix που διπλώνει με τον αριθμό των beam_size τροφοδοτείται για την εισροή αποκωδικοποιητή. Στον αποκωδικοποιητή, απολύτως όλοι οι ίδιοι μετασχηματισμοί λαμβάνουν χώρα όπως κατά την εκπαίδευση του μοντέλου. Η διαφορά είναι ότι ο tensor (Εικόνα 3 - Διαδικασία αποκωδικοποιητή) Οι μεταβλητές batch_size = 1 και vocab_size = 26 σχηματίζονται από τη διάσταση του matrix logits που λαμβάνεται από τον αποκωδικοποιητή. Στη συνέχεια, χρησιμοποιώντας τη συνάρτηση tf.one_hot (tf.fill (batch_size], end_id) on_value = logits.dtype.max, off_value = logits.dtype.min) Η μήτρα eos_max_prob , πού: Έτσι, η έξοδος είναι μια μήτρα EOS_MAX_PROB της διάστασης 2 x 26, όπου τα στοιχεία του δείκτη 2 θα γεμίσουν με τη μέγιστη τιμή και όλα τα άλλα στοιχεία θα γεμίσουν με την ελάχιστη τιμή. (Εικόνα 4 - eos_max_prob matrix) Χρησιμοποιώντας τη συνάρτηση tf.where (tf.broadcast_to (tf.expand_dims, x = eos_max_prob, y = logits) , όπου η μήτρα τελείωσε αλλάζει στη διάσταση: tf.nn.log_softmax (logits) . (Εικόνα 5 - matrix log_probs) Εάν Coverage_Penalty! = 0 , εκτελούνται οι ακόλουθες ενέργειες: Στη συνέχεια, η μήτρα total_probs σχηματίζεται με την προσθήκη του matrix log_probs και του ανεστραμμένου cum_log_probs matrix → log_probs + tf.expand_dims (cum_log_probs, 1). (Εικόνα 8 - Matrix Total_Probs) Με τους πίνακες Total_Probs , sequence_lengths , Τελειωμένα και συσσωρευμένα ουσίες βαθμολογίες υπολογίζονται. Ο υπολογισμός των βαθμολογιών περιλαμβάνει τα ακόλουθα βήματα: 1) η αρχική μήτρα βαθμολογίες → βαθμολογίες = Total_Probs αρχικοποιείται από το Matrix Total_probs 2) Εάν length_penalty ! = 0 , εκτελέστε τις ακόλουθες ενέργειες: 3) Εάν Coverage_Penalty! = 0 , τότε, εκτελέστε τις ακόλουθες ενέργειες: Το επόμενο βήμα περιλαμβάνει τη συνεργασία με τους πίνακες βαθμολογιών και συνολικών_probs. Η βαθμολογία matrix αναμορφώνεται από το tf.reshape (βαθμολογίες, [-1, beam_size * vocab_size]) . (Εικόνα 17 - Matrix βαθμολογίας) Η μήτρα total_probs αναμορφώνεται από το tf.reshape (βαθμολογίες, [-1, beam_size * vocab_size]) . (Εικόνα 18 - Matrix Total_Probs) Το επόμενο βήμα είναι να υπολογίσετε το id Targens Tarkens sample_ids και οι βαθμολογίες για αυτά τα μάρκες sample_scores : Στη συνέχεια, η μήτρα cum_log_probs σχηματίζεται από τις τιμές που λαμβάνονται sample_ids από το matrix total_probs . (Image 24 - cum_log_probs matrix) word_ids matrix σχηματίζεται διαιρώντας το υπόλοιπο με vocab_size τιμή → word_ids = sample_ids % vocab_size = [9 12] Από την ακέραια διαίρεση με την τιμή του vocab_size Το matrix beam_ids → beam_ids = sample_ids // vocab_size = [9 12] // 26 = [0 0] σχηματίζεται από τις ληφθείσες τιμές sample_ids , by integer με την τιμή του vocab_size . Χρησιμοποιώντας τις ληφθείσες word_ids και beam_ids matrices και το beam_size , το beam_size σχηματίζεται → beam_indices = (tf.Range (tf.shape (word_ids) ([0 1] // 2) * 2 + [0 0 0] = [0 0] . Ένα περαιτέρω βήμα περιλαμβάνει την ανακατανομή των Matrixes Sequence_Lengths, Finish και Sequence_Lengths ως εξής: Μετά από αυτό θα γίνει η εργασία με το λεξικό extra_vars , ως εξής: Αυτό ολοκληρώνει το βήμα 0, τα matrices word_ids , cum_log_probs , και το λεξικό extra_vars μεταβιβάζονται στην αρχή του βρόχου και ολόκληρης της διαδικασίας που περιγράφονται παραπάνω. (Εικόνα 27 - Matrices word_ids, cum_log_probs, τελειωμένο και λεξικό extra_vars) Σε αυτό το άρθρο, εξετάσαμε διεξοδικά τον μηχανισμό συμπερασμάτων ενός εκπαιδευμένου μοντέλου χρησιμοποιώντας τη συμβολοσειρά παραδείγματος "το ξέρει". Ξεκινήσαμε περιγράφοντας την αρχιτεκτονική μοντέλου και τις βασικές παράμετροι που καθορίζουν τη δομή του, όπως το μέγεθος του λεξιλογίου, τον αριθμό των μονάδων και των στρωμάτων. Η διαδικασία της εκπροσώπησης και της επεξεργασίας κωδικοποιητή ήταν λεπτομερής, υπογραμμίζοντας τον μετασχηματισμό των μαρκών εισόδου μέσω του κωδικοποιητή χωρίς να εφαρμόζεται εγκατάλειψη, εξασφαλίζοντας έτσι τη συνοχή με τη φάση κατάρτισης. Συζητήσαμε την αρχικοποίηση των παραμέτρων συμπερασμάτων και τη δομή βρόχου που διέπει την επαναληπτική διαδικασία αποκωδικοποίησης, υπογραμμίζοντας τις διάφορες μήτρες που εμπλέκονται, συμπεριλαμβανομένων των log_probs, του Total_probs και της διαχείρισης των κυρώσεων. Στο δεύτερο μέρος αυτού του άρθρου θα καλύψουμε το βήμα 1, το βήμα 2 και το βήμα 3 αντίστοιχα, όπου θα αποκαλυφθούν οι λεπτομέρειες του μηχανισμού συμπερασμάτων.Βήμα 0
Σύναψη
Περισσότερες διαβάσει αναμονή