Ich habe über Neuronale Netze im Allgemeinen gelesen und versucht, die grundlegende Theorie dahinter zu verstehen. Ich bin etwas verwirrt und frage mich, ob mir jemand helfen könnte.

Ich verstehe neuronale Netze folgendermaßen:

Eingabeebene + versteckte Ebenen + Ausgabeebenen, wobei jede Ebene Knoten oder Neuronen hat. Jedes Neuron erhält Eingaben von allen Neuronen in der vorherigen Schicht und sendet sie auch an jedes Neuron in der nächsten Schicht. Dann wird gesagt, dass das Neuron die Summe der Gewichte berechnet und dann eine Aktivierungsfunktion verwendet, um entweder zu feuern oder nicht (oder eine Zahl zwischen 0 und 1 zu senden).

Was mich verwirrt, ist, wie es die Summe der Gewichte berechnet?

Simple Neural Network with one hidden layer

In der obigen Abbildung habe ich ein einfaches neuronales Netzwerk erstellt und die Eingabe wie Andrew Ng in seinen Vorlesungen (Youtube) aufgerufen.

Nehmen Sie also das Neuron a1 in Schicht 1: Dies erhält den Wert a1 und a2 aus Schicht 0 sowie die entsprechenden Gewichte und Vorspannungen, die in den Vektoren b1 und w1 für Schicht 1 gesammelt werden.

Wird die Summe dann aus der folgenden Formel berechnet? z = w1 * x + b? Ist dies im Allgemeinen für alle neuronalen Netze oder ist dies nur eine einzige Art von NN? Wird z1 in Schicht 1 auch ein Vektor sein? Ist es die Aktivierungsfunktion, die es zu einem Skalar macht?

Ich verstehe, dass es verschiedene Aktivierungsfunktionen gibt, die den endgültigen Skalarwert berechnen, der zusammen mit Gewichten und Verzerrungen an die nächste Neuronenschicht gesendet wird. Aber ich denke, ich bin sehr verwirrt über die Gewichte und Vorurteile und woher sie kommen / berechnet werden usw.

Ich hoffe, meine Erklärung war nicht zu verwirrend, weil ich ziemlich verwirrt bin.

2
Kakemonster 18 Apr. 2018 im 10:45

4 Antworten

Beste Antwort

Die Operation z1 = w1 * x + b gilt nur für vollständig verbundene Schichten. Faltungsneurale Netze verwenden beispielsweise unterschiedliche Operationen.

Ich denke, es gibt ein bisschen Verwirrung mit der Notation. Der Wert von a1 in Schicht 1 ist ein Skalar. Um dies zu erhalten, müssen Sie die Aktivierungsfunktion auf einen anderen Skalar, z1, anwenden, der mit z1 = w1 * x + b berechnet werden kann. Hier ist w1 keine Matrix, sondern ein Vektor der Gewichte, die zum Neuron a1 gehen.

Dies ist jedoch nicht die übliche Art, die Berechnungen durchzuführen, da dies nicht den Vorteil der Vektorisierung nutzt. Im Allgemeinen möchten Sie z = W * x + b ausführen, wobei W die Matrix aller Gewichte und z ein Vektor ist, und dann die Aktivierungsfunktion elementweise anwenden, um einen Aktivierungsvektor für diese Schicht zu erhalten, a .

2
David Masip 18 Apr. 2018 im 07:57

Schauen Sie sich diese Wiedergabeliste an. Sie lernen, wie Sie Ihr on nn implementieren.

Shiffmann Coding Train Neurol Network, Feedforward-Algorithmus Teil 1

0
Wulf 18 Apr. 2018 im 07:52

Sie können sich die Gewichte als die Pfeile vorstellen, die Ihre Neuronen verbinden. Für jedes Neuron in einer Schicht haben Sie ein Gewicht für jedes Neuron in der nächsten Schicht. Das heißt, Sie können eine Matrix zwischen zwei Ebenen verwenden, um die Gewichte zu speichern.

Um die Werte der Neuronen der nächsten Schicht zu berechnen, gehen Sie folgendermaßen vor:

Für jeden Knoten in der zweiten Ebene berechnen Sie z1[0] = w1*a1[0] + w2*a2[0] + w3*a3[0]. Dies ist ein Skalarwert. Jetzt können Sie die Sigmoid-Funktion anwenden, die den Skalar zerquetscht (aber es wird immer noch ein Skalar sein).

Anstatt dies für jedes einzelne Neuron zu tun, können wir eine vektorisierte Implementierung verwenden und alle Werte für eine ganze Schicht auf einmal berechnen:

z[1] = a[0] * layer1_weights
a[1] = sigmoid(z[1])
0
Tagas 18 Apr. 2018 im 08:04

Betrachten wir alle Zahlen hier als Matrix. Ihre Eingabe a [0] ist eine 1 × 3-Matrix, d. H. Ein Spaltenvektor. Wie Sie bereits erwähnt hatten, wäre die Ebenenausgabe ohne Aktivierungsfunktion für eine Ebene a [1] = a [0] .w [01] + b [1], wobei w [01] zwischen der 0. Ebene und liegt 1. Schicht. In ähnlicher Weise ist b [1] die der ersten Schicht hinzugefügte Vorspannung.

Für die Matrixmultiplikation wäre Ihr w [01] also eine 3x4-Matrix und die Vorspannung eine 1x4-Matrix. Wenn wir später eine Sigmoid-Aktivierung hatten, wird in diesem Fall die Sigmoid-Funktion auf Ihr a [1] angewendet, um die endgültige Ausgabe von dieser Ebene zu erhalten. Es ist immer einfacher, die Operationen von NN mithilfe der Matrix zu verstehen! Hoffentlich hilft das!

0
Madhu 24 Aug. 2018 im 22:22