Mokapop

février 27, 2009

Adaline sur Maxima

Filed under: Uncategorized — mokawi @ 7:33

Un truc absolument fascinant que je fais ces temps-ci, ce sont des réseaux de neurones. Je suis très chanceux: Sylvain Chartier, un prof du département de psychologie, a été assez impressionné par mon travail dans son cours de perception pour me proposer de me guider dans la découverte de réseaux cognitifs (il faut dire que je lui avais pondu un réseau d’environ 3500 neurones, un truc incalculable). Cette semaine, je fais du Hopfield, et la semaine dernière, c’était un réseau Adaline.

Je vais peut-être migrer vers Mathématica, mais comme le logiciel de Wolfram prenait trop de place pour mon Eee PC, je fonctionne encore sur Maxima, un équivalent open-source beaucoup plus léger.

Bref, voici mon script Adaline en Maxima, avec quelques fonctions graphiques pour représenter le résultat. Dès que je l’aurai fait, je vous montrerai mon Hopfield.

load(draw);
f1(a,b,c) := a-2*b+c;
tf(a,b,c) := if f1(a,b,c) > 0 then 1 else -1;

matsize:3;
r[x,y]:=random(1.0);
b:random(1.0);
w:genmatrix(r,3,1);
alpha:0.1;
bstep:0.1;

wchgtol:0.05;
lgestwchg:1;

for i: 1 while lgestwchg > wchgtol do (
wold:w,
for j: 0 thru 1.0 step bstep do
for k: 0 thru 1.0 step bstep do
for l: 0 thru 1.0 step bstep do (
x:matrix([j,k,l]),
t:tf(j,k,l),

y:b+(x.w),

dif:alpha*(t-y),

b:b+dif,

maxdif:0,
for m:1 thru matsize do if maxdif < x[1,m]*dif then maxdif:x[1,m]*dif,

w:w+transpose(x)*dif
),
lwchg: 0,
for j:1 thru matsize do if lwchg < abs(w[j,1]-wold[j,1]) then lwchg:abs(w[j,1]-wold[j,1]),
display(lwchg),
lgestwchg:lwchg );

redfn(a,c,d):= b+matrix([a,c,d]).w;
display(w);
draw3d( explicit(tf(u,v,1),u,-1,1,v,-1,1),explicit(redfn(u,v,1),u,-1,1,v,-1,1), columns=2);
draw3d( explicit(tf(u,1,v),u,-1,1,v,-1,1),explicit(redfn(u,1,v),u,-1,1,v,-1,1), columns=2);
draw3d( explicit(tf(1,u,v),u,-1,1,v,-1,1),explicit(redfn(1,u,v),u,-1,1,v,-1,1), columns=2);

Laisser un commentaire »

Aucun commentaire pour l’instant.

RSS feed for comments on this post. TrackBack URI

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Propulsé par WordPress.com.

%d blogueurs aiment cette page :