Neurones à tout faire

Les réseaux de neurones profonds sont une technologie permettant aux machines d’apprendre à partir d’exemples puis de faire des prédictions sur un nouveau cas. Ils sont très utiles lorsqu’on a de nombreuses données observées -comme des données comptables, médicales, psychologiques- mais qu’on ignore totalement de loi générale permettant de prédire une nouvelle configuration. Il est certes possible de s’en remettre aux statistiques, mais celles-ci supposent qu’il existe des corrélations significatives entre les paramètres et le résultat. Les réseaux de neurones ne présupposent rien.

Ce n’est pas une technologie nouvelle (mon premier réseau de neurones date de 1993), mais la puissance des processeurs rend maintenant possible de traiter des masses de données, avec des neurones connectés sur plusieurs niveaux. Dans cet article, je vous propose d’en faire une application destinée à montrer le fonctionnement de cette technologie.

Le problème

boxImaginons une bouteille spéciale constituée d’un volume surmonté d’une demi-sphère. Cette bouteille est caractérisée par des dimensions (HxLxH) et est commercialisée en deux tailles L et XL. Je ne sais pas calculer le volume. Il varie aléatoirement, car la bouteille est produite selon un procédé artisanal. Pour mesurer le volume, il faut la remplir d’eau. La bouteille a une forme intérieure irrégulière ce qui ne permet pas de calculer par la géométrie le volume.

Une bouteille est de taille XL lorsque le volume est plus grand que la moyenne (194,44cm3). Je dispose de nombreuses mesures anciennes (dans mon cas une centaine), listées dans le tableau.

Table des mesures de volume 0=L et 1=XL
h L H Taille
1 6 2 0
7 9 9 1
4 5 10 1
1 10 7 0
1 4 9 0
4 5 4 0
2 6 4 0
7 10 7 1
3 6 1 0
6 1 7 0
8 9 6 1
9 2 9 0
nnn nnn nnn T
7 8 9 1
7 7 9 1
2 4 4 0
3 4 4 0
4 9 8 1
5 9 1 0
10 4 9 1

Je produis alors une nouvelle bouteille dont je peux mesurer les dimensions. Est-il possible de savoir, sans la remplir d’eau, si elle doit être commercialisée en L ou en XL?

La solution

Pour cet exemple, je vais utiliser la librairie Tensorflow de Google. D’abord, je vais construire un réseau de neurones simple à trois couches connectées entre elles.


model = Sequential()
#première couche 8 neurones attendant 3 entrées(H,L et h)
model.add(Dense(8, input_dim=3, init='uniform', activation='relu')) 
#seconde couche 4 neurones cachés
model.add(Dense(4, init='uniform', activation='relu'))
#troisième 1 neurone disant si la bouteille est grande ou petite
model.add(Dense(1, init='uniform', activation='sigmoid'))
# Compilation du modèle.
model.compile(loss='binary_crossentropy', optimizer='adadelta', metrics=['accuracy'])
Je vais ensuite l’entrainer en lui soumettant les mesures antérieures:
model.fit(X, Y, nb_epoch=100, batch_size=2)
Exemple de réseau de neurone

Exemple de réseau de neurones profond

Ce modèle prédit alors à 95,7% les cas observés. Le calcul du volume étant en fait possible sans aspérité intérieure (un parallélépipède et une demi-sphère), nous pouvons lui soumettre de nouveaux cas pour lesquels nous disposons des dimensions H,L,h.

Dans cet exemple, je les ai tirés aléatoirement et le modèle prédit une catégorie juste (L ou XL) dans 96,4% des cas sur 1000 nouvelles bouteilles produites.

 

Puissamment dangereux

Vous l’avez compris, cette technologie est fantastique, car elle permet à partir d’observations passées de déterminer les conséquences d’un évènement nouveau. Toutefois la réponse est incertaine. Par exemple, imaginons que je fasse apprendre à mon réseau de neurones à déterminer, à partir de paramètres médicaux variés (tension, âge, sexe, couleur des yeux, taux de glucose dans le sang)  que j’aurais acquis antérieurement- l’information: ce sujet a fait une crise cardiaque, ou pas. Si je rencontre une nouvelle personne et que je soumets ses données au réseau de neurones, il va répondre, par exemple, que cette personne ressemble plutôt à quelqu’un de décédé d’une crise cardiaque, par exemple à 87%. Mais contrairement à un diagnostic médical, où le praticien peut justifier son diagnostic par une déduction logique, le réseau de neurones ne le permet pas. Il ne donne qu’une intuition.

La tentation est grande, en face d’une masse de données apparemment incohérentes, de s’en remettre à cette technologie plutôt qu’à rechercher, bien difficilement, une loi ou une règle permettant de les comprendre. Certains pensent déjà que le traitement massif et sans état d’âme des données permettra de se passer de comprendre pour pouvoir prédire. Après tout, une nouvelle génération d’antibiotique a bien été inventée par IBM et son intelligence artificielle, Watson, se débrouille plutôt bien en diagnostic.

 

Télécharger cet article au format PDF ou ePub

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.