Τι είναι το 'from_logits=True' στις συναρτήσεις απώλειας Keras/TensorFlow; Ευφυΐα Δεδομένων PlatoBlockchain. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Τι είναι το 'from_logits=True' στις συναρτήσεις απώλειας Keras/TensorFlow;

Πλαίσια Deep Learning όπως το Keras μειώνουν το εμπόδιο εισόδου για τις μάζες και εκδημοκρατίζουν την ανάπτυξη μοντέλων DL σε άπειρους ανθρώπους, οι οποίοι μπορούν να βασίζονται σε λογικές προεπιλογές και απλοποιημένα API για να φέρουν το βάρος της βαριάς άρσης και να παράγουν αξιοπρεπή αποτελέσματα.

Μια κοινή σύγχυση προκύπτει μεταξύ νεότερων επαγγελματιών βαθιάς μάθησης όταν χρησιμοποιούν λειτουργίες απώλειας Keras για ταξινόμηση, όπως π.χ. CategoricalCrossentropy και SparseCategoricalCrossentropy:

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=True)

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=False)

Τι κάνει το from_logits σημαία αναφέρεται;

Η απάντηση είναι αρκετά απλή, αλλά απαιτεί μια ματιά στην έξοδο του δικτύου που προσπαθούμε να βαθμολογήσουμε χρησιμοποιώντας τη συνάρτηση απώλειας.

Logits και SoftMax Probabilities

Σύντομη ιστορία:

Οι πιθανότητες κανονικοποιούνται – δηλαδή έχουν ένα εύρος μεταξύ [0..1]. Τα logit δεν είναι κανονικοποιημένα και μπορεί να έχουν εύρος μεταξύ [-inf...+inf].

Ανάλογα με το επίπεδο εξόδου του δικτύου σας:

output = keras.layers.Dense(n, activation='softmax')(x)

output = keras.layers.Dense(n)(x)

Η έξοδος του Dense στρώμα θα είτε ΕΠΙΣΤΡΟΦΗ:

  • πιθανότητες: Η έξοδος διέρχεται μέσω μιας συνάρτησης SoftMax που κανονικοποιεί την έξοδο σε ένα σύνολο πιθανοτήτων πάνω από n, που όλα αθροίζονται 1.
  • logits: n ενεργοποιήσεις.

Αυτή η παρανόηση πιθανώς προκύπτει από τη σύντομη σύνταξη που σας επιτρέπει να προσθέσετε μια ενεργοποίηση σε ένα επίπεδο, φαινομενικώς ως ενιαίο επίπεδο, παρόλο που είναι απλώς συντομογραφία για:

output = keras.layers.Dense(n, activation='softmax')(x)

dense = keras.layers.Dense(n)(x)
output = keras.layers.Activation('softmax')(dense)

Η συνάρτηση απώλειας πρέπει να ενημερωθεί για το αν θα πρέπει να αναμένει μια κανονικοποιημένη κατανομή (έξοδος που διέρχεται από μια συνάρτηση SoftMax) ή logit. Ως εκ τούτου, το from_logits σημαία!

Πότε πρέπει from_logits=Αλήθεια?

Εάν το δίκτυό σας κανονικοποιεί τις πιθανότητες εξόδου, θα πρέπει να οριστεί η συνάρτηση απώλειας from_logits προς την False, καθώς δεν δέχεται logits. Αυτή είναι επίσης η προεπιλεγμένη τιμή όλων των κλάσεων απώλειας που δέχονται τη σημαία, καθώς οι περισσότεροι άνθρωποι προσθέτουν ένα activation='softmax' στα στρώματα εξόδου τους:

model = keras.Sequential([
    keras.layers.Input(shape=(10, 1)),
    
    keras.layers.Dense(10, activation='softmax') 
])

input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)

Αυτο εχει ως αποτελεσμα:

tf.Tensor(
[[[0.12467965 0.10423233 0.10054766 0.09162105 0.09144577 0.07093797
   0.12523937 0.11292477 0.06583504 0.11253635]]], shape=(1, 1, 10), dtype=float32)

Δεδομένου ότι αυτό το δίκτυο έχει ως αποτέλεσμα μια κανονικοποιημένη κατανομή - κατά τη σύγκριση των εξόδων με τις εξόδους στόχους και τη βαθμολόγησή τους μέσω μιας συνάρτησης απώλειας ταξινόμησης (για την κατάλληλη εργασία) - θα πρέπει να ρυθμίσετε from_logits προς την Falseή αφήστε την προεπιλεγμένη τιμή να παραμείνει.

Από την άλλη πλευρά, εάν το δίκτυό σας δεν εφαρμόζει το SoftMax στην έξοδο:

model = keras.Sequential([
    keras.layers.Input(shape=(10, 1)),
    
    keras.layers.Dense(10)
])

input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)

Αυτο εχει ως αποτελεσμα:

tf.Tensor(
[[[-0.06081138  0.04154852  0.00153442  0.0705068  -0.01139916
    0.08506121  0.1211026  -0.10112958 -0.03410497  0.08653068]]], shape=(1, 1, 10), dtype=float32)

Θα πρέπει να ρυθμίσετε from_logits προς την True ώστε η συνάρτηση απώλειας να αντιμετωπίζει σωστά τις εξόδους.

Πότε να χρησιμοποιήσετε το SoftMax στην έξοδο;

Οι περισσότεροι επαγγελματίες εφαρμόζουν το SoftMax στην έξοδο για να δώσουν μια κανονικοποιημένη κατανομή πιθανοτήτων, καθώς σε πολλές περιπτώσεις θα χρησιμοποιήσετε ένα δίκτυο – ειδικά σε απλοποιημένο εκπαιδευτικό υλικό. Ωστόσο, σε ορισμένες περιπτώσεις, εσείς δεν θέλετε να εφαρμόσετε τη συνάρτηση στην έξοδο, να την επεξεργαστείτε με διαφορετικό τρόπο πριν εφαρμόσετε είτε το SoftMax είτε μια άλλη συνάρτηση.

Ένα αξιοσημείωτο παράδειγμα προέρχεται από μοντέλα NLP, στα οποία μια πραγματικά η πιθανότητα για ένα μεγάλο λεξιλόγιο μπορεί να υπάρχει στον τανυστή εξόδου. Εφαρμογή του SoftMax από πάνω Ολα τους και λαίμαργα παίρνοντας το argmax συνήθως δεν παράγει πολύ καλά αποτελέσματα.

Ωστόσο, εάν παρατηρήσετε τα logits, εξάγετε το Top-K (όπου το K μπορεί να είναι οποιοσδήποτε αριθμός, αλλά είναι συνήθως κάπου μεταξύ [0...10]), και μόνο τότε εφαρμόζεται το SoftMax στο τοπ-κ Τα πιθανά διακριτικά στο λεξιλόγιο αλλάζουν σημαντικά την κατανομή και συνήθως παράγουν πιο ρεαλιστικά αποτελέσματα.

Ρίξτε μια ματιά στον πρακτικό μας οδηγό για την εκμάθηση του Git, με βέλτιστες πρακτικές, πρότυπα αποδεκτά από τον κλάδο και συμπεριλαμβανόμενο φύλλο εξαπάτησης. Σταματήστε τις εντολές του Git στο Google και πραγματικά μαθαίνουν το!

Αυτό είναι γνωστό ως δειγματοληψία Top-K, και παρόλο που δεν είναι η ιδανική στρατηγική, συνήθως ξεπερνά σημαντικά την άπληστη δειγματοληψία.

Going Further – Πρακτική βαθιά μάθηση για το Computer Vision

Η περιπετειώδης φύση σας σας κάνει να θέλετε να πάτε παραπέρα; Σας προτείνουμε να ελέγξετε το δικό μας Πορεία: "Πρακτική βαθιά μάθηση για την όραση υπολογιστή με Python".

Ένα άλλο μάθημα Computer Vision;

Δεν θα κάνουμε ταξινόμηση ψηφίων MNIST ή μόδας MNIST. Υπηρέτησαν το μέρος τους εδώ και πολύ καιρό. Πάρα πολλοί πόροι εκμάθησης εστιάζουν σε βασικά σύνολα δεδομένων και βασικές αρχιτεκτονικές πριν αφήσουν τις προηγμένες αρχιτεκτονικές μαύρου κουτιού να επωμιστούν το βάρος της απόδοσης.

Θέλουμε να επικεντρωθούμε απομυθοποίηση, πρακτικότητα, κατανόηση, διαίσθηση και πραγματικά έργα. Θέλω να μάθω πως μπορείς να κάνεις την διαφορά? Θα σας μεταφέρουμε από τον τρόπο με τον οποίο ο εγκέφαλός μας επεξεργάζεται εικόνες έως τη σύνταξη ενός ταξινομητή βαθιάς μάθησης για τον καρκίνο του μαστού σε δίκτυα βαθιάς μάθησης που «παραισθάνονται», διδάσκοντάς σας τις αρχές και τη θεωρία μέσω πρακτικής εργασίας, εξοπλίζοντάς σας με τεχνογνωσία και εργαλεία για να γίνετε ειδικός στην εφαρμογή της βαθιάς μάθησης για την επίλυση της όρασης υπολογιστή.

Τι είναι μέσα?

  • Οι πρώτες αρχές της όρασης και πώς οι υπολογιστές μπορούν να διδαχθούν να «βλέπουν»
  • Διαφορετικές εργασίες και εφαρμογές της όρασης υπολογιστή
  • Τα εργαλεία του εμπορίου που θα κάνουν τη δουλειά σας πιο εύκολη
  • Εύρεση, δημιουργία και χρήση συνόλων δεδομένων για την όραση υπολογιστή
  • Η θεωρία και η εφαρμογή των συνελικτικών νευρωνικών δικτύων
  • Χειρισμός μετατόπισης τομέα, συνεμφάνισης και άλλων προκαταλήψεων στα σύνολα δεδομένων
  • Μεταφέρετε τη μάθηση και χρησιμοποιείτε τον χρόνο εκπαίδευσης και τους υπολογιστικούς πόρους άλλων προς όφελός σας
  • Κατασκευή και εκπαίδευση ενός υπερσύγχρονου ταξινομητή καρκίνου του μαστού
  • Πώς να εφαρμόσετε μια υγιή δόση σκεπτικισμού στις επικρατούσες ιδέες και να κατανοήσετε τις επιπτώσεις των ευρέως υιοθετημένων τεχνικών
  • Οπτικοποίηση του «εννοιολογικού χώρου» ενός ConvNet χρησιμοποιώντας t-SNE και PCA
  • Μελέτες περίπτωσης για το πώς οι εταιρείες χρησιμοποιούν τεχνικές όρασης υπολογιστή για να επιτύχουν καλύτερα αποτελέσματα
  • Σωστή αξιολόγηση μοντέλου, οπτικοποίηση λανθάνοντος χώρου και αναγνώριση της προσοχής του μοντέλου
  • Εκτέλεση έρευνας τομέα, επεξεργασία των δικών σας συνόλων δεδομένων και δημιουργία δοκιμών μοντέλων
  • Αρχιτεκτονικές αιχμής, η εξέλιξη των ιδεών, τι τις κάνει μοναδικές και πώς να τις εφαρμόσετε
  • KerasCV – μια βιβλιοθήκη WIP για τη δημιουργία αγωγών και μοντέλων τελευταίας τεχνολογίας
  • Πώς να αναλύετε και να διαβάζετε έγγραφα και να τα εφαρμόζετε μόνοι σας
  • Επιλογή μοντέλων ανάλογα με την εφαρμογή σας
  • Δημιουργία ενός αγωγού μηχανικής εκμάθησης από άκρο σε άκρο
  • Τοπίο και διαίσθηση για την ανίχνευση αντικειμένων με ταχύτερα R-CNN, RetinaNets, SSD και YOLO
  • Παρουσίαση και σημασιολογική κατάτμηση
  • Αναγνώριση αντικειμένων σε πραγματικό χρόνο με το YOLOv5
  • Εκπαίδευση ανιχνευτών αντικειμένων YOLOv5
  • Εργασία με μετασχηματιστές χρησιμοποιώντας KerasNLP (βιβλιοθήκη WIP με αντοχή στη βιομηχανία)
  • Ενσωμάτωση Transformers με ConvNets για τη δημιουργία λεζάντων εικόνων
  • DeepDream

Συμπέρασμα

Σε αυτόν τον σύντομο οδηγό, ρίξαμε μια ματιά στο from_logits επιχείρημα για τα μαθήματα απώλειας Keras, τα οποία συχνά εγείρουν ερωτήσεις σε νεότερους επαγγελματίες.

Η σύγχυση πιθανώς προκύπτει από τη σύντομη σύνταξη που επιτρέπει την προσθήκη επιπέδων ενεργοποίησης πάνω από άλλα επίπεδα, εντός του ορισμού του ίδιου του επιπέδου. Επιτέλους ρίξαμε μια ματιά στο πότε πρέπει να οριστεί το επιχείρημα True or False, και πότε μια έξοδος πρέπει να αφεθεί ως logit ή να περάσει μέσω μιας συνάρτησης ενεργοποίησης όπως το SoftMax.

Σφραγίδα ώρας:

Περισσότερα από Stackabuse