Réseau de neurones
Un article de Wikibot.
Les réseaux de neurones sont un des outils le plus connu des l'intelligence artificielle. Le principe est très largement inspiré des neurones biologiques.
[modifier] Présentation
Un réseau de neurone, c'est un terme bien compliqué pour désigner ni plus ni moins que ça : Réseau N Un système de N entrées qui calcul P sorties. Les E/S peuvent être de tout genre, entier, flottant, analogique (pourquoi pas ..?), binaire ...etc. L'intérêt d'un tel système, c'est de pouvoir approximer une fonction complexe.
Plus précisément, voilà ce qu'on trouve dans la boite. Voici quelques représentations d'un réseau de neurones, suivant que vous soyez ... Pour les débutants, un petit schema explicatif (cf wikipedia) : http://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Neural_network.svg/300px-Neural_network.svg.png
Pour les matheux, un schema qu'on y comprend rien : Image:Exemple.jpg
Pour les informaticiens, une fonction de 10 lignes :
U8 reseau_neurones(float * E)
{
extern U8 PWM[8];
const float w1[3][3] = {{-0.17755, 0.75281, -2.3756},{0.69198, 1.1077, -1.2802},{252.3404, -465.9036, 85.8515}};
const float w2[3] = {-0.50556, 0.59447, -0.28489};
const float b1[3] = {2.6557,-0.45892,-100.4901};
const float b2[1] = {0.87802};
float a[3],y;
a[0] = E[0]*w1[0][0] + E[1]*w1[0][1] + E[2]*w1[0][2] + b1[0]; // Calcule premiere couche
a[1] = E[0]*w1[1][0] + E[1]*w1[1][1] + E[2]*w1[1][2] + b1[1]; // de neurones
a[2] = E[0]*w1[2][0] + E[1]*w1[2][1] + E[2]*w1[2][2] + b1[2]; //
a[0] = tanh(a[0]); // Fonction non linéaire
a[1] = tanh(a[1]); // Tanh
a[2] = tanh(a[2]); //
y = a[0]*w2[0] + a[1]*w2[1] + a[2]*w2[2] + b2[0]; // Calcul de la 2eme couche
return((U8)y);
}

