JavaScript für maschinelles Lernen: Möglichkeiten und Grenzen in der Praxis

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

JavaScript für maschinelles Lernen: Möglichkeiten und Grenzen in der Praxis

\n\n

Viele Entwickler sind gewohnt zu denken, dass maschinelles Lernen eine Domäne von Python ist. Tatsächlich dominiert das Python-Ökosystem mit den Bibliotheken TensorFlow, PyTorch und Scikit-learn in diesem Bereich. Allerdings bietet auch JavaScript (insbesondere in der Node.js-Umgebung) interessante Werkzeuge für ML. In diesem Artikel werden wir untersuchen, was mit JavaScript möglich ist, wo seine tatsächlichen Grenzen liegen und wie man die verfügbaren Bibliotheken in der Praxis einsetzt.

\n\n

Warum JavaScript für ML? Hauptszenarien

\n\n

Der Hauptvorteil von JavaScript ist seine Vielseitigkeit. Wenn Ihr Team bereits in JS schreibt und Sie keine Ressourcen haben, um Python zu lernen, können Sie einfache ML-Modelle direkt in Node.js implementieren. Die wichtigsten Anwendungsszenarien sind:

\n\n
    \n
  • Browser-basiertes maschinelles Lernen — Ausführen von Modellen direkt auf dem Client (z.B. TensorFlow.js im Browser). Ideal für Aufgaben mit sensiblen Daten (Medizin, Finanzen).
  • \n
  • Serverlösungen — Node.js eignet sich hervorragend für einfache Vorhersagen, Textklassifikation oder Stimmungsanalyse.
  • \n
  • Prototyping und Lernen — für schnelle Experimente und Konzeptdemonstrationen.
  • \n
  • Integration in das Web-Ökosystem — wenn Ihr Projekt bereits auf Node.js basiert, müssen Sie keinen separaten Python-Mikroservice aufsetzen.
  • \n
\n\n

Praktisches Beispiel: Klassifikation von Zahlen mit Brain.js

\n\n

Brain.js ist eine der einfachsten Bibliotheken für neuronale Netze in JavaScript. Sie benötigt keine GPU und eignet sich hervorragend für das Training auf der CPU. Betrachten wir ein Beispiel zur Erkennung handgeschriebener Ziffern (vereinfachte Version von MNIST).

\n\n

Zuerst installieren wir die Bibliothek:

\n
npm install brain.js
\n\n

Jetzt schreiben wir den Code zum Trainieren eines neuronalen Netzes, das die Ziffern 0 und 1 auf der Grundlage von binären 4x4-Pixel-Bildern erkennt:

\n\n
const brain = require('brain.js');\n\n// Erstellen eines neuronalen Netzes mit einer versteckten Schicht\nconst net = new brain.NeuralNetwork({ hiddenLayers: [3] });\n\n// Trainingsdaten: 16 Eingänge (4x4), 1 Ausgang (0 oder 1)\nconst trainingData = [\n    { input: [0,0,0,0, 0,1,1,0, 0,1,1,0, 0,0,0,0], output: [0] }, // Ziffer 0\n    { input: [0,0,0,0, 0,0,1,0, 0,0,1,0, 0,0,0,0], output: [1] }, // Ziffer 1\n    { input: [0,0,0,0, 1,1,1,0, 0,1,1,0, 0,0,0,0], output: [0] }, // noch eine 0\n    { input: [0,0,0,0, 0,0,1,0, 0,1,1,0, 0,0,0,0], output: [1] }  // noch eine 1\n];\n\n// Netz trainieren\nnet.train(trainingData, {\n    iterations: 2000,\n    errorThresh: 0.005,\n    log: true,\n    logPeriod: 500\n});\n\n// Testen\nconst testData = [0,0,0,0, 0,1,1,0, 0,1,1,0, 0,0,0,0]; // sieht aus wie 0\nconst result = net.run(testData);\nconsole.log(`Ergebnis: ${result[0] > 0.5 ? '1' : '0'} (Sicherheit: ${result[0].toFixed(3)})`);
\n\n

Dieses Beispiel zeigt, wie schnell ein einfaches Netz trainiert werden kann. Für eine echte MNIST-Erkennung wäre jedoch eine tiefere Architektur und Tausende von Beispielen erforderlich.

\n\n

TensorFlow.js: Ein leistungsstarkes Werkzeug für Node.js

\n\n

TensorFlow.js ist ein Port des beliebten Frameworks nach JavaScript. Es unterstützt sowohl den Browser als auch Node.js. Hier ist ein Beispiel für eine lineare Regression zur Vorhersage von Immobilienpreisen (vereinfacht):

\n\n
const tf = require('@tensorflow/tfjs-node');\n\n// Daten: Fläche (qm) -> Preis ($)\nconst xs = tf.tensor2d([50, 60, 70, 80, 90], [5, 1]);\nconst ys = tf.tensor2d([150000, 180000, 210000, 240000, 270000], [5, 1]);\n\n// Modell erstellen\nconst model = tf.sequential();\nmodel.add(tf.layers.dense({ units: 1, inputShape: [1] }));\n\n// Kompilieren\nmodel.compile({ optimizer: 'sgd', loss: 'meanSquaredError' });\n\n// Trainieren\nasync function train() {\n    await model.fit(xs, ys, { epochs: 100 });\n    \n    // Vorhersage für ein Haus mit 75 qm\n    const prediction = model.predict(tf.tensor2d([75], [1, 1]));\n    prediction.print(); // ~225000\n}\n\ntrain();
\n\n

TensorFlow.js bietet Zugriff auf die meisten

Blogs

Buchempfehlungen