Lernen mit der hebbschen Regel

Vorweg, es schwierig ist, zu bestimmen, was man unter der hebbschen Lernregel verstehen will. Schon der kleine Überblick in Rumelhart et al.(1986) [101]:S.53,62f zeigt, dass es einige Varianten gibt.


$\displaystyle Hebb-1949$ $\textstyle :=$ $\displaystyle Strengthening of a_{j} and a_{i}$ (6.11)
$\displaystyle a_{j}$ $\textstyle :=$ $\displaystyle Source$ (6.12)
$\displaystyle a_{i}$ $\textstyle :=$ $\displaystyle Receiver$ (6.13)
$\displaystyle \Delta w_{ij}$ $\textstyle =$ $\displaystyle \eta * a_{i}*o_{j}$ (6.14)
$\displaystyle \Delta w_{ij}$ $\textstyle =$ $\displaystyle \eta * a_{j}*t_{i}$ (6.15)
$\displaystyle \eta$ $\textstyle :=$ $\displaystyle Learning rate constant$ (6.16)
$\displaystyle \Delta w_{ij}$ $\textstyle =$ $\displaystyle g(a_{i}(t),t_{i}(t)) * h(o_{j}(t),w_{ij})$ (6.17)
$\displaystyle t_{i}(t)$ $\textstyle :=$ $\displaystyle Teaching input$ (6.18)
$\displaystyle \Delta w_{ij}$ $\textstyle =$ $\displaystyle \eta(t_{i}(t)-a_{i}(t))*o_{j}(t)$ (6.19)
$\displaystyle \Delta w_{ij}$ $\textstyle =$ $\displaystyle \eta*a_{i}(t)(o_{j}(t)-w_{ij})$ (6.20)

Betrachten wir als Anwendungsfall einen linearen Assoziator, dann haben wir es nach Jordan (1986) in [101]:Kap.9 mit einem Inputvektor $v \in IN$, mit einem Gewichtsvektor $w$ (als Vektor in einer Matrix W), und mit einem Outputwert $u$ (bei mehreren Outputs auch ein Vektor) zu tun, die so verknüpft werden,


$\displaystyle u$ $\textstyle =$ $\displaystyle v\cdot w$ (6.21)

dass u den 'Bildbereich' der Vektormultiplikation von $v\cdot w$ darstellt. Dies bedeutet, dass die Anwendung des Vektorprodukts den größten Wert dort besitzt, wo der Inputvektor v und der Gewichtsvektor w die größte Übereinstimmung aufweisen. Beispiel mit einem Gewichtsvektor $w=[1 1]$:

-->IN2
 IN2  =
 
    0.    0.  
    1.    0.  
    0.    1.  
    1.    1.  
 
-->W=[1 1]
 W  =
 
    1.    1.  

-->for i=1:4, v=IN2(i,:), w=W,[u]=vecprod(v,w),end
 v  =
 
    0.    0.  
 w  =
 
    1.    1.  
 u  =
 
    0 <---
 v  =
 
    1.    0.  
 w  =
 
    1.    1.  
 u  =
 
    1 <---  
 v  =
 
    0.    1.  
 w  =
 
    1.    1.  
 u  =
 
    1  <--- 
 v  =
 
    1.    1.  
 w  =
 
    1.    1.  
 u  =
 
    2  <---

Die Bildmenge des Vektorproduktes ergibt eine geordnete Menge {0,1,2} und im einfachen Fall kann man diese geordnete Menge einfach aufteilen in eine Menge unterhalb bzw. oberhalb eines bestimmten Schwellwertes $\theta$. Mit Schwellwert $\theta = 1$ könnte man ein logisches Oder (OR) selektieren, mit Schwellwert $\theta = 2$ ein logisches Und (AND). Ein logisches exklusives Oder (XOR) wäre auf diese Weise aber nicht beschreibbar, da man dann einen Abschnitt in diesem Kontinuum definieren müsste. Mit einem einzigen Schwellwert geht dies nicht. Würde man mehr als einen Schwellwert benutzen, dann könnte man allerdings sehr wohl Abschnitte definieren. Beispiel: wenn man die Aktivierungsfunktion $a_{i.bin} = f_{i.act}(net_{i},a_{i},\theta)$ so schreiben würde, dass der Bildbereich mehrfach 'zerlegt' wird, dann könnte man natürlich auch ein XOR realisieren, z.B.


\begin{displaymath}
a_{i.bin} = \left\{
\begin{array}{r@{\quad :\quad}l}
1 & ne...
...{1} \& net_{j} < \theta_{2}  0 & sonst
\end{array} \right.
\end{displaymath}

Für den Fall des XOR würde man dann annehmen, dass gilt $\theta_{1} = 1$ und $\theta_{2} = 2$. In diesem Fall könnte der Gewichtsvektor $w=[1 1]$ bei dem Inputvektoren $[1 0], [0 1]$ eine '1' liefern und bei $[0 0], [1 1]$ eine '0'.

Man kann hier erkennen, dass die Einbeziehung eines Schwellwertes den rein vektoriellen Sachverhalt durch zusätzliche Informationen ergänzt.

Würde man mit einer hebbschen Lernregel arbeiten wollen, die keinerlei Bezug nimmt auf Schwellwerte, dann müsste man mit Neuronen arbeiten, die keinen Schwellwert besitzen. In diesem Fall könnten nur solche Inputvektoren unterschieden werden, die sich rein vektoriell im Bildbereich des Vektorproduktes unterscheiden lassen. Dies sind entweder nur Vektoren, die orthogonal zueinander sind (also Basisvektoren darstellen), oder solche, die eine Einheitslänge aufweisen mit $norm(v) = 1$.

Im Folgenden benutzen wir die folgende Version einer hebbschen Regel:


$\displaystyle \Delta w_{ij}$ $\textstyle =$ $\displaystyle g(a_{i}(t),t_{i}(t)) * h(o_{j}(t),w_{ij})$ (6.22)

Diese vereinfachen wir zu:


$\displaystyle \Delta w_{ij}$ $\textstyle =$ $\displaystyle g(a_{i},t_{i}) * h(o_{j},w_{ij})$ (6.23)
$\displaystyle h(o_{j},w_{ij})$ $\textstyle =$ $\displaystyle o_{j}$ (6.24)
$\displaystyle g(a_{i},t_{i})$ $\textstyle =$ $\displaystyle 0, if a_{i} == t_{i}$ (6.25)
  $\textstyle =$ $\displaystyle 1, if a_{i} < t_{i}$ (6.26)
  $\textstyle =$ $\displaystyle -1, if a_{i} > t_{i}$ (6.27)
$\displaystyle w_{ij}$ $\textstyle =$ $\displaystyle w_{ij}+\Delta w_{ij}$ (6.28)

Der neue Gewichtsvektor $w_{ij}$ errechnet sich dann aus dem alten Gewichtsvektor $w_{ij}$ 'angereichert' um die aktuelle 'Differenz' $\Delta w_{ij}$. Diese Differenz ist entweder (i) '0', wenn aktueller Aktivierungswert $a_{i}$ identisch ist mit dem aktuellen Teachingwert $t_{i}$, oder '+1', wenn der aktuelle Aktivierungswert kleiner ist bzw. '-1' wenn der aktuelle Aktivierungswert größer ist.



Subsections
Gerd Doeben-Henisch 2013-01-17