Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| p:ki:machinelearning4 [2026/07/12 22:31] – [1.3 Informationsfluss im Feedforward Neural Network] Ralf Kretzschmar | p:ki:machinelearning4 [2026/07/31 12:02] (aktuell) – [1.2 Fehlerfunktion] Ralf Kretzschmar | ||
|---|---|---|---|
| Zeile 25: | Zeile 25: | ||
| * **Neuron:** Ein Neuron ist eine Verarbeitungseinheit eines neuronalen Netzes. Ein Neuron bekommt einen Wert (Aktivierung), | * **Neuron:** Ein Neuron ist eine Verarbeitungseinheit eines neuronalen Netzes. Ein Neuron bekommt einen Wert (Aktivierung), | ||
| - | * **Input Layer:** Besteht aus mehreren Input-Neuronen, | + | * **Input Layer:** Besteht aus mehreren Input-Neuronen, |
| - | * **Hidden Layer:** Besteht aus mehreren Hidden-Neuronen, | + | * **Hidden Layer:** Besteht aus mehreren Hidden-Neuronen, |
| - | * **Output Layer:** Besteht aus mehreren Output-Neuronen, | + | * **Output Layer:** Besteht aus mehreren Output-Neuronen, |
| * **Gewichte: | * **Gewichte: | ||
| - | | {{gdraw> | + | | {{gdraw> |
| | Abb.1 FNN mit einem Hidden Layer((eigene Darstellung, | | Abb.1 FNN mit einem Hidden Layer((eigene Darstellung, | ||
| Zeile 38: | Zeile 38: | ||
| ℹ️ Alles kombiniert ergibt sich für jeden Ausgang $y_j$ folgende Formel für ein FNN mit einem Hidden Layer: | ℹ️ Alles kombiniert ergibt sich für jeden Ausgang $y_j$ folgende Formel für ein FNN mit einem Hidden Layer: | ||
| - | $y_j = \varphi_j \left[ \displaystyle\sum_{i=0}^{n_h} w_{ij} \cdot \phi_i \left( | + | $y_j = \varphi_j \left[ \displaystyle\sum_{i=0}^{n_{hidden}} w_{ij} \cdot \phi_i \left( |
| - | Dabei bezeichnet | + | Dabei bezeichnet $\sum$ eine Summe. Z. B. ist $\sum_{h=0}^{n_{input}} v_{hi} \cdot x_h$ die Summe aller $v_{hi} \cdot x_h$ mit einem Index $h$ von $0$ bis $n_{input}$. Für $i = 2$ wird die Summe zu $\sum_{h=0}^{n_{input}} v_{h2} \cdot x_h = v_{02}\cdot x_0 + v_{12}\cdot x_1 +v_{22}\cdot x_2$. Wird in dieser Formel berücksichtigt, |
| \\ | \\ | ||
| Zeile 47: | Zeile 47: | ||
| ℹ️ Um das neuronale Netz zu trainieren, braucht es eine Fehlerfunktion $J[k]$ (da zwei verschiedene Buchstaben $v$ und $w$ für die Gewichte verwendet werden, wird nicht $J(w[k])$ geschrieben, | ℹ️ Um das neuronale Netz zu trainieren, braucht es eine Fehlerfunktion $J[k]$ (da zwei verschiedene Buchstaben $v$ und $w$ für die Gewichte verwendet werden, wird nicht $J(w[k])$ geschrieben, | ||
| - | $J[k] = \frac{1}{2} \displaystyle\sum_{j=1}^{n_0} (y_j[k]-d_j)^2\quad$ (SE), | + | $J[k] = \frac{1}{2} \displaystyle\sum_{j=1}^{n_{output}} (y_j[k]-d_j)^2\quad$ (SE), |
| Dabei ist $d_j$ der gewünschte Ausgangswert (Desired Output) zum Ausgang $y_j$. Die Differenz zwischen erhaltenem Ausgang $y_j$ und Desired Output $d_j$ bildet die Basis für die Fehlerberechnung. Das Quadrat bei $(y_j[k]-d_j)^2$ sorgt dafür, dass der Fehler eine positive Zahl ist. Zudem werden grosse Differenzen $y_j[k]-d_j$ durch das Quadrat stärker bestraft als kleine. Der Faktor $\frac{1}{2}$ spielt für das Training selber keine Rolle. Er wird jedoch im Gebiet der neuronalen Netze häufig dazu genommen, weil damit die Gleichungen für das Gradientenverfahren vereinfacht werden((Streng genommen ist somit die obige Formel nicht eine Formel für den SE, sondern für den halben SE)). | Dabei ist $d_j$ der gewünschte Ausgangswert (Desired Output) zum Ausgang $y_j$. Die Differenz zwischen erhaltenem Ausgang $y_j$ und Desired Output $d_j$ bildet die Basis für die Fehlerberechnung. Das Quadrat bei $(y_j[k]-d_j)^2$ sorgt dafür, dass der Fehler eine positive Zahl ist. Zudem werden grosse Differenzen $y_j[k]-d_j$ durch das Quadrat stärker bestraft als kleine. Der Faktor $\frac{1}{2}$ spielt für das Training selber keine Rolle. Er wird jedoch im Gebiet der neuronalen Netze häufig dazu genommen, weil damit die Gleichungen für das Gradientenverfahren vereinfacht werden((Streng genommen ist somit die obige Formel nicht eine Formel für den SE, sondern für den halben SE)). | ||
| Zeile 53: | Zeile 53: | ||
| Wird die Formel für das FNN mit einem Hidden Layer in die Formel für den SE eingesetzt, ergibt sich: | Wird die Formel für das FNN mit einem Hidden Layer in die Formel für den SE eingesetzt, ergibt sich: | ||
| - | $J[k] = \frac{1}{2} \displaystyle\sum_{j=1}^{n_0} \left(\varphi_j \left[ \displaystyle\sum_{i=0}^{n_h} w_{ij}[k] \cdot \phi_i \left( | + | $J[k] = \frac{1}{2} \displaystyle\sum_{j=1}^{n_{output}} \left(\varphi_j \left[ \displaystyle\sum_{i=0}^{n_{hidden}} w_{ij}[k] \cdot \phi_i \left( |
| \\ | \\ | ||
| ++++Falls du wissen möchtest, wie die Formel für den "mean squared error (MSE)" aussieht, hier klicken!| | ++++Falls du wissen möchtest, wie die Formel für den "mean squared error (MSE)" aussieht, hier klicken!| | ||
| \\ | \\ | ||
| - | Als Fehlerfunktion $J[k]$ ist der "mean squared error (MSE)" geläufiger, | + | Als Fehlerfunktion $J[k]$ ist der "mean squared error (MSE)" geläufiger, |
| - | $J[k] = \frac{1}{2} \frac{1}{n_b} \displaystyle\sum_{s=1}^{n_b} \displaystyle\sum_{j=1}^{n_0} (y_{s, | + | $J[k] = \frac{1}{2} \frac{1}{n_{samples}} \displaystyle\sum_{s=1}^{n_{samples}} \displaystyle\sum_{j=1}^{n_{output}} (y_{s, |
| Für jedes Sample gibt das neuronale Netz einen anderen Ausgangswert aus und für jedes Sample stellt das Trainingsset einen anderen Desired Output zur Verfügung. Dies wird mit den $s$ in $y_{s, | Für jedes Sample gibt das neuronale Netz einen anderen Ausgangswert aus und für jedes Sample stellt das Trainingsset einen anderen Desired Output zur Verfügung. Dies wird mit den $s$ in $y_{s, | ||
| Zeile 66: | Zeile 66: | ||
| Die Formel für das FNN mit einem Hidden Layer ist: | Die Formel für das FNN mit einem Hidden Layer ist: | ||
| - | $y_j = \varphi_j \left[ \displaystyle\sum_{i=0}^{n_h} w_{ij} \cdot \phi_i \left( | + | $y_j = \varphi_j \left[ \displaystyle\sum_{i=0}^{n_{hidden}} w_{ij} \cdot \phi_i \left( |
| Wird diese Formel für das FNN mit einem Hidden Layer in die Formel für den MSE eingesetzt, ergibt sich: | Wird diese Formel für das FNN mit einem Hidden Layer in die Formel für den MSE eingesetzt, ergibt sich: | ||
| - | $J[k] = \frac{1}{2} \frac{1}{n_b} \displaystyle\sum_{s=1}^{n_b} \displaystyle\sum_{j=1}^{n_0} \left(\varphi_j \left[ \displaystyle\sum_{i=0}^{n_h} w_{ij}[k] \cdot \phi_i \left( | + | $J[k] = \frac{1}{2} \frac{1}{n_{samples}} \displaystyle\sum_{s=1}^{n_{samples}} \displaystyle\sum_{j=1}^{n_{output}} \left(\varphi_j \left[ \displaystyle\sum_{i=0}^{n_{hidden}} w_{ij}[k] \cdot \phi_i \left( |
| D. h., der Fehler $J[k]$ zum Zeitpunkt $k$ hängt somit ab von den Eingangsgrössen $x_{s,h}$ , den Desired Outputs $d_{s,j}$ der berücksichtigten Samples und den Gewichten $v_{hi}[k]$ und $w_{ij}[k]$. | D. h., der Fehler $J[k]$ zum Zeitpunkt $k$ hängt somit ab von den Eingangsgrössen $x_{s,h}$ , den Desired Outputs $d_{s,j}$ der berücksichtigten Samples und den Gewichten $v_{hi}[k]$ und $w_{ij}[k]$. | ||
| Zeile 117: | Zeile 117: | ||
| Werden als Fehlerfunktion $J$ der SE und als Stellvertreter-Funktion $f_{ML}(x)$ die Formeln für das FNN mit einem Hidden Layer verwendet, resultieren die partiellen Ableitungen in: | Werden als Fehlerfunktion $J$ der SE und als Stellvertreter-Funktion $f_{ML}(x)$ die Formeln für das FNN mit einem Hidden Layer verwendet, resultieren die partiellen Ableitungen in: | ||
| - | $\displaystyle\frac{\partial J[k]}{\partial v_{hi}} = \displaystyle\sum_{j=1}^{n_0}(y_j[k] - d_j) \cdot \varphi' | + | $\displaystyle\frac{\partial J[k]}{\partial v_{hi}} = \displaystyle\sum_{j=1}^{n_{output}}(y_j[k] - d_j) \cdot \varphi' |
| wobei | wobei | ||
| - | $\phi_i(.)= \phi_i\left( \displaystyle\sum_{h=0}^{n_i} v_{hi}[k] \cdot x_h \right); \quad \varphi_j(.) = \varphi_j\left( \displaystyle\sum_{i=0}^{n_h} w_{ij}[k] \cdot \phi_i(.)\right); | + | $\phi_i(.)= \phi_i\left( \displaystyle\sum_{h=0}^{n_{input}} v_{hi}[k] \cdot x_h \right); \quad \varphi_j(.) = \varphi_j\left( \displaystyle\sum_{i=0}^{n_{hidden}} w_{ij}[k] \cdot \phi_i(.)\right); |
| und $\phi' | und $\phi' | ||
| Zeile 131: | Zeile 131: | ||
| Die Formeln für den SE für ein FNN mit einem Hidden Layer sind: | Die Formeln für den SE für ein FNN mit einem Hidden Layer sind: | ||
| - | $J[k] = \frac{1}{2} \displaystyle\sum_{j=1}^{n_0} (y_j[k]-d_j)^2\quad , \quad y_j[k] = \varphi_j \left[ \displaystyle\sum_{i=0}^{n_h} w_{ij}[k] \cdot \phi_i \left( | + | $J[k] = \frac{1}{2} \displaystyle\sum_{j=1}^{n_{output}} (y_j[k]-d_j)^2\quad , \quad y_j[k] = \varphi_j \left[ \displaystyle\sum_{i=0}^{n_{hidden}} w_{ij}[k] \cdot \phi_i \left( |
| \\ \\ | \\ \\ | ||
| Die Formel für das Gewichts-Update des Gewichts $w_{ij}$ lässt sich durch mehrfaches konsequentes Anwenden der [[wpde> | Die Formel für das Gewichts-Update des Gewichts $w_{ij}$ lässt sich durch mehrfaches konsequentes Anwenden der [[wpde> | ||
| - | $\displaystyle\frac{\partial J[k]}{\partial w_{ij}} = \frac{1}{2} \displaystyle\frac{\partial}{\partial w_{ij}} (y_j[k]-d_j)^2 \quad$ (die Summe $\sum_{j=1}^{n_0}$ fällt weg, da es nur um ein bestimmtes $_j$ geht.) | + | $\displaystyle\frac{\partial J[k]}{\partial w_{ij}} = \frac{1}{2} \displaystyle\frac{\partial}{\partial w_{ij}} (y_j[k]-d_j)^2 \quad$ (die Summe $\sum_{j=1}^{n_{output}}$ fällt weg, da es nur um ein bestimmtes $_j$ geht.) |
| - | $= (y_j[k] - d_j) \cdot \displaystyle\frac{\partial}{\partial w_{ij}} y_j[k] = (y_j[k] - d_j) \cdot \displaystyle\frac{\partial}{\partial w_{ij}} \varphi_j \left[ \displaystyle\sum_{i=0}^{n_h} w_{ij}[k] \cdot \phi_i \left( | + | $= (y_j[k] - d_j) \cdot \displaystyle\frac{\partial}{\partial w_{ij}} y_j[k] = (y_j[k] - d_j) \cdot \displaystyle\frac{\partial}{\partial w_{ij}} \varphi_j \left[ \displaystyle\sum_{i=0}^{n_{hidden}} w_{ij}[k] \cdot \phi_i \left( |
| - | $= (y_j[k] - d_j) \cdot \varphi' | + | $= (y_j[k] - d_j) \cdot \varphi' |
| - | $= (y_j[k] - d_j) \cdot \varphi' | + | $= (y_j[k] - d_j) \cdot \varphi' |
| $= (y_j[k] - d_j) \cdot \varphi' | $= (y_j[k] - d_j) \cdot \varphi' | ||
| Zeile 149: | Zeile 149: | ||
| Die Formel für das Gewichts-Update des Gewichts $v_{hi}$ lässt sich durch mehrfaches konsequentes Anwenden der [[wpde> | Die Formel für das Gewichts-Update des Gewichts $v_{hi}$ lässt sich durch mehrfaches konsequentes Anwenden der [[wpde> | ||
| - | $\displaystyle\frac{\partial J[k]}{\partial v_{hi}} = \frac{1}{2} \displaystyle\sum_{j=1}^{n_0} \frac{\partial}{\partial v_{hi}}(y_j[k]-d_j)^2 = \displaystyle\sum_{j=1}^{n_0}(y_j[k] - d_j) \cdot \displaystyle\frac{\partial}{\partial v_{hi}} y_j[k] = \displaystyle\sum_{j=1}^{n_0}(y_j[k] - d_j) \cdot \displaystyle\frac{\partial}{\partial v_{hi}} \varphi_j \left[ \displaystyle\sum_{i=0}^{n_h} w_{ij}[k] \cdot \phi_i \left( | + | $\displaystyle\frac{\partial J[k]}{\partial v_{hi}} = \frac{1}{2} \displaystyle\sum_{j=1}^{n_{output}} \frac{\partial}{\partial v_{hi}}(y_j[k]-d_j)^2 = \displaystyle\sum_{j=1}^{n_{output}}(y_j[k] - d_j) \cdot \displaystyle\frac{\partial}{\partial v_{hi}} y_j[k] = \displaystyle\sum_{j=1}^{n_{output}}(y_j[k] - d_j) \cdot \displaystyle\frac{\partial}{\partial v_{hi}} \varphi_j \left[ \displaystyle\sum_{i=0}^{n_{hidden}} w_{ij}[k] \cdot \phi_i \left( |
| - | $= \displaystyle\sum_{j=1}^{n_0}(y_j[k] - d_j) \cdot \varphi' | + | $= \displaystyle\sum_{j=1}^{n_{output}}(y_j[k] - d_j) \cdot \varphi' |
| - | $= \displaystyle\sum_{j=1}^{n_0}(y_j[k] - d_j) \cdot \varphi' | + | $= \displaystyle\sum_{j=1}^{n_{output}}(y_j[k] - d_j) \cdot \varphi' |
| \\ | \\ | ||
| Zeile 184: | Zeile 184: | ||
| $\varphi(z) = z$ . | $\varphi(z) = z$ . | ||
| - | Da der Output Layer nur ein Neuron enthält, fällt das Summenzeichen für die Output-Neuronen weg. Und da als Aktivierungsfunktion $\varphi(.)$ die lineare Funktion verwendet wird, kann $\varphi(.)$ ebenfalls weggelassen werden ($\varphi(.)$ gibt das unverändert zurück, was ihr eingegeben wird). Somit vereinfacht sich die allgemeine Formel für ein ++FNN mit einem Hidden Layer (zum Sehen anklicken)|\\ \\ \\ Kopie der Formel für das FNN mit einem Hidden Layer aus dem letzten Kapitel zum Vergleich: | + | Da der Output Layer nur ein Neuron enthält, fällt das Summenzeichen für die Output-Neuronen weg. Und da als Aktivierungsfunktion $\varphi(.)$ die lineare Funktion verwendet wird, kann $\varphi(.)$ ebenfalls weggelassen werden ($\varphi(.)$ gibt das unverändert zurück, was ihr eingegeben wird). Somit vereinfacht sich die allgemeine Formel für ein ++FNN mit einem Hidden Layer (zum Sehen anklicken)|\\ \\ \\ Kopie der Formel für das FNN mit einem Hidden Layer aus dem letzten Kapitel zum Vergleich: |
| - | $y_1[k] = \displaystyle\sum_{i=0}^{n_h} w_{i1}[k] \cdot \phi_i \left( | + | $y_1[k] = \displaystyle\sum_{i=0}^{n_{hidden}} w_{i1}[k] \cdot \phi_i \left( |
| - | Die ++Formel für den SE|\\ \\ \\ Kopie der Formel für den SE aus dem letzten Kapitel zum Vergleich: | + | Die ++Formel für den SE|\\ \\ \\ Kopie der Formel für den SE aus dem letzten Kapitel zum Vergleich: |
| $J[k] = \displaystyle\frac{1}{2} (y_1[k]-d_1)^2$ | $J[k] = \displaystyle\frac{1}{2} (y_1[k]-d_1)^2$ | ||
| Zeile 196: | Zeile 196: | ||
| $v_{h1}[k+1] = v_{h1}[k] - \mu \cdot \displaystyle\frac{\partial J[k]}{\partial v_{h1}}\enspace ;\quad w_{i1}[k+1] = w_{i1}[k] - \mu \cdot \displaystyle\frac{\partial J[k]}{\partial w_{i1}}$ | $v_{h1}[k+1] = v_{h1}[k] - \mu \cdot \displaystyle\frac{\partial J[k]}{\partial v_{h1}}\enspace ;\quad w_{i1}[k+1] = w_{i1}[k] - \mu \cdot \displaystyle\frac{\partial J[k]}{\partial w_{i1}}$ | ||
| - | Da für die Aktivierungsfunktion $\varphi(.)$ die lineare Funktion verwendet wird und deren Ableitung $\varphi' | + | Da für die Aktivierungsfunktion $\varphi(.)$ die lineare Funktion verwendet wird und deren Ableitung $\varphi' |
| $\displaystyle\frac{\partial J[k]}{\partial v_{h1}} = (y_1[k] - d_1) \cdot w_{11}[k] \cdot \phi' | $\displaystyle\frac{\partial J[k]}{\partial v_{h1}} = (y_1[k] - d_1) \cdot w_{11}[k] \cdot \phi' | ||
| Zeile 202: | Zeile 202: | ||
| mit | mit | ||
| - | $\phi_1(.)= \phi_1\left( \displaystyle\sum_{h=0}^{n_i} v_{h1}[k] \cdot x_h \right)\enspace ; \quad x_0 = 1$ | + | $\phi_1(.)= \phi_1\left( \displaystyle\sum_{h=0}^{n_{input}} v_{h1}[k] \cdot x_h \right)\enspace ; \quad x_0 = 1$ |
| Da für $\phi_1(.)$ die logistische Funktion gewählt wurde, wird die Ableitung $\phi' | Da für $\phi_1(.)$ die logistische Funktion gewählt wurde, wird die Ableitung $\phi' | ||
| Zeile 227: | Zeile 227: | ||
| **Vorwärtsschritt zum Zeitpunkt [k] inklusive Berechnung des Fehlerwerts** (immer mit den auf drei Stellen gerundeten Resultaten weiterrechnen) | **Vorwärtsschritt zum Zeitpunkt [k] inklusive Berechnung des Fehlerwerts** (immer mit den auf drei Stellen gerundeten Resultaten weiterrechnen) | ||
| - | | $a_1[k] = \displaystyle\sum_{h=0}^{n_i} v_{h1}[k] \cdot x_h = v_{01}[k] + v_{11}[k]\cdot x_1 + v_{21}[k]\cdot x_2 =$ | {{gem/ | + | | $a_1[k] = \displaystyle\sum_{h=0}^{n_{input}} v_{h1}[k] \cdot x_h = v_{01}[k] + v_{11}[k]\cdot x_1 + v_{21}[k]\cdot x_2 =$ | {{gem/ |
| | $\phi_1[k](.) = \displaystyle\frac{1}{1 + e^{-a_1[k]}} =$ | {{gem/ | | $\phi_1[k](.) = \displaystyle\frac{1}{1 + e^{-a_1[k]}} =$ | {{gem/ | ||
| - | | $y_1[k] = \displaystyle\sum_{i=0}^{n_h} w_{i1}[k] \cdot \phi_i[k](.) = w_{01}[k] + w_{11}[k]\cdot \phi_1[k](.) =$ | {{gem/ | + | | $y_1[k] = \displaystyle\sum_{i=0}^{n_{hidden}} w_{i1}[k] \cdot \phi_i[k](.) = w_{01}[k] + w_{11}[k]\cdot \phi_1[k](.) =$ | {{gem/ |
| | $J[k] = \displaystyle\frac{1}{2} (y_1[k]-d_1)^2 = $ | {{gem/ | | $J[k] = \displaystyle\frac{1}{2} (y_1[k]-d_1)^2 = $ | {{gem/ | ||
| Zeile 250: | Zeile 250: | ||
| **Vorwärtsschritt zum Zeitpunkt [k] inklusive Berechnung des Fehlerwerts** (immer mit den auf drei Stellen gerundeten Resultaten weiterrechnen) | **Vorwärtsschritt zum Zeitpunkt [k] inklusive Berechnung des Fehlerwerts** (immer mit den auf drei Stellen gerundeten Resultaten weiterrechnen) | ||
| - | | $a_1[k+1] = \displaystyle\sum_{h=0}^{n_i} v_{h1}[k+1] \cdot x_h = v_{01}[k+1] + v_{11}[k+1]\cdot x_1 + v_{21}[k+1]\cdot x_2 =$ | {{gem/ | + | | $a_1[k+1] = \displaystyle\sum_{h=0}^{n_{input}} v_{h1}[k+1] \cdot x_h = v_{01}[k+1] + v_{11}[k+1]\cdot x_1 + v_{21}[k+1]\cdot x_2 =$ | {{gem/ |
| | $\phi_1[k+1](.) = \displaystyle\frac{1}{1 + e^{-a_1[k+1]}} =$ | {{gem/ | | $\phi_1[k+1](.) = \displaystyle\frac{1}{1 + e^{-a_1[k+1]}} =$ | {{gem/ | ||
| - | | $y_1[k+1] = \displaystyle\sum_{i=0}^{n_h} w_{i1}[k+1] \cdot \phi_i[k+1](.) = w_{01}[k+1] + w_{11}[k+1]\cdot \phi_1[k+1](.) =$ | {{gem/ | + | | $y_1[k+1] = \displaystyle\sum_{i=0}^{n_{hidden}} w_{i1}[k+1] \cdot \phi_i[k+1](.) = w_{01}[k+1] + w_{11}[k+1]\cdot \phi_1[k+1](.) =$ | {{gem/ |
| | $J[k+1] = \displaystyle\frac{1}{2} (y_1[k+1]-d_1)^2 = $ | {{gem/ | | $J[k+1] = \displaystyle\frac{1}{2} (y_1[k+1]-d_1)^2 = $ | {{gem/ | ||