Die Website enthält die besten Tipps, Tricks und Lösungen für Probleme, auf die Sie möglicherweise stoßen. Geheimnisse, Lifehacks, Geschichten und alles, was mit Leben und Beziehungen zu tun hat.

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

50

Was ist ein neuronales Netzwerk?

Wie Sie wissen, ist unser Gehirn eine komplexe Sache. Die Koordination seiner Arbeit erfolgt durch Neuronen – Nervenzellen mit Ästen, die sich von ihnen erstrecken. Neuronen, die miteinander verflochten sind, bilden ein neuronales Netzwerk – ein komplizierter Mechanismus, der die gesamte Vielfalt der menschlichen Psyche bestimmt. Dies ist die Wurzel unseres Selbstbewusstseins, das Gefühl von uns als Individuen, geleitet von unseren inneren Wünschen und Bestrebungen.

Wenn bei der Arbeit von Neuronen eine Fehlfunktion auftritt, ändert sich die Person bis zur Unkenntlichkeit. Je nach Schwere der Verletzung reichen die Veränderungen von leichten Anzeichen abweichenden Verhaltens bis zur Beendigung der normalen Körperfunktion. Hirnschäden sind oft tödlich.

Aber heute werden wir nicht über Biologie sprechen, weil nicht nur das System unseres Gehirns als neuronale Netze bezeichnet wird, sondern auch ein komplexes Computerprogramm mit ähnlichen Funktionsprinzipien. Wie die graue Substanz ist sie fraktal, dh sie besteht aus vielen einfacheren Programmen, die eine Art Symbiose bilden.

Während des Funktionierens lernt das neuronale Netzwerk, sammelt Erfahrung und wird perfekter. Wir haben es also mit einem echten digitalen Organismus zu tun, von dem vorausgesagt wird, dass er eines Tages seinen Schöpfer übertrifft.

Wie neuronale Netze erschienen

Die Entstehung des Konzepts der künstlichen neuronalen Netze geht auf die 40er Jahre des vorigen Jahrhunderts zurück. Insbesondere ist es mit den Wissenschaftlern McCulloch und Pitts verbunden, die versuchten, die Prozesse des Gehirns zu simulieren. Sie schlugen auch die Idee vor, ein selbstlernendes System zu schaffen, das verschiedene logische Operationen ausführen soll. Das Problem war, dass die Technologien dieser Zeit weit von denen von heute entfernt waren und die Erfinder ihre Ideen nicht vollständig verwirklichten konnten.

(Warren McCulloch & Walter Pitts)

Ihre Arbeit wurde vom kanadischen Physiologen Donald Hebb fortgesetzt, und 1949 wurde der Welt der erste Algorithmus zur Berechnung von ANN vorgestellt. Während der nächsten 10 Jahre diente es als Grundlage für die Entwicklung anderer Wissenschaftler, bis Frank Rosenblatt schließlich 1958 das Parceptron entwickelte, eine Technologie, die die Arbeit unseres Gehirns nachahmt. Für seine Zeit war diese Neuheit unglaublich. Sowjetische und amerikanische Wissenschaftler beteiligten sich an der Arbeit, die ebenfalls einen erheblichen Beitrag zur Forschung leisteten.

In den späten XX – frühen XXI Jahrhunderten machte die Technologie einen scharfen Sprung, der als guter Anreiz für intensivere wissenschaftliche Aktivitäten diente, und 2007 entwickelte der Informatiker Jeffrey Hinton einen Deep-Learning-Algorithmus für neuronale Netze, der heute weit verbreitet ist in selbstfahrenden Autos.

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

(Geoffrey Hinton)

Ein bisschen Geschichte

Zum ersten Mal entstand das Konzept der künstlichen neuronalen Netze (ANN), als versucht wurde, die Prozesse des Gehirns zu simulieren. Der erste große Durchbruch in diesem Bereich kann als Schaffung des McCulloch-Pitts-Modells für neuronale Netze im Jahr 1943 angesehen werden. Wissenschaftler entwickelten zunächst ein Modell eines künstlichen Neurons. Sie schlugen auch den Aufbau eines Netzwerks dieser Elemente vor, um logische Operationen durchzuführen. Vor allem aber haben Wissenschaftler bewiesen, dass ein solches Netzwerk lernfähig ist.

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Der nächste wichtige Schritt war die Entwicklung des ersten Algorithmus zur Berechnung von ANN durch Donald Hebb im Jahr 1949, der für die nächsten Jahrzehnte von grundlegender Bedeutung wurde. 1958 entwickelte Frank Rosenblatt das Parceptron, ein System, das die Prozesse des Gehirns nachahmt. Zu einer Zeit hatte die Technologie keine Analoga und ist in neuronalen Netzen immer noch von grundlegender Bedeutung. 1986 verbesserten amerikanische und sowjetische Wissenschaftler fast gleichzeitig unabhängig voneinander die grundlegende Methode des Lehrens des mehrschichtigen Perzeptrons erheblich. Im Jahr 2007 erlebten neuronale Netze eine Wiedergeburt. Der britische Informatiker Jeffrey Hinton entwickelten zunächst einen Deep-Learning-Algorithmus für mehrschichtige neuronale Netze, mit dem beispielsweise unbemannte Fahrzeuge betrieben werden.

Kurz über die Hauptsache

Im allgemeinen Sinne des Wortes sind neuronale Netze mathematische Modelle, die nach dem Prinzip der Netze von Nervenzellen in einem tierischen Organismus arbeiten. ANNs können sowohl in programmierbaren als auch in Hardwarelösungen implementiert werden. Zur Erleichterung der Wahrnehmung kann man sich ein Neuron als eine Art Zelle vorstellen, die viele Eingangslöcher und einen Ausgang hat. Wie viele eingehende Signale in das ausgehende Signal umgewandelt werden, bestimmt den Berechnungsalgorithmus. Effektive Werte werden jedem Neuroneneingang zugeführt, der sich dann entlang interneuronaler Verbindungen ausbreitet (Synopse). Synapsen haben einen Parameter – das Gewicht, aufgrund dessen sich die Eingabeinformationen ändern, wenn sie von einem Neuron zu einem anderen wechseln. Der einfachste Weg, sich vorzustellen, wie neuronale Netze funktionieren, ist das Beispiel der Farbmischung. Die blauen, grünen und roten Neuronen haben unterschiedliche Gewichte.

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Das neuronale Netzwerk selbst ist ein System vieler solcher Neuronen (Prozessoren). Individuell sind diese Prozessoren recht einfach (viel einfacher als ein Personal Computer-Prozessor), aber wenn sie in ein großes System eingebunden sind, können Neuronen sehr komplexe Aufgaben ausführen.

Je nach Anwendungsbereich kann ein neuronales Netzwerk unterschiedlich interpretiert werden. Beispielsweise ist ein ANN aus Sicht des maschinellen Lernens ein Mustererkennungsverfahren. Aus mathematischer Sicht ist dies ein Multiparameterproblem. Aus Sicht der Kybernetik – ein Modell der adaptiven Steuerung der Robotik. Für die künstliche Intelligenz ist ANN eine grundlegende Komponente für die Modellierung der natürlichen Intelligenz mithilfe von Berechnungsalgorithmen.

Der Hauptvorteil neuronaler Netze gegenüber herkömmlichen Berechnungsalgorithmen ist ihre Lernfähigkeit. Im allgemeinen Sinne des Wortes besteht das Lernen darin, die richtigen Kopplungskoeffizienten zwischen Neuronen zu finden sowie Daten zu verallgemeinern und komplexe Beziehungen zwischen Eingangs- und Ausgangssignalen zu identifizieren. Tatsächlich bedeutet ein erfolgreiches Training eines neuronalen Netzwerks, dass das System das richtige Ergebnis anhand von Daten identifizieren kann, die nicht im Trainingssatz vorhanden sind.

Anwendung neuronaler Netze

Das Anwendungsspektrum für neuronale Netze ist unglaublich breit und nur durch unsere Vorstellungskraft begrenzt. Lassen Sie uns einige davon auflisten:

  • Automatische Transportsteuerungssysteme. Autopiloten.
  • Das Internet. Sprachassistenten, intelligente Browser, Übersetzungsprogramme.
  • Wirtschaft und Business. Prognose von Wechselkursen, modernen Rechnungslegungsprogrammen, Handelsrobotern, Risikobewertungsprogrammen, Management von Produktionsmaschinen, Qualitätskontrolle usw.
  • Medizin. Moderne Methoden zur Diagnose, Analyse der Wirksamkeit der Behandlung, Verarbeitung medizinischer Bilder.
  • Robotik. Routenplanung, Sprach- und Gestenerkennung.
  • Sicherheit. Verwaltung von Videoüberwachungs- und Alarmsystemen.
  • Computerspiele und Unterhaltung. Intelligente Bots, Analyseprogramme für Schach und andere Spiele.
  • Kunst. Schaffung von Gemälden, Büchern und anderen kulturellen Artefakten.

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Die heutige Situation

Und egal wie vielversprechend diese Technologie sein würde, ANNs sind bisher noch sehr weit von den Fähigkeiten des menschlichen Gehirns und Denkens entfernt. Dennoch werden neuronale Netze bereits in vielen Bereichen menschlicher Aktivität eingesetzt. Bisher sind sie nicht in der Lage, hochintellektuelle Entscheidungen zu treffen, aber sie können eine Person ersetzen, bei der sie zuvor gebraucht wurde. Unter den zahlreichen Bereichen der ANN-Anwendung kann man Folgendes feststellen: die Schaffung selbstlernender Systeme für Produktionsprozesse, unbemannte Fahrzeuge, Bilderkennungssysteme, intelligente Sicherheitssysteme, Robotik, Qualitätsüberwachungssysteme, Sprachinteraktionsschnittstellen, Analysesysteme und vieles mehr. Diese weit verbreitete Verwendung neuronaler Netze ist unter anderem auf die Entstehung verschiedener Möglichkeiten zur Beschleunigung des Lernens von ANN zurückzuführen.

Heute ist der Markt für neuronale Netze riesig – es sind Milliarden und Abermilliarden Dollar. Wie die Praxis zeigt, unterscheiden sich die meisten neuronalen Netzwerktechnologien weltweit kaum voneinander. Die Nutzung neuronaler Netze ist jedoch eine sehr teure Tätigkeit, die sich in den meisten Fällen nur große Unternehmen leisten können. Für die Entwicklung, Schulung und Erprobung neuronaler Netze ist eine große Rechenleistung erforderlich. Es ist offensichtlich, dass große Akteure auf dem IT-Markt genug davon haben. Zu den wichtigsten Unternehmen, die in diesem Bereich die Entwicklung vorantreiben, gehören Google DeepMind, Microsoft Research, IBM, Facebook und Baidu.

Das alles ist natürlich gut: Neuronale Netze entwickeln sich, der Markt wächst, aber die Hauptaufgabe ist bisher noch nicht gelöst. Die Menschheit hat es nicht geschafft, eine Technologie zu entwickeln, deren Fähigkeiten dem menschlichen Gehirn sogar nahe kommen. Schauen wir uns die Hauptunterschiede zwischen dem menschlichen Gehirn und künstlichen neuronalen Netzen an.

Warum sind neuronale Netze noch weit vom menschlichen Gehirn entfernt?

Der wichtigste Unterschied, der das Prinzip und die Effizienz des Systems grundlegend verändert, ist die unterschiedliche Signalübertragung in künstlichen neuronalen Netzen und im biologischen Netz von Neuronen. Tatsache ist, dass im ANN Neuronen Werte übertragen, die reale Werte sind, dh Zahlen. Im menschlichen Gehirn werden Impulse mit einer festen Amplitude übertragen, und diese Impulse sind fast augenblicklich. Daher bietet das menschliche Netzwerk von Neuronen eine Reihe von Vorteilen.

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Erstens sind Kommunikationsleitungen im Gehirn viel effizienter und wirtschaftlicher als in ANNs. Zweitens gewährleistet die Impulsschaltung die Einfachheit der Technologieimplementierung: Es reicht aus, analoge Schaltungen anstelle komplexer Rechenmechanismen zu verwenden. Letztendlich sind Impulsnetzwerke vor akustischen Störungen geschützt. Effektive Zahlen werden durch Rauschen beeinflusst, was die Wahrscheinlichkeit von Fehlern erhöht.

Perspektiven für neuronale Netze

Die Luddite-Bewegung begann im frühen 19. Jahrhundert. Dieses Wort wurde verwendet, um Menschen zu beschreiben, die an Protesten gegen die Urbanisierung teilnehmen. Mit der Industrialisierung der Gesellschaft, als Werkzeugmaschinen allmählich die Arbeiter ersetzten, wurden viele Menschen arbeitslos und waren mit ihrer Situation äußerst unzufrieden. Stellen Sie sich vor, was für einen Schock sie erlebt hätten, wenn sie erfahren hätten, dass die Maschinen in ein paar hundert Jahren in der Lage sein werden, unabhängig zu sprechen und sich sogar zu bewegen!

Inzwischen sind diese Zeiten gekommen, und heute gibt es auch Rückschritte, die befürchten, dass die Robotik und die Entwicklung der Technologie im Allgemeinen einen grausamen Witz mit den Menschen spielen können. Wenn Maschinen bereits heute in der Lage sind, so viele Aufgaben zu erledigen, werden sie in Zukunft alle Jobs besetzen, was Menschen unnötig macht. Und diese Position wird nur durch die Einschätzungen von Experten bestätigt, die ab und zu das bevorstehende Verschwinden eines bestimmten Berufs vorhersagen.

Diese Position hat das Recht zu existieren, ist aber nicht ganz richtig, da im Laufe der Zeit nicht nur alte Berufe verschwinden, sondern auch neue auftauchen. Ja, es gibt eine Größenordnung weniger Hirten und Jäger als zuvor, aber Programmierer und Vermarkter sind erschienen. An Wendepunkten in der Geschichte richtet sich die Wirtschaft neu aus, um die unnötigen und großzügig ausgestatteten Bedürftigen auszusortieren.

Der wachsende Einfluss künstlicher neuronaler Netze ist offensichtlich, und es ist wahrscheinlich, dass sie bald buchstäblich überall sein werden. Angst davor zu haben bedeutet jedoch, die menschliche Natur selbst abzulehnen, was im Wunsch nach Entdeckung und Leistung besteht.

Erzeugung neuronaler Blöcke

Zunächst müssen Sie entscheiden, was die Grundkomponenten eines neuronalen Netzwerks – Neuronen – sind. Das Neuron nimmt Eingabedaten auf, führt bestimmte mathematische Operationen damit aus und gibt dann das Ergebnis aus. Ein Neuron mit zwei Eingängen sieht folgendermaßen aus:

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Drei Dinge passieren hier. Zunächst wird jede Eingabe mit dem Gewicht multipliziert (im Diagramm ist sie rot markiert ):

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Dann werden alle gewichteten Eingaben zusammen mit dem Versatz addiert b(im Diagramm grün angezeigt ):

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Schließlich wird der Betrag über die Aktivierungsfunktion übertragen (im Diagramm gelb markiert ):

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Die Aktivierungsfunktion wird verwendet, um nicht verwandte Eingänge mit einem Ausgang zu verbinden, der eine einfache und vorhersehbare Form hat. In der Regel wird die Sigmoidfunktion als Aktivierungsfunktion verwendet :

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Die Sigmoid-Funktion gibt nur Zahlen in einem Bereich aus (0, 1). Sie können sich das als Komprimieren von (−∞, +∞)bis vorstellen (0, 1). Große negative Zahlen werden ~0und große positive Zahlen werden ~1.

Ein einfaches Beispiel für die Arbeit mit Neuronen in Python

Angenommen, wir haben ein Neuron mit zwei Eingängen, das eine Sigmoid-Aktivierungsfunktion verwendet und die folgenden Parameter hat:

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

w = [0,1]Ist nur eine Möglichkeit, w1 = 0, w2 = 1in Vektorform zu schreiben. Weisen wir dem Neuron eine Eingabe mit einem Wert zu x = [2, 3]. Für eine kompaktere Darstellung wird das Punktprodukt verwendet .

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Vorausgesetzt, die Eingabe war x = [2, 3], ist die Ausgabe gleich 0.999. Das ist alles. Dieser Vorgang des Übergebens von Eingaben an Empfangsausgaben wird als Vorwärtskopplung bezeichnet.

Erstellen eines Neurons von Grund auf in Python

Beginnen wir mit der Implementierung des Neurons. Dies erfordert die Verwendung von NumPy. Es ist eine leistungsstarke rechnergestützte Python-Bibliothek, die mathematische Operationen verwendet:

einer

2

3

vier

fünf

6

7

acht

neun

10

elf

12

13

vierzehn

fünfzehn

Sechszehn

17

achtzehn

neunzehn

zwanzig

21

22

23

24

25

26

27

importiere numpy als np

def Sigmoid ( x ) :

# Unsere Aktivierungsfunktion: f (x) = 1 / (1 + e ^ (- x))

return 1 / ( 1 + np . exp ( x ) )

Klasse Neuron :

def __init__ ( Selbst , Gewichte , Voreingenommenheit ) :

Selbst . Gewichte = Gewichte

Selbst . Bias = Bias

def feedforward ( self , input ) :

# Gewichtsdaten eingeben, Offset hinzufügen

# und anschließende Verwendung der Aktivierungsfunktion

gesamt = np . dot ( self . Gewichte , Eingänge ) + Selbst . vorspannen

return sigmoid ( gesamt )

Gewichte = np . Array ( [ 0 , 1 ] ) # w1 = 0, w2 = 1

Bias = 4 # b = 4

n = Neuron ( Gewichte , Bias )

x = np . Array ( [ 2 , 3 ] ) # x1 = 2, x2 = 3

print ( n . feedforward ( x ) ) # 0.9990889488055994

Erkennst du die Zahlen? Dies ist das gleiche Beispiel, das zuvor besprochen wurde. Die diesmal erhaltene Antwort ist ebenfalls gleich 0.999.

Ein Beispiel für das Sammeln von Neuronen in einem neuronalen Netzwerk

Ein neuronales Netzwerk ist im Wesentlichen eine Gruppe miteinander verbundener Neuronen. Ein einfaches neuronales Netzwerk sieht folgendermaßen aus:

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Auf der Einführungsschicht des Netzwerks gibt es zwei Eingänge – x1und x2. Auf der verborgenen Schicht befinden sich zwei Neutronen – h1und h2. Es gibt ein Neuron auf der Ausgangsschicht – о1. Beachten Sie, dass die Eingaben für о1Ausgabeergebnisse h1und sind h2. So wird das neuronale Netzwerk aufgebaut.

Eine verborgene Ebene ist eine beliebige Ebene zwischen der Eingabeebene und der Ausgabeebene, die die erste bzw. letzte Ebene sind. Es kann mehrere versteckte Ebenen geben.

Neuronales Netzwerktraining

Ausgabe ŷ eines einfachen zweischichtigen neuronalen Netzwerks:

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

In der obigen Gleichung sind die Gewichte W und die Vorspannungen b die einzigen Variablen, die die Ausgabe ŷ beeinflussen.

Natürlich bestimmen die korrekten Werte für die Gewichte und Vorspannungen die Genauigkeit der Vorhersagen. Der Prozess der Feinabstimmung von Gewichten und Verzerrungen aus Eingabedaten wird als neuronales Netzwerktraining bezeichnet.

Jede Iteration des Trainingsprozesses besteht aus den folgenden Schritten

  • Berechnen der vorhergesagten Ausgabe ŷ, die als Vorwärtsausbreitung bezeichnet wird
  • Aktualisieren von Gewichten und Verzerrungen, die als Backpropagation bezeichnet werden

Das folgende sequentielle Diagramm veranschaulicht den Prozess:

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Direktvertrieb

Wie wir in der obigen Grafik gesehen haben, ist die Vorwärtsausbreitung nur eine einfache Berechnung, und für ein grundlegendes 2-Schicht-Neuronales Netzwerk ist die Ausgabe des Neuronalen Netzwerks gegeben durch:

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Fügen wir dazu unserem Python-Code einen Feed Forward hinzu. Beachten Sie, dass wir der Einfachheit halber angenommen haben, dass die Offsets 0 sind.

Wir brauchen jedoch eine Möglichkeit, die „Güte“ unserer Prognosen zu bewerten, dh wie weit unsere Prognosen sind. Die Verlustfunktion ermöglicht es uns, genau das zu tun.

Verlustfunktion

Es stehen viele Verlustfunktionen zur Verfügung, und die Art unseres Problems sollte unsere Wahl der Verlustfunktion bestimmen. In diesem Artikel verwenden wir die Summe der Fehlerquadrate als Verlustfunktion.

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Die Summe der quadratischen Fehler ist der Durchschnitt der Differenz zwischen jedem vorhergesagten Wert und dem tatsächlichen Wert.

Das Ziel des Trainings ist es, eine Reihe von Gewichten und Vorurteilen zu finden, die die Verlustfunktion minimieren.

Rückausbreitung

Nachdem wir unseren Prognosefehler (Verluste) gemessen haben, müssen wir einen Weg finden, den Fehler zurück zu verbreiten und unsere Gewichte und Verzerrungen zu aktualisieren.

Um den geeigneten Betrag zur Korrektur von Gewichten und Verzerrungen herauszufinden, müssen wir die Ableitung der Verlustfunktion in Bezug auf die Gewichte und Verzerrungen kennen.

Aus der Analyse geht hervor, dass die Ableitung einer Funktion die Tangente der Steigung der Funktion ist.

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Wenn wir eine Ableitung haben, können wir die Gewichte und Verzerrungen einfach aktualisieren, indem wir sie erhöhen / verringern (siehe Abbildung oben). Dies wird als Gradientenabstieg bezeichnet.

Wir können jedoch die Ableitung der Verlustfunktion in Bezug auf die Gewichte und Verzerrungen nicht direkt berechnen, da die Gleichung der Verlustfunktion keine Gewichte und Verzerrungen enthält. Daher benötigen wir eine Kettenregel, um die Berechnung zu erleichtern.

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Fuh! Es war umständlich, aber es erlaubte uns, das zu bekommen, was wir brauchten – die Ableitung (Steigung) der Verlustfunktion in Bezug auf die Gewichte. Wir können jetzt die Gewichte entsprechend anpassen.

Fügen wir unserem Python-Code die Backpropagation-Funktion hinzu:

Teilderivate

Partielle Ableitungen können berechnet werden, so dass bekannt ist, welcher Beitrag zum Fehler für jedes Gewicht geleistet wurde. Der Bedarf an Derivaten liegt auf der Hand. Stellen Sie sich ein neuronales Netzwerk vor, das versucht, die optimale Geschwindigkeit für ein autonomes Fahrzeug zu finden. Wenn das Auto feststellt, dass es schneller oder langsamer als die erforderliche Geschwindigkeit fährt, ändert das neuronale Netzwerk die Geschwindigkeit und beschleunigt oder verlangsamt das Auto. Was beschleunigt / bremst gleichzeitig? Geschwindigkeitsableitungen.

Betrachten wir anhand eines Beispiels die Notwendigkeit partieller Ableitungen.

Angenommen, die Kinder werden gebeten, einen Pfeil auf ein Ziel zu werfen, während sie auf die Mitte zielen. Hier sind die Ergebnisse:

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Wenn wir nun einen allgemeinen Fehler finden und ihn einfach von allen Gewichten subtrahieren, werden wir die von jedem Fehler gemachten Fehler zusammenfassen. Nehmen wir also an, das Kind hat zu niedrig geschlagen, aber wir bitten alle Kinder, sich zu bemühen, das Ziel zu treffen. Dann führt dies zu folgendem Bild:

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Der Fehler mehrerer Kinder kann abnehmen, aber der Gesamtfehler nimmt immer noch zu.

Nachdem wir die partiellen Ableitungen gefunden haben, finden wir die Fehler, die jedem Gewicht entsprechen, separat heraus. Wenn Sie die Gewichte selektiv korrigieren, erhalten Sie Folgendes:

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Hyperparameter

Ein neuronales Netzwerk wird verwendet, um die Merkmalsauswahl zu automatisieren, einige Parameter werden jedoch manuell konfiguriert.

Lernrate

Die Lernrate ist ein sehr wichtiger Hyperparameter. Wenn die Lernrate zu niedrig ist, ist sie auch nach langem Training des neuronalen Netzwerks weit von optimalen Ergebnissen entfernt. Die Ergebnisse sehen ungefähr so ​​aus:

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Wenn andererseits die Lernrate zu hoch ist, reagiert das Netzwerk sehr schnell. Das Ergebnis ist folgendes:

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Tiefe neuronale Netze

Deep Learning ist eine Klasse von Algorithmen für maschinelles Lernen, die lernen, Daten tiefer (abstrakter) zu verstehen. Beliebte Algorithmen für neuronale Netze mit tiefem Lernen sind in der folgenden Abbildung dargestellt.

In einfachen Worten zum Komplex: Was sind neuronale Netze? Schreiben eines vorwärtsgerichteten neuronalen Netzwerks von Grund auf neu.

Beliebte neuronale Netzwerkalgorithmen (http://www.asimovinstitute.org/neural-network-zoo )

Formaler im Deep Learning:

  • Eine Kaskade (Pipeline als sequentiell übertragener Strom) wird aus einer Vielzahl von Verarbeitungsschichten (nichtlinear) verwendet, um Merkmale zu extrahieren und zu transformieren.
  • Basierend auf der Untersuchung von Merkmalen (Präsentation von Informationen) in Daten ohne überwachtes Lernen. Die Funktionen auf höherer Ebene (die sich in den letzten Schichten befinden) werden aus den Funktionen auf niedrigerer Ebene (die sich in den Schichten der anfänglichen Schichten befinden) erhalten.
  • Untersucht mehrschichtige Ansichten, die verschiedenen Abstraktionsebenen entsprechen. Ebenen bilden eine Präsentationshierarchie.

Trainieren Sie das neuronale Netzwerk mithilfe von XOR-Funktionen

Warum ist die XOR-Funktion so interessant? Einfach, weil es nicht von einem Neuron erhalten werden kann: 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0. Es wird jedoch leicht durch Erhöhen der Anzahl von Neuronen erhalten. Wir werden versuchen, ein Netzwerk mit 3 Neuronen in der verborgenen Schicht und 1 Ausgang zu trainieren (da wir nur einen Ausgang haben). Dazu müssen wir ein Array von X- und Y-Vektoren mit Trainingsdaten und dem neuronalen Netzwerk selbst erstellen:

// массив входных обучающих векторов Vector[] X = { new Vector(0, 0), new Vector(0, 1), new Vector(1, 0), new Vector(1, 1) }; // массив выходных обучающих векторов Vector[] Y = { new Vector(0.0), // 0 ^ 0 = 0 new Vector(1.0), // 0 ^ 1 = 1 new Vector(1.0), // 1 ^ 0 = 1 new Vector(0.0) // 1 ^ 1 = 0 }; Network network = new Network(new int[]{2, 3, 1}); // создаём сеть с двумя входами, тремя нейронами в скрытом слое и одним выходом 

Dann beginnen wir mit den folgenden Parametern zu trainieren: Lernrate – 0,5, Anzahl der Epochen – 100000, Fehlerwert – 1e-7:

network.Train(X, Y, 0.5, 1e-7, 100000); // запускаем обучение сети 

Schauen wir uns nach dem Training die Ergebnisse an, indem wir einen direkten Durchgang für alle Elemente durchführen:

for (int i = 0; i 
Aufnahmequelle: lastici.ru

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen