Théorie


Mathématiquement, on connait la formule du neurone formel permettant de transmettre de l'information de neurone en neurone à travers des synapses.

Cette formule a été utilisée en pratique dans un algorithme dans lequel des neurones s'échangent des informations numériques.
Nous avons donc un réseau de neurones contenant des entrées numériques, et des sorties numériques.

Script gère tout seul l'équilibrage des poids des neurones pour reproduire un apprentissage de connaissance par l'expérience.
Une fonction permet de traiter ce calcul étape par étape pour donner un aspect temporel au traitement de données du réseau de neurones (ia_upgrade).
A chaque étape temporelle, le réseau de neurones se voit attribué une note qui évalue ses performances. A partir de cette valeur numérique, il sait si ses actes sont meilleurs ou non que les précédents. Il peut ainsi apprendre par l'expérience.

Contrôler des véhicules, reconnaître des formes, retenir des informations, les réseaux de neurones ont de grandes capacités, aussi fascinantes que nombreuses.
Les fonctions suivantes simplifient l'aspect mathématique des réseaux de neurones pour mettre à disposition directement un rendu fonctionnel.

Bien que parfois surprenants, les réseaux de neurones ne sont pas des entitées conscientes. L'aspect temporel est simulé, et toute observation n'est que le résultat d'un calcul mathématique.
Ne soyez donc pas surpris si un réseau de neurones devine tout seul ce qu'on attend de lui.

Pratique

ia_create();
Créé un nouveau réseau de neurones vide et retourne son identifiant.
ia_delete(id);
Supprime le réseau de neurones d'identifiant id.
ia_add(id, var, option);
Donne les droits d'accès de la variable var au réseau de neurones d'identifiant id. La variable doit être renseignée sous forme de chaîne de caractères, et doit être de type numérique. Le paramètre option permet de renseigner les droits d'accès à la variable, droits de lecture et/ou d'écriture sur la variable ("i"=input(lecture), "o"=output(écriture), "io"=les deux).
ia_remove(id, var, option);
Retire les droits d'accès de la variable var au réseau de neurones d'identifiant id. Les options renseignées sont les droits d'accès à retirer.
ia_award(id, val);
Donne la note val aux performances du réseau de neurones d'identifiant id. Si la note est bien jaugée, le réseau de neurones saura progresser tout seul, en apprenant de ses erreurs, et en s'appuyant sur ses réussites. Si cette fonction est utilisée plusieurs fois de suite, les notes seront additionnées.
ia_upgrade(id);
Fait évoluer le réseau de neurones d'identifiant id en fonction de la note précédemment attribuée.
ia_execute(id);
Exécute le réseau de neurones d'identifiant id, de sorte qu'il lise les variables d'entrée, et qu'il écrive son résultat dans les variables de sortie.
ia_progress(id);
Retourne une note de performance estimée du réseau de neurones d'identifiant id.
ia_save(id, file);
Enregistre le réseau de neurones d'identifiant id dans le fichier file.
ia_load(file);
Charge un réseau de neurones enregistré précédemment dans le fichier file. La fonction retourne l'identifiant du réseau de neurones chargé.

Optimisation

Attention, les réseaux de neurones doivent impérativement être optimisés pour éviter qu'ils ne fassent n'importe quoi, jusqu'à faire planter Script.
Voici quelques règles à savoir lorsqu'on attribue une note à un réseau de neurones:

- Si on ne sanctionne pas un type d'erreur, ou un abus de la part d'un réseau de neurones, celui-ci persévèrera dans cette direction (par exemple, s'il est récompensé proportionnellement à une valeur qu'il retourne, alors il va comprendre qu'il a tout intérêt à retourner des valeurs gigantesques. Et ce, jusqu'à faire planter Script. Tenez votre réseau de neurones en laisse).

- Un réseau de neurones trop récompensé, aveuglé par les récompenses, ne fera plus le moindre effort pour s'améliorer.

- Si une valeur de sortie est laissée sans surveillance, sans récompense ni sanction pour la maintenir dans un intervalle, le réseau de neurones tentera de modifier sa valeur vers des résultats non désirés.

- Les réseaux de neurones ne sont pas spécialisés dans le multi-tâches. Si des valeurs d'entrée ne lui sont logiquement pas utiles pour déterminer les valeurs de sortie, elles ne feront que destabiliser le réseau de neurones lors de ses tentatives d'apprentissage. Donnez leur juste l'essentiel.

- Les réseaux de neurones peuvent travailler main dans la main, à la chaîne, pour travailler ensemble sur un objectif commun. La répartition du travail améliore nettement la qualité du résultat mais il devient plus compliqué de leur attribuer une note individuelle.