# Maschinelles Lernen/Hebbsche Lernregel
## Einleitung

Diese Seite zum Thema Maschinelles Lernen/Hebbsche Lernregel kann als Wiki2Reveal Folien angezeigt werden. Einzelne Abschnitte werden als Folien betrachtet und Änderungen an den Folien wirken sich sofort auf den Inhalt der Folien aus. Dabei werden die folgenden Teilaspekte im Detail behandelt:
* (1) Ursprung der Lernregel,
* (2) Mathematische Modellbildung der Lernregel,
* (3) Matrizen zur Darstellung von simultan aktiven Neuronen.

## Zielsetzung

Diese Lernressource zu Thema Maschinelles Lernen/Hebbsche Lernregel hat das Ziel, eine elementare biologisch motivierte Lernregel zu behandeln, mit der man z.B. elementare assoziative Netze trainieren kann.

## Biologisches Vorbild für die Lernregel

Die hebbsche Lernregel ist eine vom Psychologen Donald Olding Hebb aufgestellte Regel für die Veränderung der Signalübertragung zwischen Nervenzellen in einem biologischen neuronalen Netzwerken und der simultanen Aktivität von einzelnen über Synapsen verbundenen Neuronen.

## Geschichte

Hebb formulierte 1949 in seinem Buch The Organization of Behavior: „Wenn ein Axon der Zelle A […] Zelle B erregt und wiederholt und dauerhaft zur Erzeugung von Aktionspotentialen in Zelle B beiträgt, so resultiert dies in Wachstumsprozessen oder metabolischen Veränderungen in einer oder in beiden Zellen, die bewirken, dass die Effizienz von Zelle A in Bezug auf die Erzeugung Aktionspotentials in B größer wird.“

### Lernen als Veränderungen an Synapsen

Das bedeutet: Je häufiger ein Neuron A gleichzeitig mit Neuron B aktiv ist, umso bevorzugter werden die beiden Neuronen aufeinander reagieren („what fires together, wires together“). Dies hat Hebb anhand von Veränderungen der synaptischen Übertragung zwischen Neuronen nachgewiesen.

### Wissenschaftliche Bestätigung von Hebbs Lernregel

Als endgültige Bestätigung von Hebbs Thesen gelten die Experimente von Terje Lømo und anderen in den 1960er und 1970er Jahren und der direkte Nachweis der Veränderung von Signalübertragung als Teil des Mechanismus für Lernprozesse und Gedächtnis im Jahr 2014.

### Synaptische Plastizität

Hebb gilt damit als der Entdecker des Modells der synaptischen Plastizität, welche die neurophysiologische Grundlage von Lernen und Gedächtnis darstellt.. Die hebbsche Lernregel ist die älteste und einfachste neuronale Lernregel, die biologisch beobachtbare Phänomene auf eine algorithmische Lernregel überträgt.

## Mathematische Modellbildung

In künstlichen neuronalen Netzen wird diese Veränderung der synaptischen Übertragung als Gewichtsänderung des neuronalen Graphen abgebildet.
$\Delta w_{ij}=\eta \cdot a_{i}\cdot a_{j}$

### Variablenbezeichnung

* $\Delta w_{ij}$: Veränderung des Gewichtes von Neuron i zu Neuron j (also die Änderung der Verbindungsstärke dieser beiden Neuronen)
* $\eta$: Lernrate (ein geeignet zu wählender konstanter Faktor)
* $a_{i}$: Aktivierung von Neuron i
* $a_{j}$: Aktivierung von Neuron j, das mit Neuron i verbunden ist.

### Beispiel - Assoziator

Als Beispiel soll nur ein Assoziator als Matrix mit der Hebbschen Lernregel trainiert werden. Gegeben ist eine Matrix $A\in Mat(m\times n,\mathbb {R} )$. In diesem Beispiel sei $m=3$ und $n=4$. Die Matrix $A\in Mat(3\times 4,\mathbb {R} )$ stellt als Funktion eine Abbildung vom $\mathbb {R} ^{4}$ in den $\mathbb {R} ^{3}$ dar.

#### Matrix

$A:={\begin{pmatrix}a_{1,1}&a_{1,2}&a_{1,3}&a_{1,4}\\a_{2,1}&a_{2,2}&a_{2,3}&a_{2,4}\\a_{3,1}&a_{3,2}&a_{3,3}&a_{3,4}\\\end{pmatrix}}$

#### Koaktivitätsmatrix

Die Koaktivitätsmatrix $C\in Mat(3\times 4,\mathbb {R} )$ zeigt an, welche Neuronenpaare zeitlich synchron aktiv sind (also einen Impuls senden).
    $C:={\begin{pmatrix}c_{1,1}&c_{1,2}&c_{1,3}&c_{1,4}\\c_{2,1}&c_{2,2}&c_{2,3}&c_{2,4}\\c_{3,1}&c_{3,2}&c_{3,3}&c_{3,4}\\\end{pmatrix}}={\begin{pmatrix}y_{1}\\y_{2}\\y_{3}\\\end{pmatrix}}\cdot (x_{1},x_{2},x_{3},x_{4})$

#### Aufgabe - Koaktivitätsmatrix

* Erläutern Sie, wie aus einem Eingabevektor $x\in \mathbb {R} ^{4}$ und einem zugehörigen assoziierten Ausgabevektor $y\in \mathbb {R} ^{3}$ eine Koaktivitätsmatrix durch Matrixmultiplikation entsteht?
* Wie kann man die Koaktivitätsmatrix verwenden, um einen Lernschritt mit der Hebbschen Lernregel abzubilden?
* Laden Sie eine CSV-Datei mit den Trainingsdaten für die obige Kooktivitätsmatrix mit der folgenden Spaltenstruktur $(x_{1},x_{2},x_{3},x_{4},y_{1},y_{2},y_{3})$

#### Folgen im Matrizenraum

Die Ausgangsmatrix $A$ wird durch den maschinellen Lernprozess mit jeder Anwendung einer Lernregel verändert. Dadurch entsteht eine Folge $(A_{n})_{n\in \mathbb {N} _{0}}$ in dem Vektorraum der Matrizen $Mat(m\times n,\mathbb {R} )$. Die Ausgangsmatrix als Startzustand wird dann mit $A_{0}$ gekennzeichnet.

### Lernrate

Die Lernrate legt fest, wie stark die Veränderung die Koaktivitätsmatrix die Matrix verändert. Die Lernrate kann sich mit jedem Lernschritt verändern und liefert daher eine Folge $(\eta _{n})_{n\in \mathbb {N_{0}} }\in \mathbb {R} _{o}^{\mathbb {N_{0}} }$. Ist $C_{n}$ Koaktivitätsmatrix im $n$ Lernschritt, so verändert sich die Matrix $A_{n}$ wie folgt.
$A_{n+1}=A_{n}+\eta _{n}\cdot C_{n}$

#### Lernratenfestlegung

Lernraten als monoton fallend Nullfolgen sorgen dafür, dass die Veränderungen der Matrix $A_{n}$ mit wachsender Anzahl von Trainingsdaten immer geringer werden. Eine einfache Festlegung der Lernrate z.B. $(\eta _{n})_{n\in \mathbb {N_{0}} }=\left({\frac {1}{n}}\right)_{n\in \mathbb {N_{0}} }$.

#### Aufgabe - Lernraten

Erläutern Sie, wie man die Lernregel iterativ festlegen möchte, bei der $A_{n}$ jeweils das arithmetische Mittel aller Koaktivitätsmatrizen darstellt.
    $A_{n}:={\frac {1}{n}}\cdot \sum _{k=0}^{n}C_{n}$
Welcher Zusammenhang besteht dabei zu Konvexkombinationen?

## Umsetzung in R

Die Umsetzung in R gliedert sich folgende Teilschritte:
* Nutzung des Assoziators,
* Erzeugen der Koaktivitätsmatrix,
* Laden von Trainingsdaten,
* Training des Assoziators.

### Linearer Assoziator als Matrixmultiplikation

Man verwendet eine Standardmatrixmultiplikation $A\cdot x=y$, die als linearer Assoziator durch die Matrix $A\in Mat(2\times 3,\mathbb {R} )$ gegeben ist. Dabei berechnet $A\cdot x=y$ zu einem gegebenen Spaltenvektor $x\in \mathbb {R} ^{4}$ den zugehörigen assoziierten Vektor y:

### Darstellung in mathematischer Notation

In diesem Beispiel wird im ersten Befehl ein Spaltenvektor c(1,2,3,4,5,6) in eine Matrix mit 3 Spalten konvertiert (ncol=3 number of columns 3), die dann als Matrix $A$ zwei Zeilen besitzt.
    $A\cdot x={\begin{pmatrix}1&3&5\\2&4&6\end{pmatrix}}\cdot {\begin{pmatrix}4\\2\\1\\\end{pmatrix}}={\begin{pmatrix}15\\22\\\end{pmatrix}}=y$

### Erzeugen der Koaktivitätsmatrix

Die Koaktivitätsmatrix kann man durch Matrixmultiplikation aus zwei assoziierten Vektoren erzeugen. Dabei wird mit einem Trainingsvektor $(x^{(k)},y^{(k)})\in \mathbb {R} ^{m}\times \mathbb {R} ^{n}$ der Spaltenvektor $y^{(k)}\mathbb {R} ^{m}$ von links mit dem Zeilenvektor ${x^{(k)}}^{\top }\in \mathbb {R} ^{n}$ multipliziert und es entsteht die Koaktivitätsmatrix $K^{(k)}$ als $m\times n$-Matrix.
    $K^{(k)}:=y^{(k)}\cdot x^{(k)^{\top }}={\begin{pmatrix}1\\0\\\end{pmatrix}}\cdot {\begin{pmatrix}0&0&1\\\end{pmatrix}}={\begin{pmatrix}0&0&1\\0&0&0\\\end{pmatrix}}$

### Einlesen von tabellarischen Daten

Der Eingabevektor $x=(x_{1},\dots x_{n})\in \mathbb {R}$ ist $n$-dimensional und assoziierte Ausgabevektor $y=(y_{1},\dots y_{n})\in \mathbb {R}$ ist $m$-dimensional. Einlesen der Daten in R kann damit mit einer Tabelle erfolgen, die $m+n$ Spalten besitzt.

### Indikatoren als Eingabe - Vektoren

Wie können folgende Texteingaben zahlenmäßig beschrieben werden

### Aufgabe - Fuzzy-Logik

Wie kann das obige Beispiel auf die Fuzzylogik erweitern?

### Aufgabe - Texte als Eingabe - Vektoren

Wie können folgende Texteingaben zahlenmäßig als Spaltenindikatoren mit 0 und 1 kodiert und beschrieben werden?