Forward Propagation

Wir betrachten nun ein allgemeines künstliches neuronales Netzwerk (KNN) mit beliebig vielen hidden Layern und einer beliebigen Anzahl an künstlichen Neuronen in jedem dieser Layer:

Bei vorgegebenen Gewichten $w_{jk}^l$ und Schwellenwerten $\Theta_j^l$ können aus einen gegebenen Eingangsvektor $\vec{a}^0$ sukzessive die Aktivierungen $\vec{a}^l$ des nächstfolgenden Layers berechnet werden, bis schließlich der letzte Ausgabelayer erreicht ist. Dieses Vorgehen bezeichnet man als Forward-Propagation.

Die sukzessive Forward-Propagation eines Eingangsvektors $\vec{a}^0$ durch das gesamte KNN kann elegant und übersichtlich als Matrix-Vektor-Multiplikation formuliert werden. Um die dazu nötigen Matrizen zu definieren, betrachten wir zunächst zwei einzelne miteinander verknüpfte künstliche Neuronen der aufeinander folgenden Layer des Netzwerks:

Das linke Neuron ist das $k$-te Neuron des Layers $l-1$, das rechte ist das $j$-te Neuron des darauffolgenden Layers $l$. Mit $w_{jk}^l$ wird das zugehörige Eingangsgewicht des rechten Neurons und mit $a_j^l$ sein Ausgang, also seine Aktivierung bezeichnet.

Damit können wir die Aktivierung des einzelnen rechten Neurons im Layer $l$ als Summe über alle Neuronen im linken Layer $l-1$ schreiben als:

\begin{eqnarray} a_j^l := \sigma \left( \sum_k w_{jk}^l a_k^{l-1} + \Theta_k^{l} \right) \nonumber \end{eqnarray}

Mit den Definitionen \begin{eqnarray} W^l &:=& \left( w_{jk}^l \right)_{jk} \hspace{5mm} \textrm{für die Gewichtsmatrix} \nonumber \\ \vec{\Theta}^l &:=& \left( \Theta_j^l \right)_j \hspace{8,5mm} \textrm{für den Vektor der Schwellenwerte} \nonumber \\ \vec{a}^l &:=& \left( a_j^l \right)_j \hspace{9mm} \textrm{für den Vektor der Ausgangsaktivierungen} \nonumber \end{eqnarray} kann die obige Gleichung in Matrix-Vektor-Schreibweise geschrieben werden als: \begin{eqnarray} \vec{a}^l := \vec{f}_0 \left( W^l \vec{a}^{l-1} + \vec{\Theta}^{l} \right) \nonumber \end{eqnarray} Dabei ist mit $\vec{f}_0$ die komponentenweise Anwendung der bereits weiter oben verwendeten Treppenfunktion $f_0$ zum Schwellenwert 0 gemeint, also $( \vec{f}_0(\vec{z}))_j := f_0(z_j)$ für alle $j$.

Anmerkung

Die einzelnen Layer können jeweils eine unterschiedliche Anzahl an künstlichen Neuronen enthalten. In der obigen Notation sollen die Indices $j,k$ jeweils alle Knoten (also Neuronen) des zugehörigen Layers durchlaufen. Auf die Angabe der konkreten unteren und oberen Grenze des jeweiligen Layers wird dabei jedoch verzichtet, um die Notation nicht unnötig zu überladen.

Aufgabe 1

Stellen Sie für das KNN aus dem letzten Kapitel die Gewichtsmatrizen $W^1$ und $W^2$ auf und berechnen Sie damit jeweils durch zweifache Matrix-Vektormultiplikation die Aktivierungen am Ausgang des Netzwerks für die folgenden Lebewesen als Eingabegrößen. Die Komponenten der Vektoren können dabei als Werte in $cm$ interpretiert werden.
1.) $\vec{a}^0 = \left(\begin{array}{c} 8\\2\\3\\10 \end{array}\right)$   2.) $\vec{a}^0 = \left(\begin{array}{c} 150\\1\\40\\120 \end{array}\right)$   3.) $\vec{a}^0 = \left(\begin{array}{c} 4\\3\\25\\7 \end{array}\right)$

Tipp: Verwenden Sie zum Ausführen der Matrix-Verktormultiplikationen:

  • das CAS-System WxMaxima oder
  • ein Jupyter-Notebook mit der Bibliothek Numpy
Die Aufgabenstellung kann als Jupyter-Notebookheruntergeladen werden. Außerdem gibt es auch noch eine Vorschauauf das Jupyter-Notebook.
X

Fehler melden

X

Suche