JavaScript pour l'apprentissage automatique : possibilités et limites en pratique

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

JavaScript pour l'apprentissage automatique : possibilités et limites en pratique

\n\n

De nombreux développeurs ont l'habitude de penser que l'apprentissage automatique est l'apanage de Python. En effet, l'écosystème Python avec les bibliothèques TensorFlow, PyTorch et Scikit-learn domine ce domaine. Cependant, JavaScript (notamment dans l'environnement Node.js) propose également des outils intéressants pour le ML. Dans cet article, nous allons voir ce que l'on peut faire avec JavaScript, où se situent ses véritables limites et comment utiliser les bibliothèques disponibles en pratique.

\n\n

Pourquoi JavaScript pour le ML ? Scénarios principaux

\n\n

Le principal avantage de JavaScript est sa polyvalence. Si votre équipe écrit déjà en JS et que vous n'avez pas les ressources pour apprendre Python, vous pouvez implémenter des modèles ML simples directement dans Node.js. Les principaux scénarios d'utilisation sont :

\n\n
    \n
  • Apprentissage automatique dans le navigateur — exécution de modèles directement côté client (par exemple, TensorFlow.js dans le navigateur). C'est idéal pour les tâches impliquant des données confidentielles (médecine, finance).
  • \n
  • Solutions serveur — Node.js gère très bien les prédictions simples, la classification de texte ou l'analyse de sentiment.
  • \n
  • Prototypage et apprentissage — pour des expériences rapides et des démonstrations de concepts.
  • \n
  • Intégration avec l'écosystème web — si votre projet est déjà sur Node.js, pas besoin de mettre en place un microservice Python séparé.
  • \n
\n\n

Exemple pratique : classification de nombres avec Brain.js

\n\n

Brain.js est l'une des bibliothèques les plus simples pour les réseaux de neurones en JavaScript. Elle ne nécessite pas de GPU et convient parfaitement à l'apprentissage sur CPU. Considérons un exemple de reconnaissance de chiffres manuscrits (version simplifiée de MNIST).

\n\n

Commençons par installer la bibliothèque :

\n
npm install brain.js
\n\n

Écrivons maintenant le code pour entraîner un réseau de neurones à reconnaître les chiffres 0 et 1 à partir d'images binaires de 4x4 pixels :

\n\n
const brain = require('brain.js');\n\n// Création d'un réseau de neurones avec une couche cachée\nconst net = new brain.NeuralNetwork({ hiddenLayers: [3] });\n\n// Données d'entraînement : 16 entrées (4x4), 1 sortie (0 ou 1)\nconst trainingData = [\n    { input: [0,0,0,0, 0,1,1,0, 0,1,1,0, 0,0,0,0], output: [0] }, // chiffre 0\n    { input: [0,0,0,0, 0,0,1,0, 0,0,1,0, 0,0,0,0], output: [1] }, // chiffre 1\n    { input: [0,0,0,0, 1,1,1,0, 0,1,1,0, 0,0,0,0], output: [0] }, // encore 0\n    { input: [0,0,0,0, 0,0,1,0, 0,1,1,0, 0,0,0,0], output: [1] }  // encore 1\n];\n\n// Entraînement du réseau\nnet.train(trainingData, {\n    iterations: 2000,\n    errorThresh: 0.005,\n    log: true,\n    logPeriod: 500\n});\n\n// Test\nconst testData = [0,0,0,0, 0,1,1,0, 0,1,1,0, 0,0,0,0]; // ressemble à 0\nconst result = net.run(testData);\nconsole.log(`Résultat : ${result[0] > 0.5 ? '1' : '0'} (confiance : ${result[0].toFixed(3)})`);
\n\n

Cet exemple montre à quelle vitesse on peut entraîner un réseau simple. Cependant, pour une véritable reconnaissance MNIST, une architecture plus profonde et des milliers d'exemples seront nécessaires.

\n\n

TensorFlow.js : un outil puissant pour Node.js

\n\n

TensorFlow.js est un portage du framework populaire en JavaScript. Il prend en charge à la fois le navigateur et Node.js. Voici un exemple de régression linéaire pour prédire les prix de l'immobilier (simplifié) :

\n\n
const tf = require('@tensorflow/tfjs-node');\n\n// Données : surface (m²) -> prix ($)\nconst xs = tf.tensor2d([50, 60, 70, 80, 90], [5, 1]);\nconst ys = tf.tensor2d([150000, 180000, 210000, 240000, 270000], [5, 1]);\n\n// Création du modèle\nconst model = tf.sequential();\nmodel.add(tf.layers.dense({ units: 1, inputShape: [1] }));\n\n// Compilation\nmodel.compile({ optimizer: 'sgd', loss: 'meanSquaredError' });\n\n// Entraînement\nasync function train() {\n    await model.fit(xs, ys, { epochs: 100 });\n    \n    // Prédiction pour une maison de 75 m²\n    const prediction = model.predict(tf.tensor2d([75], [1, 1]));\n    prediction.print(); // ~225000\n}\n\ntrain();
\n\n

TensorFlow.js donne accès à la plupart des

Blogs

Book Recommendations