Машинное обучение на JavaScript: библиотеки для Node.js

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Машинное обучение на JavaScript: библиотеки для Node.js

Хотя Python остаётся доминирующим языком в области машинного обучения, экосистема JavaScript (особенно Node.js) активно развивается и предлагает мощные инструменты для ML. Использование JavaScript позволяет создавать ML-решения, которые легко интегрируются с веб-приложениями, работают в реальном времени на сервере или даже в браузере. Если ваш проект уже использует Node.js, внедрение библиотек машинного обучения может быть более органичным, чем переключение на Python.

В этой статье мы рассмотрим ключевые библиотеки для машинного обучения на JavaScript (Node.js), их особенности и примеры использования.

1. TensorFlow.js

TensorFlow.js — это наиболее мощная и популярная библиотека для машинного обучения на JavaScript, портированная с оригинального TensorFlow. Она поддерживает выполнение моделей как в браузере, так и в Node.js, используя аппаратное ускорение через CUDA или WebGL.

Основные возможности:

  • Запуск предобученных моделей (MobileNet, BERT, YOLO).
  • Обучение нейронных сетей с нуля.
  • Трансферное обучение (дообучение существующих моделей).
  • Поддержка GPU через CUDA на Node.js.
  • Конвертация моделей из Python TensorFlow (формат TFJS).

Пример: линейная регрессия с TensorFlow.js

const tf = require('@tensorflow/tfjs-node');

// Данные: x -> y (y = 2x - 1)
const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);

// Создание модели
const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [1]}));
model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});

// Обучение
model.fit(xs, ys, {epochs: 200}).then(() => {
    // Предсказание для x = 5
    model.predict(tf.tensor2d([5], [1, 1])).print();
});

2. Brain.js

Brain.js — простая и интуитивно понятная библиотека для нейронных сетей. Отлично подходит для новичков и небольших проектов. Поддерживает многослойные перцептроны (MLP), рекуррентные сети (RNN) и сети с долгой краткосрочной памятью (LSTM).

Основные возможности:

  • Минимальный порог входа — API в несколько строк.
  • Поддержка асинхронного обучения для избежания блокировки.
  • Сохранение и загрузка обученных моделей в JSON.
  • Работа как в Node.js, так и в браузере.

Пример: XOR с Brain.js

const brain = require('brain.js');

const net = new brain.NeuralNetwork();

// Обучающие данные для XOR
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.99
console.log(output);

3. Synaptic

Synaptic — архитектурно-независимая библиотека для нейронных сетей. Она позволяет конструировать практически любые типы сетей: перцептроны, многослойные сети, сети с памятью (LSTM), сети Хопфилда и другие. Библиотека не имеет внешних зависимостей.

Основные возможности:

  • Гибкость в построении архитектур.
  • Поддержка различных алгоритмов обучения (SGD, Momentum, Nesterov).
  • Визуализатор сети (в браузере).
  • Поддержка сохранения/загрузки моделей.

Пример: простая нейронная сеть с Synaptic

const synaptic = require('synaptic');
const {Layer, Network, Trainer} = synaptic;

const inputLayer = new Layer(2);
const hiddenLayer = new Layer(3);
const outputLayer = new Layer(1);

inputLayer.connect(hiddenLayer);
hiddenLayer.connect(outputLayer);

const myNetwork = new Network({input: inputLayer, hidden: [hiddenLayer], output: outputLayer});
const trainer = new Trainer(myNetwork);

// Обучение на XOR
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(myNetwork.activate([1, 0])); // [~0                    

Рекомендаций