network


réseaux neuronaux

Principe
adaptatif        apprentissage
brush
dynamic
fac
fonction de transfert
law
mass        matrix      motif      multi
neural brush
propriete
texture
vol
Voir aussi

Principe

Voir:
le manuel sur les réseaux neuronaux
le cours sur les réseaux neuronaux
le cours sur le connexionnisme
Un réseaux neuronal est défini par son type:
network dynamic: réseau dynamique
network fac: perceptron multicouche
network texture: réseau de kohonen
fac network: définit une couche de neuronnes par leurs numéros
mass network: affecte des poids aux synapses (liaisons entre neurones)
matrix network: définit la matrice de ces poids
motif network: Définit des entrees sur la 1ère couche
law network: définit des sorties sur la dernière couche
motif network et law network définit des couples d´apprentissage.
validate network: réalise l´apprentissage pour les couples (motif,law)
generate network(id)fac(h): modifie ne nombre de couches cachées h
validate motif network retourne la sortie du réseau pour une entrée donnée
neuron network: accède à un neuronne d´un réseau
limit law network: permet de filtrer les sorties
Il est conseillé de normaliser les motifs et les lois (entre 0.0 et 1.0), et les masses entre (-1.0 et 1.0)

Apprentissage

validate network(id) permet d´entrainer le réseau id selon son son type (fac, texture ou near).
Des propriétés permettent de définir un apprentissage adaptatif:
meta alea network(id): réinitialise périodiquement de la matrice lorsque l´error reste trop longtemps au en dessous de 50% (avec une fréquence fonction de la moyenne).
meta coe network(id): diminution périodique des constantes d´apprentissage lorsque l´error reste trop longtemps entre 10% et 50%.
displ network(id) permet de modifier interactivement ces coefficients.

matrix network

matrix network(id)

       Retourne la matrice des poids synaptiques des connexions entre les neurones.
       mass(n1,n2)network(id) retourne le poids de la connexion entre le neuronne n1 et le neuronne n2. de la matrice du réseau id.

matrix network(id)=m1,m2,...

       Modifie la matrice.
       mass(n1,n2)network(id)=m modifiee le poids de la connexion entre le neuronne n1 et le neuronne n2.
       Cette matrice est générée automatiquement par la commande generate network. Les connexions actives sont décrites dans les facettes du réseau. Remarquons que pour un réseau adaptatif toutes les connexions sont actives (réseau complètement connecté). Les poids sont initialisés aléatoirement et peuvent être modifiés par generate mass network(id).

Environnement multireseaux

validate motif(M) network(r1,r2,...)

       Détermine le réseau ri dont un motif est le plus proche de m et fait:
validate motif(m) network(ri)
validate inv law(L) network(r1,r2,...)
       Détermine le réseau ri dont une law est la plus proche de L et retourne le motif correspondant (cette fonction simule une "intentionnalité").

network propr1 propr2 vol

network(r)propr1 propr2[fac(nf)]vol(id)

       Crée le réseau neuronal r local au volume id ayant pour entrées les paramètres de la propriété propr1, pour sorties les bornes des paramètres de la propriété propr2.

network brush

network brush(id)

       Retourne l´identificateur du (ou des ) réseau(x) associé(s) au pinceau id.

network brush(id)=idr

       Modifie cet identificateur.
Remarque:
Il faut avoir défini un réseau dont les motifs d´entrées sont des images et dont les lois de sorties sont d´autres images. Lorsque le pinceau est activé l´image luminance qu´il voit dans la fenêtre (de dimensions ses rayons) est passée en entrée au réseau qui donne, en sortie, l´image luminance affichée sous le pinceau.

network brush(id)=numr,numv,numb

       Modifie cet identificateur.
Remarques:
1) Lorsque le pinceau est activé l´image RVB qu´il voit dans la fenêtre (de dimensions ses rayons) est passée en entrée aux réseaux numéros numr pour la composante rouge, numv pour la composante verte et numb pour la composante bleue, qui donnent, en sortie, les composantes R, V et B de l´image affichée sous le pinceau.
2) Les 3 réseaux numr, numv, numb doivent être isomorphes (motifs et lois de mêmes dimensions).

network dynamic

network(id)dynamic

       construit le réseau id type dynamic.
l´ensemble des motifs est le flux d´entrée.
l´ensemble des lois est le flux de sortie dynamiquement calculé par l´ algorithme de cohérence de flux.

network fac

network(id)

       Construit le réseau d´identificateur id de type fac perceptron multi couches (type par défaut).

network(id)fac(nh)motif(nm,dm)law(nl,dl))NP(np)rand

construit le réseau d´identificateur id de np motifs aléatoires de taille (nm,dm) dm=1 par défaut, de np lois aléatoires de taille (nl,dl) dl=1 par défaut et de nh (0 par défaut) couches cachées.

network(id)dim(nm,nl,nc)

       Construit le réseau neuronal id de type fac avec n = dimension des motifs, nl = dimension des lois et nc = nombre de couches cachées (6,6,1 default).
Pour définir des couches de neurones (entrée, cachées, sortie):
fac(0)network(id)=n1,n2,...;
Pour définir des couples d´apprentissage:
       Pour définir des motifs d´entrée:
motif(0)network(id)=...;
       Pour définir des lois de sortie:
law(0)network(id)=...;
Pour générer les neurones et la matrice des poids synaptiques:
generate network(id);
Les facettes décrivent les liaisons non nulles de la matrice des poids qui sont initialisés aléatoirement entre -1 et 1.
La fonction de transfert est initialisée à (1,1) (sigmoïde)

network texture

       Construit le réseau d´identificateur id de type texture Kohonen
Pour définir des couches de neurones (entrée, cachées, sortie):
fac(0)network(id)=n1,n2,...;
Pour définir des motifs d´entrée:
motif(0)network(id)=...;
Pour générer les neurones et la matrice des poids synaptiques:
generate network(id);
La matrice des poids est initialisée aléatoirement entre -1 et 1
La fonction de transfert est initialisée à (1,1) (sigmoïde)

network near

network(id)near

       Définit le réseau de type complètement connecté id. Un tel réseau se configure automatiquement de façon à ce que le flux de sortie (les lois) soit en phase avec le fux d´entrée (les motifs) par l´algorithme de la "cohérence de flux".
       network(id)near; construit le réseau id.
       motif(0)network(id)=m; construit un motif d´entrée.
       generate network(id); génére les neurones et la matrice des poids synaptiques.
       validate(nb,cpt)error(err)coe(c1,c2)network(id); entraine le réseau.
       exec network(id); calcule les sorties du réseau id.
      
speed law(num)network(id); retourne la vitesse de la law numéro num du réseau id.
       speed motif(num)network(id); retourne la vitesse du motif numéro num du réseau id.

network vol

       Certains problèmes complexes relatifs à un volume idv, dont on ne connait pas d´algorithme de résolution, peuvent être traités par des méthodes connexionnistes. Pour cela:
1) Créer la propriété        network propr1 propr2 vol(idv)=idr;
2) creer un réseau idr
perceptron.
3) Définir des couples d´apprentissages (M=entrée,L=sortie) par:
motif(0)network(r)=M;.
law(0)network(r)=L;.
4) Entrainer le réseau n fois par:
validate(n)network(idr);.
ou dynamiquement, à chaque image, par:
validate(1)network(idr);
Il reconnait alors les L en fonction des M, et lorsque l´on donne un M non appri en entrée, le réseau sort un S cohérent.
5) Au cours d´une animation, à chaque image (typiquement dans une fonction func(4,"F4") faire:
validate propr1 propr2 vol(id):
       Passe en entrée du réseau la valeur de la propriété propr1, la sortie donne la valeur de la propriété propr2.
Par exemple le problème de l´ajustement des rotations du volume numéro 1 en fonction de son axis est résolu de la façon suivante:
1) Créer le réseau:
       network(1)axis rota fac(3)vol(1);
       Construit le réseau numéro 1 de 7 neurones:
(1,2,3) sur la couche d´entrée recevant les axes (x,y,z).
(4,5) sur la couche cachée.
(6,7) sur la couche de sortie délivrant les bornes (a1,a2).
2) Créer les motifs (valeurs des axes):
motif(0)network(1)=1,0,0;
motif(0)network(1)=0,0,1;
motif(0)network(1)=-1,0,0;

3) Créer les lois (valeurs des rota):
law(0)network(1)=0;
law(0)network(1)=.5*PI;
law(0)network(1)=PI;

4) Entrainer le réseau une seule fois:
validate(1000)network(r);
ou dynamiquement en faisant à chaque image: validate(1)network(1);
5) A chaque image faire:
validate axis rota vol(1); L´axis (x,y,z) du volume 1 est passé en entrée du réseau qui délivre une sortie (a1,a2), l´angle a de rotation du volume id est alors forcé entre a1 et a2.

Voir aussi:

alea law network
alea motif network
dim law network
dim motif network
displ network
fac network
generate network
generate mass network
generate network fac
limit law network
law network
matrix network
mass network
motif network
neuron
roll network
validate motif network
validate network