Apprentissage automatique en TypeScript : aperçu des bibliothèques ML en 2024
TypeScript occupe avec confiance une niche non seulement dans le développement web, mais aussi dans la Data Science. Grâce à son typage statique et à sa compatibilité avec JavaScript, il devient un outil pratique pour construire des modèles d'apprentissage automatique (ML) qui fonctionnent directement dans le navigateur ou sur le serveur (Node.js). Dans cet article, nous allons passer en revue les bibliothèques clés pour l'apprentissage automatique en TypeScript, leurs caractéristiques, des exemples de code et des scénarios d'utilisation.
1. TensorFlow.js — le framework principal pour le ML dans le navigateur
TensorFlow.js est un portage du framework populaire TensorFlow en JavaScript/TypeScript. Il permet d'exécuter l'entraînement et l'inférence de modèles à la fois dans le navigateur et dans Node.js. La bibliothèque prend en charge l'accélération GPU via WebGL et WebGPU, ce qui offre un gain de performance.
Principales fonctionnalités :
- Création de réseaux de neurones à l'aide d'une API de haut niveau (tf.sequential, tf.model).
- Chargement de modèles pré-entraînés depuis TensorFlow Hub.
- Conversion de modèles de la version Python de TensorFlow au format .json.
- Travail avec des tenseurs, des optimiseurs et des couches.
Exemple : régression linéaire en TypeScript
import * as tf from '@tensorflow/tfjs';
// Données : relation y = 2x - 1const xs = tf.tensor2d([-1, 0, 1, 2, 3, 4], [6, 1]);const ys = tf.tensor2d([-3, -1, 1, 3, 5, 7], [6, 1]);
// Création du modèleconst model = tf.sequential();model.add(tf.layers.dense({units: 1, inputShape: [1]}));
// Compilationmodel.compile({optimizer: 'sgd', loss: 'meanSquaredError'});
// Entraînementmodel.fit(xs, ys, {epochs: 250}).then(() => { model.predict(tf.tensor2d([10], [1, 1])).print(); // Sortie : ~19 (proche de 2*10 - 1 = 19)});2. ML5.js — une bibliothèque pour le ML créatif
ML5.js est construite au-dessus de TensorFlow.js et est conçue pour la simplicité d'utilisation. Elle fournit des modèles prêts à l'emploi pour la reconnaissance d'images, de sons, de textes et de gestes. Idéale pour les projets éducatifs et le prototypage.
Exemple : classification d'images
import * as ml5 from 'ml5';
// Chargement du modèle pré-entraîné MobileNetconst classifier = ml5.imageClassifier('MobileNet');
// Classification de l'imageconst img = document.getElementById('myImage') as HTMLImageElement;classifier.classify(img, (err: Error | null, results: any[]) => { if (err) console.error(err); else console.log('Résultat :', results[0].label);});3. Brain.js — réseaux de neurones pour Node.js et le navigateur
Brain.js est une bibliothèque légère pour construire des réseaux de neurones en JavaScript/TypeScript. Elle prend en charge différentes architectures : LSTM, RNN, GRU. Idéale pour les tâches de prévision de séries temporelles et de traitement de texte.
Exemple : réseau de neurones simple pour XOR
import brain from 'brain.js';
const net = new brain.NeuralNetwork();
net.train([ { input: [0, 0], output: [0] }, { input: [0, 1], output: [1] }, { input: [1, 0], output: [1] }, { input: [1, 1], output: [0] }]);
const output = net.run([1, 0]); // ~0.99console.log(output);4. Synaptic — une bibliothèque flexible sur le plan architectural
Synaptic permet de créer des réseaux de neurones de n'importe quelle architecture, y compris les perceptrons multicouches, les réseaux récurrents et les cartes auto-organisatrices de Kohonen. Elle ne nécessite pas de dépendances et fonctionne dans le navigateur.
Exemple : création d'un perceptron
import { Architect, Trainer } from 'synaptic';
const network = new Architect.Perceptron(2, 3, 1);const trainer = new Trainer(network);
trainer.train([ { input: [0, 0], output: [0] }, { input: [0, 1], output: [1] }, { input: [1, 0], output: [1] }, { input: [1, 1], output: [0] }], { iterations: 1000 });
console.log(network.activate([1, 0])); // ~0.985
Aussi dans la bibliothèque
Génération Swagger/OpenAPI pour C++ : meilleurs outils et bibliothèques
Rate Limiting en JavaScript (Node.js) : Guide complet de la bibliothèque express-rate-limit
Event Bus et le pattern Observer en Swift : implémentation et exemples
Parsing HTML en PHP : DOMDocument, SimpleXML et cURL pour le web scraping