Inhaltsverzeichnis[Ausblenden][Zeigen]
In den letzten Jahren erfreuen sich neuronale Netze zunehmender Beliebtheit, da sie sich bei einem breiten Aufgabenspektrum als äußerst gut erwiesen haben.
Sie haben sich als hervorragende Wahl für die Bild- und Audioerkennung, die Verarbeitung natürlicher Sprache und sogar für das Spielen komplizierter Spiele wie Go und Schach erwiesen.
In diesem Beitrag werde ich Sie durch den gesamten Prozess des Trainings eines neuronalen Netzwerks führen. Ich werde alle Schritte zum Trainieren eines neuronalen Netzwerks erwähnen und erklären.
Während ich die Schritte durchgehe, möchte ich ein einfaches Beispiel hinzufügen, um sicherzustellen, dass es auch ein praktisches Beispiel gibt.
Kommen Sie also vorbei und lernen Sie, wie man neuronale Netze verarbeitet
Fangen wir einfach an und fragen, was das ist Neuronale Netze in den ersten Platz.
Was genau sind neuronale Netze?
Neuronale Netze sind Computersoftware, die die Funktionsweise des menschlichen Gehirns simuliert. Sie können aus riesigen Datenmengen lernen und Muster erkennen, die für Menschen möglicherweise schwer zu erkennen sind.
Neuronale Netze erfreuen sich in den letzten Jahren aufgrund ihrer Vielseitigkeit bei Aufgaben wie der Bild- und Audioerkennung, der Verarbeitung natürlicher Sprache und der Vorhersagemodellierung zunehmender Beliebtheit.
Insgesamt sind neuronale Netze ein starkes Werkzeug für eine Vielzahl von Anwendungen und haben die Chance, die Art und Weise, wie wir an eine Vielzahl von Aufgaben herangehen, zu verändern.
Warum sollten wir über sie Bescheid wissen?
Das Verständnis neuronaler Netze ist von entscheidender Bedeutung, da sie zu Entdeckungen in einer Vielzahl von Bereichen geführt haben, darunter Computer Vision, Spracherkennung und Verarbeitung natürlicher Sprache.
Neuronale Netze stehen beispielsweise im Mittelpunkt der jüngsten Entwicklungen bei selbstfahrenden Autos, automatischen Übersetzungsdiensten und sogar in der medizinischen Diagnostik.
Wenn wir verstehen, wie neuronale Netze funktionieren und wie man sie gestaltet, können wir neue und einfallsreiche Anwendungen entwickeln. Und vielleicht führt es in Zukunft zu noch größeren Entdeckungen.
Eine Anmerkung zum Tutorial
Wie oben erwähnt, möchte ich die Schritte zum Training eines neuronalen Netzwerks anhand eines Beispiels erläutern. Dazu sollten wir über den MNIST-Datensatz sprechen. Es ist eine beliebte Wahl für Anfänger, die mit neuronalen Netzen beginnen möchten.
MNIST ist ein Akronym und steht für Modified National Institute of Standards and Technology. Es handelt sich um einen handgeschriebenen Zifferndatensatz, der häufig zum Trainieren und Testen von Modellen für maschinelles Lernen, insbesondere neuronalen Netzen, verwendet wird.
Die Sammlung enthält 70,000 Graustufenfotos handgeschriebener Ziffern von 0 bis 9.
Der MNIST-Datensatz ist ein beliebter Benchmark für Bildklassifizierung Aufgaben. Es wird häufig zum Lehren und Lernen verwendet, da es kompakt und einfach zu handhaben ist, aber dennoch eine schwierige Herausforderung für maschinelle Lernalgorithmen darstellt.
Der MNIST-Datensatz wird von mehreren Frameworks und Bibliotheken für maschinelles Lernen unterstützt, darunter TensorFlow, Keras und PyTorch.
Nachdem wir nun den MNIST-Datensatz kennen, beginnen wir mit den Schritten zum Training eines neuronalen Netzwerks.
Grundlegende Schritte zum Trainieren eines neuronalen Netzwerks
Importieren Sie erforderliche Bibliotheken
Wenn Sie zum ersten Mal mit dem Training eines neuronalen Netzwerks beginnen, ist es wichtig, über die notwendigen Werkzeuge zum Entwerfen und Trainieren des Modells zu verfügen. Der erste Schritt beim Erstellen eines neuronalen Netzwerks besteht darin, erforderliche Bibliotheken wie TensorFlow, Keras und NumPy zu importieren.
Diese Bibliotheken dienen als Bausteine für die Entwicklung des neuronalen Netzwerks und stellen entscheidende Fähigkeiten bereit. Die Kombination dieser Bibliotheken ermöglicht die Erstellung anspruchsvoller neuronaler Netzwerkdesigns und schnelles Training.
Um unser Beispiel zu beginnen; Wir werden die erforderlichen Bibliotheken importieren, darunter TensorFlow, Keras und NumPy. TensorFlow ist ein Open-Source-Framework für maschinelles Lernen, Keras ist eine High-Level-API für neuronale Netzwerke und NumPy ist eine Python-Bibliothek für numerische Berechnungen.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Laden Sie den Datensatz
Der Datensatz muss nun geladen werden. Der Datensatz ist der Datensatz, auf dem das neuronale Netzwerk trainiert wird. Dies kann jede Art von Daten sein, einschließlich Fotos, Audio und Text.
Es ist wichtig, den Datensatz in zwei Teile zu unterteilen: einen für das Training des neuronalen Netzwerks und einen anderen für die Beurteilung der Korrektheit des trainierten Modells. Zum Importieren des Datensatzes können mehrere Bibliotheken verwendet werden, darunter TensorFlow, Keras und PyTorch.
In unserem Beispiel verwenden wir auch Keras, um den MNIST-Datensatz zu laden. Der Datensatz enthält 60,000 Trainingsfotos und 10,000 Testbilder.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Verarbeiten Sie die Daten vor
Die Datenvorverarbeitung ist ein wichtiger Schritt beim Training eines neuronalen Netzwerks. Dabei werden die Daten aufbereitet und bereinigt, bevor sie in das neuronale Netzwerk eingespeist werden.
Beispiele für Vorverarbeitungsverfahren sind die Skalierung von Pixelwerten, die Normalisierung von Daten und die Konvertierung von Beschriftungen in One-Hot-Codierung. Diese Prozesse unterstützen das neuronale Netzwerk dabei, effektiver und präziser zu lernen.
Die Vorverarbeitung der Daten kann auch dazu beitragen, eine Überanpassung zu minimieren und die Leistung des neuronalen Netzwerks zu verbessern.
Sie müssen die Daten vorverarbeiten, bevor Sie das neuronale Netzwerk trainieren. Dazu gehört die Änderung der Beschriftungen auf One-Hot-Codierung und die Skalierung der Pixelwerte auf einen Wert zwischen 0 und 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)
Definieren Sie das Modell
Der Prozess der Definition des neuronalen Netzwerkmodells umfasst die Festlegung seiner Architektur, beispielsweise der Anzahl der Schichten, der Anzahl der Neuronen pro Schicht, der Aktivierungsfunktionen und des Netzwerktyps (Feedforward, rekurrent oder Faltung).
Das von Ihnen verwendete neuronale Netzwerkdesign hängt von der Art des Problems ab, das Sie lösen möchten. Ein gut definiertes neuronales Netzwerkdesign kann das Lernen neuronaler Netzwerke unterstützen, indem es es effizienter und genauer macht.
An dieser Stelle ist es an der Zeit, das neuronale Netzwerkmodell zu beschreiben. Verwenden Sie für dieses Beispiel ein einfaches Modell mit zwei verborgenen Schichten mit jeweils 128 Neuronen und einer Softmax-Ausgabeschicht mit 10 Neuronen.
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')
])
Kompilieren Sie das Modell
Die Verlustfunktion, der Optimierer und die Metriken müssen während der Kompilierung des neuronalen Netzwerkmodells angegeben werden. Die Fähigkeit des neuronalen Netzwerks, die Ausgabe korrekt vorherzusagen, wird anhand der Verlustfunktion gemessen.
Um die Genauigkeit des neuronalen Netzwerks während des Trainings zu erhöhen, ändert der Optimierer seine Gewichte. Die Wirksamkeit des neuronalen Netzwerks während des Trainings wird anhand von Metriken gemessen. Das Modell muss erstellt werden, bevor das neuronale Netzwerk trainiert werden kann.
In unserem Beispiel müssen wir jetzt das Modell konstruieren.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Trainiere das Modell
Das Weiterleiten des vorbereiteten Datensatzes durch das neuronale Netzwerk unter gleichzeitiger Änderung der Netzwerkgewichte zur Minimierung der Verlustfunktion wird als Training des neuronalen Netzwerks bezeichnet.
Der Validierungsdatensatz wird verwendet, um das neuronale Netzwerk während des Trainings zu testen, um seine Wirksamkeit zu verfolgen und eine Überanpassung zu verhindern. Der Trainingsprozess kann einige Zeit dauern. Daher ist es wichtig sicherzustellen, dass das neuronale Netzwerk entsprechend trainiert ist, um eine Unteranpassung zu verhindern.
Mit den Trainingsdaten können wir nun das Modell trainieren. Dazu müssen wir die Stapelgröße (die Anzahl der verarbeiteten Proben, bevor das Modell aktualisiert wird) und die Anzahl der Epochen (die Anzahl der Wiederholungen über den gesamten Datensatz) definieren.
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Bewertung des Modells
Das Testen der Leistung des neuronalen Netzwerks anhand des Testdatensatzes ist der Prozess seiner Bewertung. In dieser Phase wird das trainierte neuronale Netzwerk zur Verarbeitung des Testdatensatzes verwendet und die Genauigkeit wird bewertet.
Wie effektiv ein neuronales Netzwerk aus brandneuen, noch nicht erprobten Daten das richtige Ergebnis vorhersagen kann, ist ein Maß für seine Genauigkeit. Die Analyse des Modells kann dabei helfen, festzustellen, wie gut das neuronale Netzwerk funktioniert, und auch Möglichkeiten vorschlagen, es noch besser zu machen.
Mithilfe der Testdaten nach dem Training können wir schließlich die Leistung des Modells beurteilen.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Das ist alles! Wir haben ein neuronales Netzwerk darauf trainiert, Ziffern im MNIST-Datensatz zu erkennen.
Von der Aufbereitung der Daten bis zur Bewertung der Wirksamkeit des trainierten Modells umfasst das Training eines neuronalen Netzwerks mehrere Prozesse. Diese Anleitung unterstützt Einsteiger beim effizienten Aufbau und Training neuronaler Netze.
Anfänger, die neuronale Netze zur Lösung verschiedener Probleme nutzen möchten, können dies tun, indem sie dieser Anleitung folgen.
Das Beispiel visualisieren
Versuchen wir, anhand dieses Beispiels zu veranschaulichen, was wir gemacht haben, um es besser zu verstehen.
Das Matplotlib-Paket wird in diesem Codeausschnitt verwendet, um eine zufällige Auswahl von Fotos aus dem Trainingsdatensatz zu zeichnen. Zuerst importieren wir das „pyplot“-Modul von Matplotlib und nennen es „plt“. Dann erstellen wir mit einer Gesamtabmessung von 10 x 10 Zoll eine Figur mit 5 Zeilen und 5 Spalten mit Nebenplots.
Dann verwenden wir eine for-Schleife, um die Unterplots zu durchlaufen und auf jedem ein Bild aus dem Trainingsdatensatz anzuzeigen. Zur Anzeige des Bildes wird die Funktion „imshow“ verwendet, wobei die Option „cmap“ auf „gray“ gesetzt ist, um die Fotos in Graustufen anzuzeigen. Der Titel jeder Nebenhandlung wird auch auf die Beschriftung des zugehörigen Bildes in der Sammlung gesetzt.
Abschließend nutzen wir die Funktion „show“, um die geplotteten Bilder in der Abbildung anzuzeigen. Mit dieser Funktion können wir eine Auswahl von Fotos aus dem Datensatz visuell auswerten, was uns dabei helfen kann, die Daten zu verstehen und mögliche Bedenken zu erkennen.
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()
Wichtige neuronale Netzwerkmodelle
- Feedforward Neural Networks (FFNN): Eine einfache Art eines neuronalen Netzwerks, bei dem Informationen nur auf eine Weise übertragen werden, nämlich von der Eingabeschicht zur Ausgabeschicht über eine oder mehrere verborgene Schichten.
- Faltungs-Neuronale Netze (CNN): Ein neuronales Netzwerk, das häufig bei der Bilderkennung und -verarbeitung verwendet wird. CNNs sollen automatisch Merkmale aus Bildern erkennen und extrahieren.
- Wiederkehrende neuronale Netze (RNN): Ein neuronales Netzwerk, das häufig bei der Bilderkennung und -verarbeitung verwendet wird. CNNs sollen automatisch Merkmale aus Bildern erkennen und extrahieren.
- Long-Short-Term-Memory (LSTM)-Netzwerke: Eine Form von RNN, die entwickelt wurde, um das Problem verschwindender Gradienten in Standard-RNNs zu überwinden. Langfristige Abhängigkeiten in sequentiellen Daten können mit LSTMs besser erfasst werden.
- Autoencoder: Unbeaufsichtigt lernendes neuronales Netzwerk, bei dem dem Netzwerk beigebracht wird, seine Eingabedaten auf seiner Ausgabeschicht zu reproduzieren. Datenkomprimierung, Anomalieerkennung und Bildrauschen können mit Autoencodern erreicht werden.
- Generative Adversarial Networks (GAN): Ein generatives neuronales Netzwerk ist eine Form eines neuronalen Netzwerks, dem beigebracht wird, neue Daten zu erzeugen, die mit einem Trainingsdatensatz vergleichbar sind. GANs bestehen aus zwei Netzwerken: einem Generatornetzwerk, das neue Daten erstellt, und einem Diskriminatornetzwerk, das die Qualität der erstellten Daten bewertet.
Zusammenfassung, was sollten Ihre nächsten Schritte sein?
Entdecken Sie verschiedene Online-Ressourcen und Kurse, um mehr über das Training eines neuronalen Netzwerks zu erfahren. Die Arbeit an Projekten oder Beispielen ist eine Möglichkeit, neuronale Netze besser zu verstehen.
Beginnen Sie mit einfachen Beispielen wie binären Klassifizierungsproblemen oder Bildklassifizierungsaufgaben und gehen Sie dann zu schwierigeren Aufgaben wie der Verarbeitung natürlicher Sprache oder über Verstärkung lernen.
Die Arbeit an Projekten hilft Ihnen, echte Erfahrungen zu sammeln und Ihre Fähigkeiten im Training neuronaler Netze zu verbessern.
Sie können auch Online-Gruppen und Foren für maschinelles Lernen und neuronale Netze beitreten, um mit anderen Lernenden und Fachleuten zu interagieren, Ihre Arbeit zu teilen und Kommentare und Hilfe zu erhalten.
LSRS MONRAD-KROHN
⁶ĵHätte gerne das Python-Programm zur Fehlerminimierung gesehen. Spezielle Auswahlknoten für Gewichtsänderungen zur nächsten Ebene