Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| p:ki:machinelearning4 [2026/07/27 19:30] – [1.1 Aufbau eines neuronalen Netzes] 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: | ||
| Zeile 40: | Zeile 40: | ||
| $y_j = \varphi_j \left[ \displaystyle\sum_{i=0}^{n_{hidden}} 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 $\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, | + | 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_{hidden}} 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 70: | Zeile 70: | ||
| 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_{hidden}} 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 | ||
| 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_{hidden}} 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_{hidden}} 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( | ||
| 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_{hidden}} 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 188: | Zeile 188: | ||
| $y_1[k] = \displaystyle\sum_{i=0}^{n_{hidden}} 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' | ||