Unterabschnitte


Aufgabe 3: Analyse eines sigmoiden Netzwerkes

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

In dieser Aufgabe sollen Sie ein gegebenes Netzwerk von sigmoiden Gattern analysieren.

Das Netzwerk besteht aus 2 Schichten von Neuronen, die durch die Vektoren $ \vec{x}(t) = \left<x_1(t),\ldots,x_N(t)\right>^t$ und $ \vec{s} =
\left<s_1,\ldots,s_N\right>^t$ repräsentiert werden.

Das Netzwerk folgt folgender Dynamik:

$\displaystyle \vec{x}(t) = \alpha \vec{x}(t-1) + (1-\alpha) \mathrm{logsig}\left(
\vec{W} \vec{x}(t-1) + \vec{R} \vec{s} \right)
$

wobei die Matrix $ \vec{W}$ die Verbindungen der $ x$-Neuronen untereinander darstellt und die Matrix $ \vec{R}$ die Verbindungen der $ s$-Neuronen zu den $ x$-Neuronen darstellt. Die genauen Werte entnehmen Sie bitte dem Matlab Programm. $ \vec{s}$ ist von der Zeit unabhängig und stellt den Input des Netzwerkes dar.

Matlab Programm

Der folgende Matlab Code zeigt, wie man das oben beschriebene Netzwerk simulieren kann.

N     = 60;    % Anzahl der Neuronen
T     = 100;   % Anzahl der Zeitschritte
alpha = 0.95;  % alpha fuer "kontinuierlichen" update

W=zeros(N,N);  % Gewichtsmatrix fuer x -> x Verbindugen
R=zeros(N,N);  % Gewichtsmatrix fuer s -> x Verbindugen

% Matrix R fuellen
b=1;
for i=1:N
  for j=1:N
    if ismember(mod(i-j,N),[ 1 N-1 2 N-2])
      R(i,j) = +b;
    elseif ismember(mod(i-j,N),[3 N-3 4 N-4 5 N-5 6 N-6])
      R(i,j) = -b/2;
    end
  end
end

% Matrix W erzeugen
W=-3*ones(N,N);
W(logical(eye(N)))=10;

% Matritzen graphisch darstellen
figure(1); clf reset;
subplot(1,2,1); imagesc(R); colorbar;
title('R','FontWeight','bold'); axis ij;

subplot(1,2,2); imagesc(W); colorbar;
title('W','FontWeight','bold'); axis ij;

% Zustandsmatrix initialisieren
x=zeros(N,T);

% "sensorischen" Input bereitstellen

%s=3*ones(N,1);                                        % konstant
%s=sin(2*pi*[0:N-1]'/N);                              % Sinuswelle
s=[zeros(1,N/3) ones(1,N/3) zeros(1,N/3) ]';          % Spruenge
%s=[zeros(1,N/3) (N/3:-1:1)/(N/3)+0.5 zeros(1,N/3) ]'; % Rampe
%s=rand(1,N)*0.5; s(30)=1;                             % zufaellig
                                                      % und s(30)=1


% Netzwerk simulieren
s=s(:);
x(:,1) = zeros(N,1);
for t=2:T
  x(:,t) = alpha*x(:,t-1)+(1-alpha)*logsig(W*x(:,t-1)+R*s);
end

% Ergebnisse darstellen
figure(2); clf reset;

subplot(2,1,1); cla reset;
imagesc(x); colorbar;
xlabel('Zeitschritt');
ylabel('Index der x-Neuronen');

subplot(2,1,2); cla reset;
plot(x(:,end)); hold on;
plot(s,'r--');
plot(R*s,'g-');
axis tight;
legend('x(T)','s','R*s');
xlabel('Neuronindex');


Neuronale Netzwerke B (SS05), Rober Legenstein, 2005