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 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 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 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 und ansonsten eine '1'.