Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Roberto Prevete » 24.Dinamica di una “piccola” CTRNN


Introduzione

Nella presente lezione faremo vedere il comportamento di una rete CTRNN costituita da un solo neurone, in particolare:

  • Alcuni risultati teorici su tale rete.
  • Alcuni risultati sperimentali utilizzando matlab.

Dinamica di una “piccola” CTRNN

Studiamo ora più da vicino la dinamica di una CTRNN costituita da un unico nodo ed una unica connessione su se stesso.

Abbiamo, cioè, la seguente:

dy/dt=f(y,w,b,I,τ)=(1/τ)(-y+wσ(y+b)+I) (1)

Se non ci fosse la connessione su se stesso (w=0) la soluzione della (1) sarebbe ovviamente un esponenziale che va ad I con una costante di tempo pari a τ.

Punti fissi

Come già detto i punti fissi della (1) corrispondono agli zero di f(y,w,b,I,τ)
(in questo caso dy/dt=0).

Gli zero di f(y,w,b,I,τ) evidentemente non dipendono da τ quindi possiamo assumere τ =1.

La (1) può essere riscritta, senza perdere di generalità, come

dy/dt=f(y,w,b,I,τ)= -y+wσ(y+b)+I (2)

Punti fissi (segue)

La stabilità di tali punti dipende dal segno della derivata prima di f(y,w,b,I,τ) rispetto a y, ∂f/∂y.

Indicata con f’ tale derivata, abbiamo, allora, le seguenti condizioni di stabilità per un punto di equilibrio y0:

y0 è un punto di equilibrio stabile se f’(y0,w,b,I)<0

y0 è un punto di equilibrio instabile se f’(y0,w,b,I)>0

Punti fissi (segue)

Vediamo allora quali sono, nel nostro caso, i valori dei parametri che rendono f’(y0,w,b,I)<0.

Ricordando che f(y,w,b,I,τ)= -y+wσ(y+b)+I si ha:

f’(y0,w,b,I)=-1+wσ’(y+b)

Sapendo che σ’(x)=σ(x)(1-σ(x)) si ottiene

f’(y0,w,b,I)=-1+wσ(y+b) (1-σ(y+b)) (3)

Punti fissi (segue)

Dobbiamo appurare quali sono i valori di b e w che rendono la (3) negativa:

-1+wσ(y+b) (1-σ(y+b))<0

Il che equivale a:

wσ(y+b) (1-σ(y+b)) <1

Punti fissi (segue)

Osserviamo che

0<σ(x)<1

quindi

0≤σ(y+b) (1-σ(y+b)) ≤1/4

Questo significa che per w <4 tutti i punti di equilibrio sono stabili. Mentre per w>4 il segno della (3) dipende da w,y e b.

Quindi è possibile un cambiamento “drastico” del comportamento della rete quando w passa da valori minori di 4 a valori maggiori di 4 (punto di biforcazione).

Punti fissi (segue)

Cerchiamo di analizzare, ora, quali sono i punti fissi.

Come già detto, abbiamo supposto σ=1 quindi si ha

f(y,w,b,I,σ)= f(y,w,b,I)

I punti di equilibrio sono dati dagli y tale che f(y,w,b,I)=0.

Indichiamo con y(w,b,I) la superficie composta dai punti di equilibrio, cioè dagli y tale che f(y,w,b,I)=0.

Punti fissi (segue)

Nel nostro caso tali punti sono definiti dall’equazione:

-y+wσ(y+b)+I=0

Quindi

y-wσ(y+b) =I (4)

Tale equazione, sfortunatamente, non può essere algebricamente risolta.

Alcune soluzioni ottenute numericamente

Se assumiamo, ad esempio, b=0 e w=-20.
In questo caso si ha un unico punto di equilibrio stabile per qualunque valore di I (necessariamente stabile perché w<4).

Se assumiamo b=0 e w=20. In questo caso si vede che esistono due valore di I, chiamiamoli I1 e I2 con I1 < I2, in modo tale che per I< I1 e I>I2 si ha un unico punto di equilibrio e tale punto è anche stabile, mentre per I1< I2 si hanno tre punti di equilibrio due stabile e uno instabile. In questo ultimo caso il punto di equilibrio
instabile separa i bacini di attrazione dei due punti stabili.

Osservo come in questo caso si ha una biforcazione in quanto al passaggio di I dall’esterno all’interno dell’intervallo (I1 , I2), e viceversa, c’è un cambiamento qualitativo del comportamento del sistema.

Implementazione in matlab

Implementiamo in matlab una rete DTRNN con un unico nodo.

function y=ctrnnSingleNeuron(w_auto,teta,I,y0,c,N)
% I parametri w_auto,teta,I,y0,c,N sono tutti scalari
% Ad esempio: I=10,w_auto=2,y0=1,c=0.1, N=100
% y è una matrice 2xN, la prima riga è l'attività del
% neurone nel tempo, la seconda riga il suo output
t=zeros(2,N);
y(1,1)=y0;
y(2,1)=sigmoid(y0+teta);
for i=2:N

y(1,i)=y(1,i-1)+c*(-y(1,i-1)+w_auto*y(2,i-1)+I);
y(2,i)=sigmoid(y(1,i) + teta);

end

Implementazione in matlab (segue)

Dove la funzione sigmoid è così implementata.

function y=sigmoid(x)
…………. y= 1 ./(1 + exp(-x));

Implementazione in matlab (segue)

Allora se consideriamo w=-20, b=0, e I=-20,
Per ogni valore iniziale di y, la soluzione Converge ad un unico punto fisso (vedi figura).

Possiamo verificare tale comportamento in Matlab:

w=-20;
b=0;
I=-20
hold on;
for y0=-30:2:30
y=ctrnnSingleNeuron(w,b,I,y0,0.1,50);
plot(y(1,:),'*');
end

Soluzione numerica di una DTRNN con un solo nodo e w=-20, b=0, I=-20, per differenti valori iniziali.

Soluzione numerica di una DTRNN con un solo nodo e w=-20, b=0, I=-20, per differenti valori iniziali.


Implementazione in matlab (segue)

Se consideriamo, invece, w=20, b=0, e I=-10,
La soluzione può convergere a differenti punti fissi a secondo del valore iniziale assunto da y (vedi figura).

Possiamo verificare tale comportamento in Matlab:

w=20;
b=0;
I=-10
hold on;
for y0=-30:2:30
y=ctrnnSingleNeuron(w,b,I,y0,0.1,50);
plot(y(1,:),'*');
end

Soluzione numerica di una DTRNN con un solo nodo e w=20, b=0, I=-10, per differenti valori iniziali.

Soluzione numerica di una DTRNN con un solo nodo e w=20, b=0, I=-10, per differenti valori iniziali.


Implementazione in matlab (segue)

Se consideriamo, invece, w=20, b=0, e I=-20,
La soluzione converge di nuovo ad un unico punto fisso (vedi figura).

Possiamo verificare tale comportamento in Matlab:

w=20;
b=0;
I=-20
hold on;
for y0=-30:2:30
y=ctrnnSingleNeuron(w,b,I,y0,0.1,50);
plot(y(1,:),'*');
end

Soluzione numerica di una DTRNN con un solo nodo e w=20, b=0, I=-20, per differenti valori iniziali.

Soluzione numerica di una DTRNN con un solo nodo e w=20, b=0, I=-20, per differenti valori iniziali.


Implementazione in matlab (segue)

Oppure se consideriamo, invece, w=20, b=0, e I=20,
La soluzione converge ancora ad un unico punto fisso (vedi figura).

Possiamo verificare tale comportamento in Matlab:

w=20;
b=0;
I=20
hold on;
for y0=-30:2:30
y=ctrnnSingleNeuron(w,b,I,y0,0.1,50);
plot(y(1,:),'*');
end

Soluzione numerica di una DTRNN con un solo nodo e w=20, b=0, I=20, per differenti valori iniziali.

Soluzione numerica di una DTRNN con un solo nodo e w=20, b=0, I=20, per differenti valori iniziali.


Implementazione in matlab (segue)

Abbiamo visto, allora, come se consideriamo b=0 e w=20 esiste

un valore di I, compreso tra -20 e -10, per cui il sistema passa da un comportamento in cui ha un unico punto fisso ad uno in cui ci sono due punti fissi.

un valore di I, compreso tra -10 e 20, per cui il sistema passa da un comportamento in cui ha due punti fissi ad uno in cui c’è un unico punto fisso.

Osservo come in questo caso si ha una biforcazione in quanto al passaggio di I dall’esterno all’interno dell’intervallo (I1 , I2), e viceversa, c’è un cambiamento qualitativo del comportamento del sistema.

Alcune osservazioni finali

  • Se siamo sicuri che una rete CTRNN ha un unico punto fisso, possiamo utilizzarla per realizzare una funzione f: x ∈ Rd → f(x) Rc supponendo che x sia l’input esterno e f(x) il punto fisso corrispondente.
  • Come posso trovare i giusti pesi per realizzare la funzione desiserata?
  • Si può seguire lo stesso approccio che abbiamo mostrato per le reti feed-forward, con la differenza che per calcolare la derivata della funzione di errore dobbiamo seguire una “versione” differente della back-propagatio.
  • Ad esempio possiamo utilizzare la backpropagation through time. Qui un breve tutorial per cominciare ad approfondire tale approccio.

I materiali di supporto della lezione

A tutorial on Backpropagation Through Time

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93