Ο μηχανισμός συμπερασμάτων ενός εκπαιδευμένου μοντέλου σε παραγωγή αλληλουχίας. Μέρος 1

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

image_blog

Επισκόπηση αρχιτεκτονικής μοντέλου

Ας εξετάσουμε τον μηχανισμό συμπερασμάτων του εκπαιδευμένου μοντέλου για το παράδειγμα της ακόλουθη συμβολοσειρά 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)

image_blog

Παράμετροι και αρχικοποίηση συμπερασμάτων

Στη συνέχεια, εξετάστε ένα παράδειγμα για συμπέρασμα με τις ακόλουθες παραμέτρους. Στην περίπτωσή μας, χρησιμοποιήθηκαν οι ακόλουθες παράμετροι συμπερασμάτων:

  • beam_size = 2
  • μήκος_penalty = 0.2
  • Coverage_Penalty = 0.2
  • δειγματοληψία_topk = 5
  • Sampling_Temperature = 0.5

Στη συνέχεια, εφαρμόζοντας τη συνάρτηση tfa.seq.tile_batch Επιτρέπει τον πίνακα τιμής που λαμβάνεται μετά την αντιγραφή του κωδικοποιητή από την ποσότητα beam_size . Η έξοδος είναι μια μήτρα τιμών * μέγεθος δέσμης, στην περίπτωσή μας δύο. (Εικόνα 2 - Έξοδοι κωδικοποιητή * μέγεθος δέσμης)

image_blog

Το δεύτερο βήμα είναι να αρχικοποιήσετε τις μεταβλητές:

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 , το οποίο περιέχει τις ακόλουθες μεταβλητές, αρχικοποιείται: