Voir le flux RSS

François DORIN

Réseau de neurones avec CNTK

Noter ce billet
par , 14/08/2016 à 00h39 (1393 Affichages)
Introduction
Il y a quelques mois de cela, il y avait une sorte de guerre médiatique entre Google et Microsoft autour des réseaux de neurones. En effet, l'un comme l'autre ont publié en open-source leurs outils à quelque semaines d'intervalles :

Dans ce billet, je me concentre sur CNTK, puisque c'est sur lui que j'ai fais mes tests. Mais a priori, ce qui sera dit restera vrai pour TensorFlow.

Présentation de CNTK
CNTK est un sigle signifiant Computational Network Toolkit. Il s'agit d'outils open-source (licence MIT) développés par Microsoft dans le but de définir, d’entraîner et d'exploiter des réseaux de neurones afin de réaliser des tâches diverses et variées (reconnaissance vocale, reconnaissance d'image, analyse de texte, etc...).

Nous allons voir, à travers ce billet, ce qu'est et ce que n'est pas ce kit de développement.

Définition d'un réseau de neurones
Lorsqu'on souhaite utiliser un réseau de neurones pour résoudre une problématique, il faut suivre les grandes étapes suivantes :
  1. Définir la problématique à résoudre ;
  2. Définir les entrées du problème ;
  3. Définir les sorties du problème ;
  4. Obtenir un jeu de données suffisamment conséquent ;
  5. Concevoir la topologie du réseau à utiliser ;
  6. Implémenter cette topologie ;
  7. Entraîner le réseau ainsi défini ;
  8. Tester le réseau ;
  9. Et enfin l'exploiter.

CNTK, même s'il rend bien des services, n'est pas une boîte magique omnisciente qui va automatiquement réaliser toutes les étapes pour vous. L'analyse du problème, et sa définition reste une tâche incombant au développeur, de même que l'obtention du jeu de données. Autrement dit, CNTK ne vous dédouane pas d'avoir les connaissances nécessaires pour savoir quel type de réseau et quelle topologie est le mieux adapté pour répondre à un problème particulier.

Là où CNTK va pouvoir vous aider, c'est à partir de la phase d'implémentation. Une fois que vous aurez défini la topologie de votre réseau, il suffira de décrire cette topologie avec une syntaxe particulière, propre à CNTK, afin de réaliser :
  • L'implémentation ;
  • L'entraînement ;
  • Le test du réseau ;
  • L'exploitation du réseau.

Les types de réseaux
Précédemment, j'ai présenté CNTK comme étant un ensemble d'outils pour définir, entraîner et exploiter des réseaux de neurones. Voici une liste un peu plus détaillée des types de réseaux actuellement supporté par ce kit :

Cette liste n'est pas exhaustive, mais liste les principaux types de réseaux supportés.

Savoir le type de réseau utiliser et comment le configurer sort du cadre de ce billet (et de mes compétences !). Définir un réseau nécessite des connaissances poussées sur le sujet, et seule une lecture de la littérature permet de savoir quel type d'approche correspond le mieux à un type de problème donné.

Conclusion
Pour approfondir le sujet, je vous invite à regarder les tutoriels disponibles sur le compte Github du projet :

Envoyer le billet « Réseau de neurones avec CNTK » dans le blog Viadeo Envoyer le billet « Réseau de neurones avec CNTK » dans le blog Twitter Envoyer le billet « Réseau de neurones avec CNTK » dans le blog Google Envoyer le billet « Réseau de neurones avec CNTK » dans le blog Facebook Envoyer le billet « Réseau de neurones avec CNTK » dans le blog Digg Envoyer le billet « Réseau de neurones avec CNTK » dans le blog Delicious Envoyer le billet « Réseau de neurones avec CNTK » dans le blog MySpace Envoyer le billet « Réseau de neurones avec CNTK » dans le blog Yahoo

Commentaires