réseaux neuronaux
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: