Unterabschnitte


Aufgabe 1: Mustergenerator mit Schwellengattern

[10 Punkte, ausgegeben am 15.03.2005, Abgabe bis 12.4.2005, pdf, ps.gz]

In dieser Aufgabe sollen Sie einen rückgekoppelten Schaltkreis aus Schwellengattern konstruieren, welcher verschiedene periodische Muster generieren kann.

Konkret sollen Sie einen Schaltkreis aus 4 Schwellengattern mit synchronem update

$\displaystyle x_i(t) = \mathrm{sign} \left(\sum_{j=1}^4 w_{ij} x_j(t-1) - \vartheta_i
\right)$    für $\displaystyle i=1,\ldots, 4$   , $\displaystyle t \geq 1$    und Anfangsbed. $\displaystyle x_1(0), \ldots, x_4(0)
$

bzw. in Matrixschreibweise mit $ \vec{W} = [w_{ij}]_{i,j=1,\ldots,4}$, $ \vec{x}=\left<x_1,\ldots,x_4\right>^t$ und $ \vec{\vartheta}=\left<\vartheta_1,\ldots,\vartheta_4\right>^t$

$\displaystyle \vec{x}(t) = \mathrm{sign} \left(\vec{W} \vec{x}(t-1) - \vec{\vartheta} \right)
$

konstruieren (d.h. eine $ 4 \times 4$ Gewichtsmatrix $ \vec{W}$ und Schwellen $ \vec{\vartheta}$ finden), sodass dieser das Muster $ A$ generiert, falls das Netzwerk zum (diskreten) Zeitpunkt $ t=0$ mit $ \vec{x}(0) = \vec{a}$ initialisiert wird und das Muster $ B$ generiert, falls das Netzwerk zum (diskreten) Zeitpunkt $ t=0$ mit $ \vec{x}(0) = \vec{b}$ initialisiert wird.

$ t$ $ \vec{x}(t)$ für Muster $ A$ $ \vec{x}(t)$ für Muster $ B$
0 1000 1001
1 0100 0110
2 0010 1001
3 0001 0110
4 1000 1001
5 0100 0110
6 0010 1001
7 0001 0110
: : :
: : :

    


$ \vec{a} = \left<1,0,0,0\right>$, $ \vec{b} = \left<1,0,0,1\right>$

Matlab Programm

Der folgende Matlab Code zeigt, wie man ein rückgekoppeltes Netzwerk aus 4 Schwellengattern einfach simulieren kann. Die Funktion hardlim ist das Äquivalent zu sign.

N=4;  % Anzahl von Schwellengattern
T=12; % Anzahl von Zeitschritten

% Vektor von Schwellwerten definieren
theta = [ 0.1 0.2 0.3 0.4 ]';

% Gewichtsmatrix W definieren (hier nur ``zufaellige'' Werte)
W = [ +0.4 -0.3 +0.1 -0.2;
      +0.1 +0.9 -2.0 +4.0;
      -1.0 +2.0 +1.4 -1.0;
      +3.4 -0.1 +5.3 -2.4 ];

% Matirx für Netzwerkzustände ``allokieren''
x=zeros(N,T);

% Anfangsbedingung festlegen (Matlab Indizes starten bei 1)
x(:,1) =  [ 0.0 1.0 0.0 0.0 ]';

% Netzwerk für T Zeitschritte simulieren
for t=2:T
  x(:,t) = hardlim(W*x(:,t-1)-theta);
end

% Netzwerkzustaende ausgeben
x'


Neuronale Netzwerke B (SS05), Rober Legenstein, 2005