Πίνακας περιεχομένων[Κρύβω][Προβολή]
Τα τελευταία χρόνια, τα νευρωνικά δίκτυα έχουν αυξηθεί σε δημοτικότητα καθώς έχουν αποδειχθεί εξαιρετικά καλά σε ένα ευρύ φάσμα εργασιών.
Έχει αποδειχθεί ότι είναι μια εξαιρετική επιλογή για αναγνώριση εικόνας και ήχου, επεξεργασία φυσικής γλώσσας και ακόμη και για πολύπλοκα παιχνίδια όπως το Go και το σκάκι.
Σε αυτήν την ανάρτηση, θα σας καθοδηγήσω σε όλη τη διαδικασία εκπαίδευσης ενός νευρωνικού δικτύου. Θα αναφέρω και θα εξηγήσω όλα τα βήματα για την εκπαίδευση ενός νευρωνικού δικτύου.
Ενώ θα προχωρήσω στα βήματα, θα ήθελα να προσθέσω ένα απλό παράδειγμα για να βεβαιωθώ ότι υπάρχει και ένα πρακτικό παράδειγμα.
Ελάτε λοιπόν και ας μάθουμε πώς να επεξεργαζόμαστε τα νευρωνικά δίκτυα
Ας ξεκινήσουμε απλά και ας ρωτήσουμε τι είναι νευρωνικά δίκτυα καταρχήν.
Τι είναι ακριβώς τα νευρωνικά δίκτυα;
Τα νευρωνικά δίκτυα είναι λογισμικό υπολογιστή που προσομοιώνει τη λειτουργία του ανθρώπινου εγκεφάλου. Μπορούν να μάθουν από τεράστιους όγκους δεδομένων και να εντοπίσουν μοτίβα που οι άνθρωποι μπορεί να δυσκολεύονται να εντοπίσουν.
Τα νευρωνικά δίκτυα έχουν αυξηθεί σε δημοτικότητα τα τελευταία χρόνια λόγω της ευελιξίας τους σε εργασίες όπως η αναγνώριση εικόνας και ήχου, η επεξεργασία φυσικής γλώσσας και η προγνωστική μοντελοποίηση.
Συνολικά, τα νευρωνικά δίκτυα είναι ένα ισχυρό εργαλείο για ένα ευρύ φάσμα εφαρμογών και έχουν την ευκαιρία να μεταμορφώσουν τον τρόπο που προσεγγίζουμε ένα ευρύ φάσμα εργασιών.
Γιατί πρέπει να γνωρίζουμε γι 'αυτούς;
Η κατανόηση των νευρωνικών δικτύων είναι κρίσιμη γιατί έχουν οδηγήσει σε ανακαλύψεις σε διάφορους τομείς, συμπεριλαμβανομένης της όρασης υπολογιστή, της αναγνώρισης ομιλίας και της επεξεργασίας φυσικής γλώσσας.
Τα νευρωνικά δίκτυα, για παράδειγμα, βρίσκονται στο επίκεντρο των πρόσφατων εξελίξεων στα αυτοοδηγούμενα αυτοκίνητα, στις υπηρεσίες αυτόματης μετάφρασης, ακόμη και στα ιατρικά διαγνωστικά.
Η κατανόηση του τρόπου λειτουργίας των νευρωνικών δικτύων και του τρόπου σχεδίασής τους μας βοηθά να δημιουργήσουμε νέες και εφευρετικές εφαρμογές. Και, ίσως, μπορεί να οδηγήσει σε ακόμη μεγαλύτερες ανακαλύψεις στο μέλλον.
Σημείωση σχετικά με το σεμινάριο
Όπως είπα παραπάνω, θα ήθελα να εξηγήσω τα βήματα εκπαίδευσης ενός νευρωνικού δικτύου δίνοντας ένα παράδειγμα. Για να γίνει αυτό, θα πρέπει να μιλήσουμε για το σύνολο δεδομένων MNIST. Είναι μια δημοφιλής επιλογή για αρχάριους που θέλουν να ξεκινήσουν με τα νευρωνικά δίκτυα.
Το MNIST είναι ένα αρκτικόλεξο που σημαίνει Τροποποιημένο Εθνικό Ινστιτούτο Προτύπων και Τεχνολογίας. Είναι ένα χειρόγραφο σύνολο δεδομένων ψηφίων που χρησιμοποιείται συνήθως για εκπαίδευση και δοκιμή μοντέλων μηχανικής εκμάθησης, ιδίως νευρωνικών δικτύων.
Η συλλογή περιέχει 70,000 φωτογραφίες σε κλίμακα του γκρι με χειρόγραφους αριθμούς που κυμαίνονται από το 0 έως το 9.
Το σύνολο δεδομένων MNIST είναι ένα δημοφιλές σημείο αναφοράς για ταξινόμηση εικόνας καθήκοντα. Χρησιμοποιείται συχνά για διδασκαλία και μάθηση, καθώς είναι συμπαγής και εύκολος στην αντιμετώπισή του, ενώ ταυτόχρονα αποτελεί μια δύσκολη πρόκληση για τους αλγόριθμους μηχανικής μάθησης να απαντήσουν.
Το σύνολο δεδομένων MNIST υποστηρίζεται από διάφορα πλαίσια και βιβλιοθήκες μηχανικής μάθησης, συμπεριλαμβανομένων των TensorFlow, Keras και PyTorch.
Τώρα γνωρίζουμε για το σύνολο δεδομένων MNIST, ας ξεκινήσουμε με τα βήματα εκπαίδευσης ενός νευρωνικού δικτύου.
Βασικά βήματα για την εκπαίδευση ενός νευρωνικού δικτύου
Εισαγωγή Απαραίτητων Βιβλιοθηκών
Όταν ξεκινάμε για πρώτη φορά την εκπαίδευση ενός νευρωνικού δικτύου, είναι κρίσιμο να έχουμε τα απαραίτητα εργαλεία για να σχεδιάσουμε και να εκπαιδεύσουμε το μοντέλο. Το αρχικό βήμα για τη δημιουργία ενός νευρωνικού δικτύου είναι η εισαγωγή απαιτούμενων βιβλιοθηκών όπως οι TensorFlow, Keras και NumPy.
Αυτές οι βιβλιοθήκες χρησιμεύουν ως δομικά στοιχεία για την ανάπτυξη του νευρωνικού δικτύου και παρέχουν κρίσιμες δυνατότητες. Ο συνδυασμός αυτών των βιβλιοθηκών επιτρέπει τη δημιουργία εξελιγμένων σχεδίων νευρωνικών δικτύων και γρήγορη εκπαίδευση.
Για να ξεκινήσουμε το παράδειγμά μας. θα εισαγάγουμε τις απαιτούμενες βιβλιοθήκες, οι οποίες περιλαμβάνουν τις TensorFlow, Keras και NumPy. TensorFlow είναι ένα πλαίσιο μηχανικής μάθησης ανοιχτού κώδικα, το Keras είναι ένα API νευρωνικών δικτύων υψηλού επιπέδου και το NumPy είναι μια βιβλιοθήκη Python αριθμητικής υπολογιστικής.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Φορτώστε το σύνολο δεδομένων
Το σύνολο δεδομένων πρέπει τώρα να φορτωθεί. Το σύνολο δεδομένων είναι το σύνολο των δεδομένων στα οποία θα εκπαιδευτεί το νευρωνικό δίκτυο. Αυτό μπορεί να είναι οποιοδήποτε είδος δεδομένων, συμπεριλαμβανομένων φωτογραφιών, ήχου και κειμένου.
Είναι κρίσιμο να χωρίσουμε το σύνολο δεδομένων σε δύο μέρη: ένα για την εκπαίδευση του νευρωνικού δικτύου και ένα άλλο για την αξιολόγηση της ορθότητας του εκπαιδευμένου μοντέλου. Πολλές βιβλιοθήκες, συμπεριλαμβανομένων των TensorFlow, Keras και PyTorch, μπορούν να χρησιμοποιηθούν για την εισαγωγή του συνόλου δεδομένων.
Για το παράδειγμά μας, χρησιμοποιούμε επίσης Keras για να φορτώσουμε το σύνολο δεδομένων MNIST. Υπάρχουν 60,000 φωτογραφίες εκπαίδευσης και 10,000 δοκιμαστικές εικόνες στο σύνολο δεδομένων.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Προεπεξεργασία των Δεδομένων
Η προεπεξεργασία δεδομένων είναι ένα σημαντικό στάδιο στην εκπαίδευση ενός νευρωνικού δικτύου. Συνεπάγεται την προετοιμασία και τον καθαρισμό των δεδομένων πριν τροφοδοτηθούν στο νευρωνικό δίκτυο.
Η κλιμάκωση των τιμών των εικονοστοιχείων, η κανονικοποίηση δεδομένων και η μετατροπή ετικετών σε κωδικοποίηση μιας άμεσης σύνδεσης είναι παραδείγματα διαδικασιών προεπεξεργασίας. Αυτές οι διαδικασίες βοηθούν το νευρωνικό δίκτυο να μάθει πιο αποτελεσματικά και με ακρίβεια.
Η προεπεξεργασία των δεδομένων μπορεί επίσης να βοηθήσει στην ελαχιστοποίηση της υπερπροσαρμογής και στη βελτίωση της απόδοσης του νευρωνικού δικτύου.
Πρέπει να προεπεξεργαστείτε τα δεδομένα πριν εκπαιδεύσετε το νευρωνικό δίκτυο. Αυτό περιλαμβάνει την αλλαγή των ετικετών σε κωδικοποίηση μιας άμεσης σύνδεσης και την κλιμάκωση των τιμών των εικονοστοιχείων μεταξύ 0 και 1.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
Ορίστε το μοντέλο
Η διαδικασία καθορισμού του μοντέλου νευρωνικού δικτύου περιλαμβάνει την καθιέρωση της αρχιτεκτονικής του, όπως ο αριθμός των επιπέδων, ο αριθμός των νευρώνων ανά επίπεδο, οι συναρτήσεις ενεργοποίησης και ο τύπος δικτύου (τροφοδοσίας, επαναλαμβανόμενης ή συνελικτικής).
Ο σχεδιασμός του νευρωνικού δικτύου που χρησιμοποιείτε καθορίζεται από το είδος του προβλήματος που προσπαθείτε να λύσετε. Ένας καλά καθορισμένος σχεδιασμός νευρωνικού δικτύου μπορεί να βοηθήσει στη μάθηση των νευρωνικών δικτύων καθιστώντας το πιο αποτελεσματικό και ακριβές.
Ήρθε η ώρα να περιγράψουμε το μοντέλο νευρωνικών δικτύων σε αυτό το σημείο. Χρησιμοποιήστε ένα απλό μοντέλο με δύο κρυφά επίπεδα, το καθένα με 128 νευρώνες, και ένα επίπεδο εξόδου softmax, το οποίο έχει 10 νευρώνες, για αυτό το παράδειγμα.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Μεταγλώττιση του μοντέλου
Η συνάρτηση απώλειας, ο βελτιστοποιητής και οι μετρήσεις πρέπει να προσδιορίζονται κατά τη μεταγλώττιση του μοντέλου νευρωνικού δικτύου. Η ικανότητα του νευρωνικού δικτύου να προβλέπει σωστά την έξοδο μετράται από τη συνάρτηση απώλειας.
Για να αυξήσει την ακρίβεια του νευρωνικού δικτύου κατά τη διάρκεια της εκπαίδευσης, ο βελτιστοποιητής τροποποιεί τα βάρη του. Η αποτελεσματικότητα του νευρωνικού δικτύου κατά τη διάρκεια της εκπαίδευσης μετράται χρησιμοποιώντας μετρήσεις. Το μοντέλο πρέπει να δημιουργηθεί πριν μπορέσει να εκπαιδευτεί το νευρωνικό δίκτυο.
Στο παράδειγμά μας, πρέπει τώρα να κατασκευάσουμε το μοντέλο.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Εκπαιδεύστε το μοντέλο
Η μετάδοση του προετοιμασμένου συνόλου δεδομένων μέσω του νευρωνικού δικτύου ενώ τροποποιεί τα βάρη του δικτύου για την ελαχιστοποίηση της συνάρτησης απώλειας είναι γνωστή ως εκπαίδευση του νευρωνικού δικτύου.
Το σύνολο δεδομένων επικύρωσης χρησιμοποιείται για τη δοκιμή του νευρωνικού δικτύου κατά τη διάρκεια της εκπαίδευσης για την παρακολούθηση της αποτελεσματικότητάς του και την πρόληψη της υπερπροσαρμογής. Η διαδικασία εκπαίδευσης μπορεί να διαρκέσει κάποιο χρόνο, επομένως είναι σημαντικό να βεβαιωθείτε ότι το νευρωνικό δίκτυο είναι κατάλληλα εκπαιδευμένο για να αποφευχθεί η κακή προσαρμογή.
Χρησιμοποιώντας τα δεδομένα εκπαίδευσης, μπορούμε τώρα να εκπαιδεύσουμε το μοντέλο. Για να γίνει αυτό, πρέπει να ορίσουμε το μέγεθος παρτίδας (ο αριθμός των δειγμάτων που υποβλήθηκαν σε επεξεργασία πριν από την ενημέρωση του μοντέλου) και τον αριθμό των εποχών (ο αριθμός των επαναλήψεων σε ολόκληρο το σύνολο δεδομένων).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Αξιολόγηση του Μοντέλου
Η δοκιμή της απόδοσης του νευρωνικού δικτύου στο σύνολο δεδομένων δοκιμής είναι η διαδικασία αξιολόγησής του. Σε αυτό το στάδιο, το εκπαιδευμένο νευρωνικό δίκτυο χρησιμοποιείται για την επεξεργασία του συνόλου δεδομένων δοκιμής και αξιολογείται η ακρίβεια.
Το πόσο αποτελεσματικά ένα νευρωνικό δίκτυο μπορεί να προβλέψει το σωστό αποτέλεσμα από ολοκαίνουργια, μη δοκιμασμένα δεδομένα είναι ένα μέτρο της ακρίβειάς του. Η ανάλυση του μοντέλου μπορεί να βοηθήσει στον προσδιορισμό του πόσο καλά λειτουργεί το νευρωνικό δίκτυο και επίσης να προτείνει τρόπους για να γίνει ακόμα καλύτερο.
Μπορούμε τελικά να αξιολογήσουμε την απόδοση του μοντέλου χρησιμοποιώντας τα δεδομένα δοκιμής μετά την εκπαίδευση.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Αυτό είναι όλο! Εκπαιδεύσαμε ένα νευρωνικό δίκτυο για την ανίχνευση ψηφίων στο σύνολο δεδομένων MNIST.
Από την προετοιμασία των δεδομένων μέχρι την αξιολόγηση της αποτελεσματικότητας του εκπαιδευμένου μοντέλου, η εκπαίδευση ενός νευρωνικού δικτύου περιλαμβάνει διάφορες διαδικασίες. Αυτές οι οδηγίες βοηθούν τους αρχάριους στην αποτελεσματική κατασκευή και εκπαίδευση νευρωνικών δικτύων.
Οι αρχάριοι που θέλουν να χρησιμοποιήσουν τα νευρωνικά δίκτυα για να αντιμετωπίσουν διάφορα ζητήματα μπορούν να το κάνουν ακολουθώντας αυτές τις οδηγίες.
Οπτικοποίηση του Παραδείγματος
Ας προσπαθήσουμε να οπτικοποιήσουμε τι κάναμε με αυτό το παράδειγμα για να καταλάβουμε καλύτερα.
Το πακέτο Matplotlib χρησιμοποιείται σε αυτό το απόσπασμα κώδικα για να σχεδιάσει μια τυχαία επιλογή φωτογραφιών από το σύνολο δεδομένων εκπαίδευσης. Αρχικά, εισάγουμε τη λειτουργική μονάδα «pyplot» του Matplotlib και την ονομάζουμε «plt». Στη συνέχεια, με συνολική διάσταση 10 επί 10 ίντσες, φτιάχνουμε μια φιγούρα με 5 σειρές και 5 στήλες υπογραφών.
Στη συνέχεια, χρησιμοποιούμε έναν βρόχο for για να επαναλάβουμε τα υπογραφικά, εμφανίζοντας μια εικόνα από το σύνολο δεδομένων εκπαίδευσης σε κάθε ένα. Για την εμφάνιση της εικόνας, χρησιμοποιείται η λειτουργία «imshow», με την επιλογή «cmap» να έχει οριστεί σε «γκρι» για να εμφανίζονται οι φωτογραφίες σε κλίμακα του γκρι. Ο τίτλος κάθε δευτερεύουσας πλοκής ορίζεται επίσης στην ετικέτα της σχετικής εικόνας στη συλλογή.
Τέλος, χρησιμοποιούμε τη συνάρτηση «show» για να εμφανίσουμε τις γραφικές εικόνες στο σχήμα. Αυτή η λειτουργία μας επιτρέπει να αξιολογήσουμε οπτικά ένα δείγμα φωτογραφιών από το σύνολο δεδομένων, το οποίο μπορεί να βοηθήσει στην κατανόηση των δεδομένων και στον εντοπισμό τυχόν πιθανών ανησυχιών.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
Σημαντικά μοντέλα νευρωνικών δικτύων
- Νευρωνικά Δίκτυα Feedforward (FFNN): Ένας απλός τύπος νευρωνικού δικτύου στο οποίο οι πληροφορίες ταξιδεύουν μόνο με έναν τρόπο, από το επίπεδο εισόδου στο επίπεδο εξόδου μέσω ενός ή περισσότερων κρυφών επιπέδων.
- Συνελικτικά νευρωνικά δίκτυα (CNN): Ένα νευρωνικό δίκτυο που χρησιμοποιείται συνήθως στην ανίχνευση και την επεξεργασία εικόνων. Τα CNN προορίζονται για την αυτόματη αναγνώριση και εξαγωγή χαρακτηριστικών από εικόνες.
- Επαναλαμβανόμενα νευρωνικά δίκτυα (RNN): Ένα νευρωνικό δίκτυο που χρησιμοποιείται συνήθως στην ανίχνευση και την επεξεργασία εικόνων. Τα CNN προορίζονται για την αυτόματη αναγνώριση και εξαγωγή χαρακτηριστικών από εικόνες.
- Δίκτυα μακράς βραχυπρόθεσμης μνήμης (LSTM): Μια μορφή RNN που δημιουργήθηκε για να ξεπεραστεί το ζήτημα της εξαφάνισης των κλίσεων σε τυπικά RNN. Οι μακροπρόθεσμες εξαρτήσεις σε διαδοχικά δεδομένα μπορούν να αποτυπωθούν καλύτερα με τα LSTM.
- Αυτοκωδικοποιητές: Μη εποπτευόμενο νευρωνικό δίκτυο εκμάθησης στο οποίο το δίκτυο διδάσκεται να αναπαράγει τα δεδομένα εισόδου στο επίπεδο εξόδου του. Η συμπίεση δεδομένων, η ανίχνευση ανωμαλιών και ο καθαρισμός του θορύβου της εικόνας μπορούν όλα να πραγματοποιηθούν με αυτοκωδικοποιητές.
- Generative Adversarial Networks (GAN): Ένα γενετικό νευρωνικό δίκτυο είναι μια μορφή νευρωνικού δικτύου που διδάσκεται να παράγει νέα δεδομένα που είναι συγκρίσιμα με ένα σύνολο δεδομένων εκπαίδευσης. Τα GAN αποτελούνται από δύο δίκτυα: ένα δίκτυο παραγωγής που δημιουργεί νέα δεδομένα και ένα δίκτυο διαχωρισμού που αξιολογεί την ποιότητα των δεδομένων που δημιουργούνται.
Περίληψη, ποια πρέπει να είναι τα επόμενα βήματά σας;
Εξερευνήστε διάφορους διαδικτυακούς πόρους και μαθήματα για να μάθετε περισσότερα σχετικά με την εκπαίδευση ενός νευρωνικού δικτύου. Η εργασία σε έργα ή παραδείγματα είναι μια μέθοδος για να αποκτήσετε καλύτερη κατανόηση των νευρωνικών δικτύων.
Ξεκινήστε με εύκολα παραδείγματα όπως προβλήματα δυαδικής ταξινόμησης ή εργασίες ταξινόμησης εικόνων και, στη συνέχεια, προχωρήστε σε πιο δύσκολες εργασίες όπως η επεξεργασία φυσικής γλώσσας ή ενίσχυση μάθησης.
Η εργασία σε έργα σάς βοηθά να αποκτήσετε πραγματική εμπειρία και να βελτιώσετε τις εκπαιδευτικές δεξιότητές σας στα νευρωνικά δίκτυα.
Μπορείτε επίσης να εγγραφείτε σε ομάδες και φόρουμ διαδικτυακής μηχανικής εκμάθησης και νευρωνικών δικτύων για να αλληλεπιδράσετε με άλλους μαθητές και επαγγελματίες, να μοιραστείτε την εργασία σας και να λάβετε σχόλια και βοήθεια.
LSRS MONRAD-KROHN
⁶ĵΘα ήθελα να δούμε το πρόγραμμα python για την ελαχιστοποίηση σφαλμάτων. Ειδικοί κόμβοι επιλογής για αλλαγές βάρους στο επόμενο στρώμα