Sie haben vielleicht gehört, dass neuronale Netze " universelle Funktionsapproximatoren " sind. Im Wesentlichen besagt das Cybenko-Theorem, dass Sie für jede Funktionszuordnung von Real zu Real einen Näherungswert für ein neuronales Netzwerk mit Sigmoid-Aktivierungsfunktionen angeben können. Tatsächlich stellt sich heraus, dass Sie mit neuronalen Netzen jede Funktion berechnen können, die von einer Turing-Maschine berechnet werden kann (dh alles, was Sie für die Berechnung in einen Algorithmus schreiben können). Leider besagen diese Beweise nur, dass Sie für einige endliche Konfigurationen von Neuronen und Gewichten jede Funktion approximieren können.
Die Theorie ist alles schön und gut, aber Ihre Frage scheint eher dahingehend zu lauten, wie man die Berechnung einer Funktion in eine Reihe von Neuronen und Gewichten umwandelt. Betrachten Sie zur Veranschaulichung ein einfaches Beispiel - das Exklusiv-Oder. Das XOR nimmt zwei Eingaben entgegen und leitet diese Eingaben weiter. Wenn nur einer der Eingänge aktiviert ist, ist der Ausgangsknoten aktiviert. Wenn beide oder keiner der Eingänge aktiviert sind, ist der Ausgangsknoten nicht aktiviert.
Beachten Sie, dass die drei versteckten Knoten unterschiedliche Aufgaben ausführen. Die am weitesten links und am weitesten rechts befindlichen Knoten durchlaufen einfach die entsprechenden Eingangsknotenaktivierungen. Das mittlere Neuron nimmt die beiden Eingänge und negiert sie irgendwie, wenn beide eingeschaltet sind. Durch diese geschickte Kombination und Rekombination von Eingaben wird im Wesentlichen die Arbeit in einem neuronalen Netzwerk erledigt.
Natürlich muss für komplexere Funktionen das Kombinieren und Rekombinieren auf cleverere und kompliziertere Weise erfolgen, aber dies ist im Wesentlichen das, was auf einer niedrigen Ebene geschieht. Das Verrückte ist, dass dies wirklich alles ist, was Sie brauchen, um eine berechenbare Funktion zu berechnen! Aber auch Turingmaschinen erweisen sich als täuschend einfach ...
Das Problem ist, dass wir nicht wirklich eine Möglichkeit haben, das neuronale Netzwerk, das eine willkürliche Funktion berechnet, auf magische Weise zu erzeugen. Die Beweise sagen uns nur, dass es ein Netzwerk gibt, das dies tun könnte. Wenn wir unsere neuronalen Netze trainieren, versuchen wir einfach, ein Netzwerk zu finden, das ziemlich nah ist.
Im Zusammenhang mit der Bilderkennung können Sie sich vorstellen, Muster in das Netzwerk zu kodieren. Um beispielsweise die Zahl "1" zu erkennen, könnten Sie sich versteckte Knoten vorstellen, bei denen erwartet wird, dass eine Pixelspalte größtenteils oder vollständig aktiviert ist und benachbarte Pixel ausgeschaltet sind. Dieser versteckte Knoten kann ziemlich gut eine gerade Linie in dieser bestimmten Spalte erkennen. Fügen Sie genug davon zusammen, und schon bald haben Sie eine Reihe von Knoten, die dies an genügend Stellen in Ihrem Bild tun, sodass, wenn ich dem Netzwerk eine Eins zeige, genügend gerade ausgeblendete Knoten aktiviert werden, die eine '1' anzeigen. Das Problem wird natürlich, das Netzwerk zu verallgemeinern, so dass es eine Vielzahl von Eingaben erkennen kann.
Hoffentlich hilft dies Ihnen dabei, mehr oder weniger die Konzepte zu verstehen, wie ein neuronales Netzwerk Berechnungen durchführen kann. Sie sind jedoch auf einen Punkt gestoßen, der für neuronale Netzwerke ziemlich wichtig ist: Im Allgemeinen ist es bestenfalls schwierig zu verstehen, warum das Netzwerk eine bestimmte Ausgabe ausgibt, insbesondere wenn Sie bedenken, dass es sich bei den Netzwerken um Netzwerke handelt, die im Allgemeinen um eine Bilderkennung handeln groß genug, dass es Menschen schwer fällt, die einzelnen beweglichen Teile der Maschine zu verstehen. Erschwerend kommt hinzu, dass die meisten neuronalen Netze im Allgemeinen nicht für jedes kleine Merkmal, das das Netz über die Daten erfahren könnte, einen einzigen versteckten Knoten haben. Stattdessen würde das Erkennen einer geraden Linie zum Klassifizieren der Zahl "1" auf nicht zentralisierte Weise über viele versteckte Knoten erfolgen. Andere Algorithmen,
Wenn Sie mehr lesen möchten, empfehle ich dringend, dieses Tutorial bei ai junkie durchzulesen. Es führt Sie durch die Grundlagen der Funktionsweise eines neuronalen Netzwerks und gibt sogar ein einfaches Codebeispiel, mit dem Sie neuronale Netzwerke dazu bringen, einen Panzer in Richtung eines Ziels zu steuern. Das Tutorial behandelt jedoch nicht die Backpropagation, die bei weitem die häufigste Methode zum Trainieren neuronaler Netze ist, sondern verwendet einen einfachen genetischen Algorithmus. Sobald er anfängt, über Genetik zu sprechen, können Sie wahrscheinlich aufhören zu lesen ...