Accueil



Random Recurrent Neural Networks

Comment utiliser le simulateur de Réseaux de Neurones Récurrents Aléatoires sur Matlab.

Téléchargement et installation

Vous pouvez télécharger le noyau permettant de simuler des RRNN's ici.

Le dossier "Noyau" contient les fichiers suivants :
  • f_heavy.m
  • f_tanh_01.m
  • f_trans.m
  • init_dyn.m
  • init_J.m
  • init_sequence.m
  • init_systeme.m
  • init_theta.m
  • iter_dyn.m
  • ppcm.m
L'ensemble de ces fichiers peut etre utilisé comme une toolbox RRNN en l'ajoutant dans votre Path Matlab.

UK

La structure d'un réseau

Un réseau est décrit à l'aide sous forme d'un objet Matlab. Cet objet contient l'ensemble des variables qui decrivent le réseau : paramètres, et variables globales.
Avant d'utiliser les fonctions du noyau, il est nécessaire de définir un certain nombre de paramètres.

Paramètres pour un réseau récurrent à poids gaussiens à une population

Exemple de fonction d'initialisation :



function net=init_param_rrnn:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                 PARAMETRES GENERAUX                   %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

net.fichier_I={''};     % net.fichier_I décrit le nom d'un fichier
                        % contenant
                        % la description du signal à appliquer au réseau
 
net.N=500;              % net.N : taille du réseau
       
net.dim=0;              % net.dim : topologie des liens :
                        % 0 : pas de topologie
                        % 1 : topologie 1D
                        % 2 : topologie 2D

net.densite=1;          % densité de connexion (entre 0 et 1)
        
net.f_trans={'tanh_01'};    % net.f_trans : nom de la fonction de
                            % transfert
                            % 'tanh_01' (tangente hyperbolique à valeurs
                            %  sur [0,1])
                            % 'heavy' (heavyside)
                           
net.distr={'gauss'};        % net.distr : distribution de poids :
                            % 'gauss' : distribution gaussienne
                            % 'unif' : distribution uniforme
                           
net.g=5;                    % paramètre de gain de la fonction de
                            % transfert
  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                       LE SIGNAL                       %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

net.I= {sparse(net.N,1)};       % Pas de signal d'entree

net.flag_I = 0;                 % net.flag_I : booléen qui active l'entree

net.bruit_I=0;                  % net.bruit_I : taux de bruit sur l'entree

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                       LES POIDS                       %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

net.J_barre = 0;            % net.J_barre : valeur moyenne des poids

net.sigma_J = 1;            % net.sigma_J : ecart-type des poids
       
net.tau_min=1;              % net.tau_min : delai de transmission minimal
               
net.tau_moy=0;              % net.tau_moy : parametre pour la
                            % distribution de poisson
                            % (la valeur 0 indique des delais constants)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                       LES SEUILS                      %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

net.theta_barre=0;          % net.theta_barre : valeur moyenne du seuil

net.sigma_theta=0;          % net.sigma_theta : ecart-type du seuil

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                       APPRENTISSAGE                   %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

net.alpha=0.1;              % net.alpha : parametre d'apprentissage
                            % (regle l'intensité de la modification des poids)

net.beta=0.1;               % net.beta : parametre qui regle la mise à
net.beta_=1-net.beta;       % jour de l'activation moyenne.

net.feed=0;         % net.feed : booléen indique l'ajout
                    % d'un terme de feedback dans la regle
                    % d'apprentissage

net.app='mem';     % net.app : regle le type d'apprentissage
                   % 'mem' : regle de Hebb de type covariance
                   % 'delta' : regle de Hebb fondee sur la difference
                   %           d'activation
                   % 'hebb' : regle de hebb elementaire

net.norm_alpha=1;  % net.norm : normalisation du terme d'apprentissage
                   % (par population)

net.renf=0;        % net.renf : booléen qui active l'apprentissage par
                   % renforcement

net.script_out='';   % net.script_out : donne le nom d'un fichier script
                     % qui peut s'exécuter parallèlement à la dynamique  

net.script_init='';  % net.script_init : donne le nom d'un fichier script
                     % qui initialise la dynamique externe


Simulation d'un réseau

On utilisera les commandes suivantes :

>> net=init_param_rrnn;
>> net=init_systeme(net,num);

(où num est le numéro du réseau)
>> net=init_dyn(net);
>> net=iter_dyn(net,nbp,0);

(itération de la dynamique sans apprentissage, nbp est le nombre de pas de temps)
>> net=iter_dyn(net,nbp,1);
(itération de la dynamique avec apprentissage)
>> net.g=6
(modification de la valeur de g)
>> net=iter_dyn(net,nbp,0);
>> net.sigma_theta=0.2; net.num_theta=autre_num; net=init_theta(net);
(où autre_num est le numéro du motif des seuil)
>> net=iter_dyn(net,nbp,0);
>> net.theta{1}=0;
(suppression du motif)
etc...



Visualiser l'activité du réseau

Pour visualiser la distribution des poids : 
          hist(nonzeros(net.J{1}{1}{1}),30);
Pour visualiser la distribution de la somme des poids afférents  :    
                    hist(sum(net.J{1}{1}{1}'),20);
Pour visualiser l'activité du neurone num :
         
plot(net.DYN_X{1}(num,:));
Pour visualiser l'activité moyenne du réseau  :    
                    plot(mean(net.DYN_X{1}));
Pour visualiser l'activité de tous les neurones :    
                    imagesc(-net.DYN_X{1});colormap(gray);