lernalgorithmus
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
lernalgorithmus [2025/01/22 14:48] – [Aktivierungsfunktion] torsten.roehl | lernalgorithmus [2025/01/29 10:58] (aktuell) – [Netzeingabe $net$] torsten.roehl | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Perzeptron Lernalgorithmus ====== | ====== Perzeptron Lernalgorithmus ====== | ||
- | + | //Im Folgenden wird der Lernalgorithmus für das **einfache Perzeptron** beschrieben. Um das Prinzip zu verstehen, werden lediglich zwei Eingangsneuronen und ein Ausgangsneuron verwendet. Mithilfe des Lernalgorithmus kann dann (z. B. in Java) gezeigt werden, dass einfache Probleme wie das UND-Problem gelernt werden können.// | |
- | ==== Topologie ==== | + | ===== Topologie |
- | * Gegeben: | + | |
- | * Eingangsneurone $x_1$ und $x_2$ | + | |
- | * $x_3$ dieses Neuron | + | * Das Neuron |
- | * ein Ausgabeneuron $y_1$ oder $o$ für **O**utput. | + | * **Ausgabeneuron** $y_1$ oder $o$ für **O**utput. |
- | * Drei Gewichte $w_{11}$ , $w_{21}$, $w_3$ | + | * **Gewichte** $w_{11}$ , $w_{21}$ |
- | * Das Gewicht $w_{31}$ hat immer den Wert $w_{31}=-0.1$ . | + | * Das Gewicht $w_{31}$ hat (in unserem Beispiel) |
{{ : | {{ : | ||
<WRAP center round tip 90%> | <WRAP center round tip 90%> | ||
- | Die Schwelle θ wird durch ein konstantes Gewicht $w_{31}=−0.1$ festgelegt. | + | Die Schwelle θ wird durch ein konstantes Gewicht |
Im **Perzeptron** kann anstelle der Schwelle ein Bias verwendet werden, da dieser als zusätzliches Gewicht modelliert wird, das mit einem konstanten Eingabewert von 1 multipliziert wird und dadurch die Schwelle direkt in die Gewichtsanpassung integriert. | Im **Perzeptron** kann anstelle der Schwelle ein Bias verwendet werden, da dieser als zusätzliches Gewicht modelliert wird, das mit einem konstanten Eingabewert von 1 multipliziert wird und dadurch die Schwelle direkt in die Gewichtsanpassung integriert. | ||
+ | |||
+ | //Der Zusammenhang zwischen Schwelle und Bias kann mathematisch gezeigt werden, was an anderer Stelle erfolgt.// | ||
+ | |||
</ | </ | ||
- | ===== Forward Pass ===== | + | ===== forward pass ===== |
- | Unter dem „Forward Pass“ versteht man die Berechnung der Ausgabe eines neuronalen Netzes bei gegebener Eingabe und gegebenen Gewichten. Im ersten Schritt wird die Netzeingabe | + | Unter dem „forward pass“ versteht man die Berechnung der Ausgabe eines neuronalen Netzes bei gegebener Eingabe und gegebenen Gewichten. Im ersten Schritt wird die Netzeingabe |
- | < | + | < |
==== Netzeingabe $net$ ==== | ==== Netzeingabe $net$ ==== | ||
- | Allgemein gilt für die Netzeingabe. | + | Allgemein gilt für die Netzeingabe |
\begin{equation} net_j = \sum w_{ij} \cdot x_i \end{equation} | \begin{equation} net_j = \sum w_{ij} \cdot x_i \end{equation} | ||
Da wir nur ein Ausgabeneuron haben ist $net_j=net_1=net$ also folgt für drei Eingabeneuronen: | Da wir nur ein Ausgabeneuron haben ist $net_j=net_1=net$ also folgt für drei Eingabeneuronen: | ||
- | \begin{equation} net = \sum_1^3 w_{1j} \cdot x_i = w_{11} | + | \begin{equation} net = \sum_{i=1}^3 w_{i1} \cdot x_i = w_{11} |
+ | Dabei wird verwendet, dass $x_3=1$ gesetzt worden ist. | ||
==== Aktivierungsfunktion ==== | ==== Aktivierungsfunktion ==== | ||
- | Die Aktivierungsfunktion für // | + | Die Aktivierungsfunktion für das // |
Zeile 35: | Zeile 39: | ||
{{ : | {{ : | ||
- | === Trainingsmuster ($x_1$, | + | ===== Trainingsmuster ($x_1$, |
- | Der Perzeptron-Lernalgorithmus wird auf Trainingsmuster angewendet. Ein Trainingsmuster (//engl. Training Pattern//) besteht aus der Eingabe zusammen mit der gewünschten Ausgabe, die es zu lernen gilt. Das neuronale Netz lernt die Gewichte so anzupassen, dass alle Trainingsmuster richtig wiedergegeben werden. Für das AND-Problem gibt es vier „Patterns“: | + | Der Perzeptron-Lernalgorithmus wird auf Trainingsmuster angewendet. Ein Trainingsmuster (//engl. Training Pattern//) besteht aus der Eingabe zusammen mit der gewünschten Ausgabe, die es zu lernen gilt. Das neuronale Netz lernt die Gewichte so anzupassen, dass alle Trainingsmuster richtig wiedergegeben werden. |
+ | |||
+ | **Für das AND-Problem gibt es vier Trainingsmuster:** | ||
^Input^Output t^ | ^Input^Output t^ | ||
Zeile 46: | Zeile 53: | ||
===== Perzeptron lernen ===== | ===== Perzeptron lernen ===== | ||
- | m Folgenden wird ein Algorithmus vorgestellt, | + | |
==== Vorbereitung ==== | ==== Vorbereitung ==== | ||
* Wähle eine Lernrate $\eta$ zwischen 0 und 1, z.B. $\eta=0.1$. | * Wähle eine Lernrate $\eta$ zwischen 0 und 1, z.B. $\eta=0.1$. | ||
Zeile 53: | Zeile 60: | ||
==== Algorithmus ==== | ==== Algorithmus ==== | ||
+ | <WRAP center round box 100%> | ||
+ | // | ||
- | | + | |
- | - Berechne den Fehler zwischen der gewünschten Ausgabe (**t** //für Target//) und der tatsächlicher | + | |
- | - Berechne die Gewichtsänderung $\Delta w_{ij} = \eta\cdot (o-j)\cdot x_i$ | + | - **error: |
- | - Berechne | + | - **hebb rule: |
+ | - **update:** Ändere | ||
- Wiederhole ab Schritt 1. für eine Anzahl an Iterationen, | - Wiederhole ab Schritt 1. für eine Anzahl an Iterationen, | ||
+ | </ | ||
+ | ===== Test & Aufgaben ===== | ||
+ | - Implementieren Sie den Perzeptron-Lernalgorithmus für das UND-Problem. | ||
+ | - Überprüfen Sie, ob das UND-Problem korrekt gelernt wurde, indem Sie für alle Inputvektoren $(x_1,x_2)$ die Ausgaben berechnen. | ||
+ | - Ändern Sie die Implementierung um auch das ODER-Problem zu lernen. | ||
+ | - Wiederholen Sie das Lernen mehrmals und untersuchen Sie die gelernten Gewichte $w_{11}$ und $w_{21}$. | ||
+ | - Untersuchen Sie die Abhängigkeit der Lernrate von der Anzahl der Iterationen, | ||
+ | - Erstellen Sie hierfür einen aussagekräftigen Graphen. | ||
+ | - | ||
+ | - Ändern Sie den Code um auch dieses Problem zu studieren.**🕱 🕱 🕱** | ||
- | ===== Test ===== | + | <WRAP center round tip 90%> |
- | + | Passen Sie gegebenenfalls die Lernrate oder die Anzahl der Iterationen an, damit das Problem erfolgreich gelernt werden kann. | |
- | Überprüfen Sie, ob das UND-Problem korrekt gelernt wurde, indem Sie für alle Inputvektoren $(x_1,x_2)$ die Ausgaben berechnen. | + | </ |
lernalgorithmus.1737557303.txt.gz · Zuletzt geändert: 2025/01/22 14:48 von torsten.roehl