Bsp.2: OR

In diesem Beispiel soll die logische OR Funktion gelernt werden.

-->TR2
 TR2  =
 
    0.  
    1.  
    1.  
    1.  
 
-->W=[0 0]
 W  =
 
    0.    0.  
 
-->for i=1:4, v=IN2(i,:), w=W,[u]=vecprod(v,w),if(u < TR2(i)) then g=1, elseif (u > TR2(i)) then g=-1, else g=0,end, end
 v  =
 
    0.    0.  
 w  =
 
    0.    0.  
 u  =
 
    0.  
 g  =
 
    0.  
 v  =
 
    1.    0.  
 w  =
 
    0.    0.  
 u  =
 
    0.  
 g  =
 
    1.

Bei dem Inputvektor $v=[1 0]$ tritt ein erster Konflikt auf. Die Lernregel wird angewendet.

 
-->v=[1,0], W=W+v
 v  =
 
    1.    0.  
 W  =
 
    1.    0. 

-->for i=1:4, v=IN2(i,:), w=W,[u]=vecprod(v,w),if(u < TR2(i)) then g=1, elseif (u > TR2(i)) then g=-1, else g=0,end, end
 v  =
 
    0.    0.  
 w  =
 
    1.    0.  
 u  =
 
    0.  
 g  =
 
    0.  
 v  =
 
    1.    0.  
 w  =
 
    1.    0.  
 u  =
 
    1.  
 g  =
 
    0.  
 v  =
 
    0.    1.  
 w  =
 
    1.    0.  
 u  =
 
    0.  
 g  =
 
    1.

Der nächste Konflikt tritt dieses Mal bei $v=[0 1]$ auf. Die Lernregel wird angewendet.

-->v=[0 1], W=W+v
 v  =
 
    0.    1.  
 W  =
 
    1.    1.

Strenggenommen müsste dieser Durchlauf akzeptiert werden, aber ... es gibt noch ein Hindernis:

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

Im Falle des Inputvektors $v=[ 1 1]$ würde die korrekte Antwort '1' lauten. Das Vektorprodukt liefert aber natürlich eine '2'. In der trainingsmenge wurde eine '1' notiert. Da '2' arithmetisch größer als '1' ist wird eine Differenz angezeigt. Der 'Idee nach' wurde der Vektor richtig klassifiziert, nur die konkreten Werte 'stimmen nicht'. Man kann dies auf mehrfache Weise 'reparieren': (i) Man schreibt in die Trainingsmenge TR2 statt einer '1' eine '2', oder (ii) man benutzt als Funktion nicht das einfache Vektorprodukt sondern schreibt eine Neuronfunktion, innerhalb deren die Aktivierungsfunktion eine '0' liefert wenn $net()== 0$ und ansonsten eine '1'.



Gerd Doeben-Henisch 2013-01-17