meinbezirks.demeinbezirks.de
    Was ist heiß

    Intelligente Türklingelkameras: Wichtige technische Fortschritte im Überblick

    30 Oktober 2025

    Wie Überwachungskameras die moderne Sicherheit verändern

    30 Oktober 2025

    Wie Saugroboter mit Wischfunktion die Haushaltsreinigung für immer verändern

    30 Oktober 2025
    Facebook Twitter Instagram
    meinbezirks.demeinbezirks.de
    • Lebensstil
    • Nachrichten
    • Technik
    • Gesundheit
    • Wie zu
    • Kontakt uns
    Facebook Twitter Instagram
    meinbezirks.demeinbezirks.de
    Home » Verstehen und Erstellen Neural Network modelle (NN)
    Technik

    Verstehen und Erstellen Neural Network modelle (NN)

    WalterBy Walter25 Juni 2024Updated:25 Juni 2024Keine Kommentare14 Mins Read
    neural network
    neural network

    Ein neural network besteht aus einer Reihe von Algorithmen, die Muster und Beziehungen in Daten erkennen, ähnlich wie das Gehirn funktioniert. So funktionieren sie:

    Ein neural network ist eine Reihe von Algorithmen, die versuchen, zugrunde liegende Beziehungen in einem Datensatz zu erkennen. Dabei wird der Vorgang der Funktionsweise des menschlichen Gehirns nachgeahmt. In diesem Sinne beziehen sich neural network auf Systeme von Neuronen, die entweder organischer oder künstlicher Natur sind. Neural network können sich an einen sich ändernden Input anpassen, sodass das Netzwerk das bestmögliche Ergebnis erzeugt, ohne dass die Ausgabekriterien neu gestaltet werden müssen.

    Warum brauchen wir neural network?

    Warum brauchen wir noch einen weiteren Lernalgorithmus? Die Frage ist relevant. Wir haben bereits viele Lernalgorithmen wie lineare Regression, logistische Regression , Entscheidungsbäume und Zufallswälder usw. Ich zeige Ihnen eine Situation, in der wir es mit einer komplexen, nichtlinearen Hypothese zu tun haben.

    Das obige Diagramm stammt aus dem Datensatz „ Breast Cancer Wisconsin “. Ich habe zwei der Merkmale, den mittleren Radius und die mittlere Textur, aufgezeichnet, um Informationen darüber zu erhalten, ob der Tumor bösartig (M, dargestellt durch blaue Punkte) oder gutartig (B, dargestellt durch ein orangefarbenes x) ist.

    Dies ist ein Klassifizierungsproblem des überwachten Lernens. Wenn wir auf dieses Problem eine logistische Regression anwenden würden , würde die Hypothese folgendermaßen aussehen:

    Wir können sehen, dass es viele nichtlineare Merkmale gibt. In dieser Gleichung ist g die Sigmoidfunktion . Wenn wir mit einer solchen Hypothese eine logistische Regression durchführen, erhalten wir möglicherweise eine Grenze – eine extrem kurvige – die die bösartigen und gutartigen Tumoren trennt.

    Dies ist jedoch nur dann effektiv, wenn wir zwei Merkmale berücksichtigen. Dieser Datensatz enthält jedoch 30 Merkmale. Wenn wir nur die quadratischen Terme in die Hypothese aufnehmen würden, hätten wir immer noch Hunderte nichtlinearer Merkmale. Die Anzahl der generierten quadratischen Merkmale liegt in der Größenordnung von O(n²), wobei n die Anzahl der Merkmale (30) ist. Möglicherweise passen wir den Datensatz zu stark an. Außerdem ist es rechenintensiv, mit so vielen Merkmalen zu arbeiten.

    Dies gilt, wenn wir nur quadratische Terme verwenden. Versuchen Sie nicht einmal, sich die Anzahl der kubischen Terme vorzustellen, die auf ähnliche Weise generiert werden.

    Geben Sie neural network ein.

    Modelldarstellung

    Das im Computer implementierte neuronale Netzwerk wird als künstliches neural network (KNN) bezeichnet, da es die im Gehirn vorhandenen Neuronen simuliert. Die Neuronen sind für alle Aktionen verantwortlich, die in unserem Körper freiwillig und unfreiwillig stattfinden. Sie übertragen Signale zum und vom Gehirn.

    Was ist ein Neuronenmodell?

    Zunächst modellieren wir ein Neuron als einfache logistische Einheit.

    Hier sind und die Eingabeknoten in blauer Farbe. Der orangefarbene Knoten ist der Ausgabeknoten, der ausgibt . Folgendes meine ich mit :x1 x2 x3h(x)h(x)

    In dieser Gleichung sind x und θ :

    Dies ist ein vereinfachtes Modell für die große Bandbreite an Berechnungen, die das Neuron durchführt. Es erhält Eingaben x1und x2gibt x3einen Wert aus h(x). Der x0Knoten, der als Bias-Einheit oder Bias-Neuron bezeichnet wird, wird normalerweise nicht bildlich dargestellt. Das obige Neuronennetzwerk hat eine sigmoidale (logistische) Aktivierungsfunktion. Der Begriff Aktivierungsfunktion bezieht sich auf die Nichtlinearität g(z):

    Was ist ein neural network?

    Das obige Modell stellt ein einzelnes Neuron dar. Ein neural network ist eine Gruppe dieser aneinandergereihten Neuronen.

    Wir haben Eingänge x1, x2und x3als Eingänge und x0als Bias-Einheit. Wir haben auch drei Neuronen in der nächsten Schicht: a1, a2und a3mit a0als Bias-Einheit. Die letzte Schicht hat nur ein Neuron, das die Ausgabe liefert. Schicht eins wird als Eingabeschicht bezeichnet, Schicht drei als Ausgabeschicht und Schicht zwei als verborgene Schicht. Jede Schicht, die weder die Eingabeschicht noch die Ausgabeschicht ist, wird als verborgene Schicht bezeichnet.

    Lassen Sie uns tiefer in die in diesem Diagramm dargestellten Rechenschritte eintauchen:

    Aktivierung steht für den von einem bestimmten Neuron berechneten oder ausgegebenen Wert. Ein neural network wird durch die Matrix der Gewichte parametrisiert.

    Die entsprechenden Gewichte bilden die Gewichtsmatrix, die mit den Eingaben multipliziert und dann als Eingabe an die Aktivierungsfunktion, hier die Sigmoidfunktion, übergeben wird, um die Ausgabe des jeweiligen Neurons zu erhalten. Es gibt drei Ausgaben von den drei Neuronen in der verborgenen Schicht und eine Ausgabe vom Neuron in der Ausgabeschicht.

    Wenn ein Netzwerk nEinheiten in der Schicht hat j, mEinheiten in der Schicht , dann hat j+1die den Schichten entsprechende Gewichtsmatrix die Dimensionen .jj+1m X(n+1)

    Der gesamte Prozess der Multiplikation der Gewichte mit den Eingaben und der Anwendung der Aktivierungsfunktion zum Erhalten der Ausgaben wird als Vorwärtsausbreitung bezeichnet . Die Notation kann weiter vereinfacht werden:

    Vektorisierte Implementierung

    Anstatt das obige Modell mit einzelnen Gleichungen für die Ausgaben jedes Neurons darzustellen, können wir sie in Form eines Vektors darstellen .

    xist der Eingangsvektor und umfasst drei Eingangswerte x1, x2, x3, und eine Bias-Einheit x0, deren Wert meist gleich eins ist. zist der Vektor, der die linearen Produkte des Eingangswerts mit der Gewichtsmatrix enthält. Die Vorwärtsausbreitung kann wie folgt geschrieben werden:

    Die Aktivierungsfunktion gwendet die Sigmoidfunktion elementweise auf jedes der Elemente im Vektor an z. Wir können den Eingabevektor auch als Ausgabe der ersten Schicht bezeichnen.

    Im obigen Modell ist in der verborgenen Schicht eine Bias-Einheit vorhanden. Daher müssen wir den Bias zum Ausgabevektor der verborgenen Schicht hinzufügen.

    Die endgültige Ausgabe der Ausgabeebene ergibt sich aus:

    Dieser Vorgang wird als Vorwärtsausbreitung bezeichnet, da wir mit der Eingabeebene beginnen und die Ausgaben der verborgenen Ebene berechnen und diese dann vorwärts ausbreiten, um die Aktivierungen der letzten Ausgabeebene zu berechnen.

    Es gibt keine Begrenzung für die Anzahl der Neuronen in jeder Schicht oder für die Anzahl der Schichten. Wir können ein neural network nach unseren Bedürfnissen modellieren und dann die Ein- und Ausgaben mit geeigneten Gewichten und Aktivierungsfunktionen abbilden. Wenn in einem neuronalen Netzwerk mehr als eine versteckte Schicht vorhanden ist, spricht man von einem tiefen neuronalen Netzwerk .

    Nachdem wir nun wissen, wie ein neural network seine Ausgabe berechnet, stellt sich die Frage: Wie trainieren wir ein neural network, damit es die gewünschten Werte ausgibt? Wir hatten den Gradientenabstiegsalgorithmus in der linearen und logistischen Regression, der die Werte der Parameter ändert, um die gewünschte Ausgabe zu erhalten. Wie macht man das in einem neuronalen Netzwerk?

    Was ist Backpropagation?

    Wir verwenden den Backpropagation-Algorithmus in einem NN, um den Gradienten zu berechnen. Dadurch können wir die oben besprochenen Gewichtsmatrizen ändern, um die gewünschte Ausgabe zu erhalten. Dies ist der wichtigste Teil des NN, und hier wird das Modell anhand der gegebenen Daten trainiert. Wir werden den Backpropagation-Algorithmus anhand desselben Modells besprechen, das oben verwendet wurde.

    Die Kostenfunktion der logistischen Regression ist:

    Die Kostenfunktion des obigen NN hat eine sigmoidale Aktivierungsfunktion ähnlich der der logistischen Regression. h(x)wäre die Ausgabe des Neurons in der Ausgabeschicht. yist die gewünschte Ausgabe.

    Der erste Schritt der Backpropagation wäre, die Gesamtkosten aus der Kostenfunktion zu berechnen. Unser Hauptziel ist es, die entsprechenden Gewichte so zu ändern, dass wir diese Kosten minimieren können. Dazu müssen wir den Kostengradienten in Bezug auf jede der Gewichtsmatrizen ermitteln. Da wir zwei Gewichtsmatrizen haben, lauten die Gradienten:

    Nachdem wir die Gradienten identifiziert haben, aktualisieren wir die Gewichtsmatrizen wie folgt:

    Um nun die Gradienten zu finden, verwenden wir die Kettenregel der Differenzierung. 

    Nun müssen wir die einzelnen Terme der Kettenregel finden.

    Wenn wir alle miteinander multiplizieren, erhalten wir den Kostengradienten in Bezug auf die entsprechende Gewichtsmatrix.

    Der Kostengradient in Bezug auf die erste Gewichtsmatrix kann auch mithilfe dieser Gleichung weiter berechnet werden:

    Daher lautet der Gradient:

    Wenn wir sie alle miteinander multiplizieren, erhalten wir den Kostengradienten in Bezug auf die Gewichtsmatrix.

    Wenn wir also beide Gewichtsmatrizen gleichzeitig aktualisieren, erhalten wir eine Gleichung, die wie folgt aussieht:

    Damit ist eine Iteration unserer Backpropagation abgeschlossen. Eine Reihe von Vorwärtspropagationen und Backpropagationen wird als Epoche bezeichnet. Eine Epoche liegt vor, wenn ein ganzer Datensatz einmal vorwärts und einmal rückwärts durch das neuronale Netzwerk geleitet wird.

    Lassen Sie uns nun die Besonderheiten eines neuronalen Netzwerks besprechen.

    Was ist Nullinitialisierung?

    Beim Training eines neuronalen Netzwerks sind Gewichtsmatrizen der wichtigste Teil. Wir müssen die Gewichtsmatrizen auf einen Wert initialisieren, um eine Vorwärtspropagation durchzuführen, und die Rückwärtspropagation, um die initialisierten Gewichte zu aktualisieren. Was wäre, wenn wir alle Gewichte im neuronalen Netzwerk auf Null initialisieren würden?

    Alle Aktivierungen der zweiten Schicht sind gleich. Da die Kostengradienten in Bezug auf die Gewichte von den Aktivierungen abhängen, sind sie ebenfalls gleich. Beim Aktualisieren der Gewichte nach einer Epoche bleiben die Gewichte gleich, da sie anfangs gleich sind und die Gradienten ebenfalls gleich sind.

    Dies führt dazu, dass alle Neuronen dieselben Merkmale berechnen, wodurch ein redundanter Wert ausgegeben wird und das NN am Lernen gehindert wird. Daher werden die Parameter nach dem Zufallsprinzip initialisiert.

    So trainieren und modellieren Sie ein neural network 

    Im Folgenden sind die Schritte zum Modellieren und Trainieren eines neuronalen Netzwerks aufgeführt.

    1. Modellieren Sie die Eingabeebene entsprechend der Anzahl der Eingabefunktionen.
    2. Modellieren Sie die Ausgabeebene entsprechend der Anzahl der Klassen in der Ausgabe.
    3. Modellieren Sie die Anzahl der verborgenen Schichten und die Anzahl der Neuronen in den verborgenen Schichten optimal.
    4. Gewichte zufällig initialisieren.
    5. Implementieren Sie die Vorwärtsausbreitung, um h(x)für alle  zu erhalten x.
    6. Implementieren Sie Code zur Berechnung der Kostenfunktion J.
    7. Implementieren Sie Backpropagation, um den Kostengradienten in Bezug auf die Gewichte zu berechnen.
    8. Aktualisieren Sie die Gewichtswerte.
    9. Führen Sie die Schritte fünf bis neun rekursiv aus, um die Kosten Jdurch Ändern der Gewichte nach jeder Epoche zu minimieren.

    Erstellen und Trainieren eines neuronalen Netzwerkmodells von Grund auf

    Es stehen verschiedene Bibliotheken zum Modellieren und Trainieren eines neuronalen Netzwerks zur Verfügung. Um jedoch dessen genaue Funktionsweise zu verstehen, müssen wir es mindestens einmal von Grund auf neu erstellen. Wir werden jedoch Bibliotheken von TensorFlow-Keras (tf.keras) und scikit-learn (sklearn) verwenden , um unser Modell zu überprüfen.

    Ich werde den Brustkrebsdatensatz aus dem Machine Learning Repository der University of California, Irvine, verwenden. Nachdem Sie die erforderlichen Bibliotheken und Daten in einen Pandas DataFrame importiert haben, sehen Sie, dass jeder 32 Features und 569 Datenpunkte enthält. Jedes der Features enthält Informationen über einen bei einem Patienten gefundenen Tumor. Die Aufgabe besteht darin, die Tumore anhand dieser Features als „bösartig“ oder „gutartig“ zu klassifizieren. Die Zielvariable ist diagnosis.

    Da das Feature für alle 569 Fälle eindeutige Einträge hat, wurde es als Index des Datenrahmens festgelegt. Wenn Sie auch nach fehlenden Werten suchen, werden Sie feststellen, dass ein Feature mit dem Namen 100 Prozent fehlende Werte hatte, was dazu führte, dass dieses Feature gelöscht wurde. Alle anderen Features erwiesen sich als numerische Features.id Unnamed: 32

    Bei der Überprüfung der eindeutigen Werte in der Zielvariable  array([‚M‘, ‚B‘], dtype=object)gibt es in der Ausgabe zwei Klassen: M für bösartig und B für gutartig. Diese wurden durch 0 für M und 1 für B ersetzt.

    Nachdem wir unseren Datensatz bereinigt haben, können wir ihn in Trainings- und Testdaten aufteilen . Mit sklearn train_test_splitwerden 80 Prozent der Daten in Trainingsdaten und die restlichen 20 Prozent in Testdaten aufgeteilt.

    Nach der Division werden sowohl die Trainings- als auch die Testeingaben mit dem von sklearn skaliert. Achten Sie darauf, den Skalierer nur auf die Trainingsdaten und nicht auf die Testdaten anzuwenden. Transformieren Sie dann sowohl die Trainings- als auch die Testdaten mit demselben Klassifikator, um Datenverlust zu vermeiden.StandardScaler

    Als nächstes modellieren wir unser neural network. Wir erstellen eine Klasse namens , die alle erforderlichen Funktionen enthält. Ich füge den Code hier ein, da dies der wichtigste Teil unserer Diskussion ist.NeuralNet

    Das Modell besteht aus insgesamt drei Schichten. Die erste Schicht ist die Eingabeschicht und hat 30 Neuronen für jede der 30 Eingaben. Die zweite Schicht ist die verborgene Schicht und enthält standardmäßig 14 Neuronen. Die dritte Schicht ist die Ausgabeschicht und da wir zwei Klassen haben, 0 und 1, benötigen wir nur ein Neuron in der Ausgabeschicht. Die Standardlernrate ist auf 0,001 eingestellt und die Anzahl der Iterationen oder Epochen beträgt 100.

    Denken Sie daran, dass zwischen den Begriffen Epoche und Iterationen ein großer Unterschied besteht. Betrachten Sie einen Datensatz mit 2.000 Datenpunkten. Wir teilen die Daten in Stapel mit jeweils 500 Datenpunkten auf und trainieren dann das Modell mit jedem Stapel. Die Anzahl der Stapel, die trainiert werden müssen, damit der gesamte Datensatz einmal trainiert werden kann, wird als Iterationen bezeichnet. Hier beträgt die Anzahl der Iterationen vier. Die Häufigkeit, mit der der gesamte Datensatz einen Zyklus aus Vorwärtsausbreitung und Rückwärtsausbreitung durchläuft, wird als Epochen bezeichnet. Da die obigen Daten nicht in Stapel aufgeteilt sind, sind Iteration und Epochen gleich.

    Die Gewichte werden zufällig initialisiert. Das Bias-Gewicht wird nicht zu den Haupteingabegewichten addiert, sondern separat verwaltet repository.

    Anschließend werden die Sigmoid-Aktivierungsfunktion und die Kostenfunktion des neuronalen Netzwerks definiert. Die Kostenfunktion nimmt die vorhergesagte Ausgabe und die tatsächliche Ausgabe als Eingabe auf und berechnet die Kosten.

    Anschließend wird die Vorwärtspropagationsfunktion definiert. Die Aktivierungen der Eingabeschicht werden berechnet und als Eingabe an die Ausgabeschicht weitergegeben. Alle Parameter werden in einem Wörterbuch mit geeigneten Bezeichnungen gespeichert.

    Die Backpropagation-Funktion ist definiert. Sie nimmt die vorhergesagte Ausgabe auf, um die Backpropagation mit den gespeicherten Parameterwerten durchzuführen. Die Gradienten werden wie oben beschrieben berechnet und die Gewichte werden am Ende aktualisiert.

    Die Fit-Funktion übernimmt die Eingabe x und die gewünschte Ausgabe y. Sie ruft in dieser Reihenfolge die Gewichtsinitialisierungs-, Vorwärtspropagations- und Backpropagationsfunktion auf und trainiert das Modell. Die Vorhersagefunktion wird verwendet, um die Ausgabe des Testsatzes vorherzusagen. Die Genauigkeitsfunktion kann verwendet werden, um die Leistung des Modells zu testen. Es gibt auch eine Funktion zum Plotten der Kostenfunktion gegenüber Epochen.

    Wir trainieren das Modell zunächst, indem wir die Trainingsdaten anpassen, die wir aus dem gesamten Datensatz extrahiert haben.

    Wir können sehen, dass die Gesamtkosten exponentiell abnehmen, wenn wir das Modell rekursiv trainieren. Die Trainings- und Testgenauigkeit beträgt Train accuracy: [97.14285714] Test accuracy: [97.36842105]. 

    Die Anzahl der verfügbaren Funktionen gewährleistet, dass wir eine so hohe Genauigkeit erreichen. Je mehr Informationen zur Zielvariable verfügbar sind, desto genauer wird das Modell. Das obige Diagramm und die Metriken entsprechen den Standardwerten.

    Lassen Sie uns nun die Standardwerte ein wenig ändern. Die Anzahl der Neuronen in der verborgenen Schicht wird von 14 auf 20 erhöht. Die Lernrate wird von 0,001 auf 0,01 gesenkt. Die Anzahl der Iterationen wird von 100 auf 500 erhöht. 

    Wir können sehen, dass die Kosten auf etwa 0,1 gesunken sind und dann allmählich auf fast Null reduziert wurden. Der endgültige Kostenwert nach 500 Iterationen ist niedriger als im vorherigen Fall. Die Trainings- und Testgenauigkeiten betragen Train accuracy: [100.] Test accuracy: [97.36842105].

    Wir können sehen, dass die Zuggenauigkeit 100 Prozent erreicht hat und die Testgenauigkeit gleich geblieben ist.

    So verifizieren Sie Ihr neural network modell auf Sklearn und TF.Keras

    Zur weiteren Überprüfung verwenden wir zwei der mit neuronalen Netzwerken verbundenen Bibliotheken

    Sklearn

    Wir werden sklearn verwenden,  um ein neural network zu modellieren, zu trainieren und zu testen. Dabei werden die gleichen Parameter wie oben verwendet. Es gibt eine verborgene Schicht, die aus 14 Neuronen besteht. Die Lernrate ist auf 0,001 und die Anzahl der Iterationen auf 100 eingestellt.MLPClassifier

    Die Trainings- und Testgenauigkeiten sind: 

    • Train accuracy = 97.8021978021978 
    • Test accuracy = 97.36842105263158

    Wir können sehen, dass die Trainingsgenauigkeit etwas zugenommen hat und die Testgenauigkeit gleich geblieben ist. Dies zeigt, dass unser Modell mit dem sklearn-Modell übereinstimmt.

    Tensorflow-Keras

    Wir werden ein sequentielles Modell mit tf.keras modellieren. Es enthält neben der Eingabeschicht zwei dichte Schichten. Die versteckte dichte Schicht besteht aus 14 Neuronen und die Ausgabedichteschicht besteht aus einem Neuron. Die Lernrate ist auf 0,001 eingestellt und es wird binärer Kreuzentropieverlust verwendet. Die Anzahl der Epochen ist auf 100 eingestellt. Die Trainings- und Testgenauigkeiten sind:

    • Train accuracy = 98.90109896659851
    • Test accuracy = 98.24561476707458

    Wir können sehen, dass sowohl die Trainings- als auch die Testgenauigkeit etwas zugenommen haben. Der Grund dafür könnte ein gut optimierter Backpropagation-Algorithmus sein, der dem Modell hilft, in weniger Iterationen höhere Genauigkeiten zu erreichen.

    Die Modelle tf.keras und sklearn übertreffen unser Modell in Bezug auf die Trainingszeit. Bei der Eingabe von Daten mit Millionen von Datenpunkten kann es lange dauern, bis das von uns erstellte Modell konvergiert oder akzeptable Genauigkeitsniveaus erreicht. Aufgrund der in den Modellen tf.keras und sklearn verwendeten Optimierungstechniken konvergieren sie jedoch möglicherweise schneller.

    Share. Facebook Twitter Pinterest LinkedIn
    Walter
    • Website

    Die Wahl des Herausgebers

    Intelligente Türklingelkameras: Wichtige technische Fortschritte im Überblick

    30 Oktober 2025

    Wie Überwachungskameras die moderne Sicherheit verändern

    30 Oktober 2025

    Wie Saugroboter mit Wischfunktion die Haushaltsreinigung für immer verändern

    30 Oktober 2025

    Kleingewerbe und die Einkommensteuer: Ein Leitfaden

    30 Oktober 2025
    Über uns
    Über uns

    Meinbezirks ist die führende Online-Publikation für Musiknachrichten, Unterhaltung, Filme, Prominente, Mode, Wirtschaft, Technologie und andere Online-Artikel. Gegründet im Jahr 2023 und geleitet von einem Team engagierter Freiwilliger, die Musik lieben.

    Unsere Auswahl

    Intelligente Türklingelkameras: Wichtige technische Fortschritte im Überblick

    30 Oktober 2025

    Wie Überwachungskameras die moderne Sicherheit verändern

    30 Oktober 2025

    Wie Saugroboter mit Wischfunktion die Haushaltsreinigung für immer verändern

    30 Oktober 2025
    Spitze Bewertungen
    Urheberrechte © 2023 meinbezirks Alle Rechte vorbehalten.
    • Datenschutz Bestimmungen
    • Kontakt uns
    • Über uns

    Type above and press Enter to search. Press Esc to cancel.