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

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

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

Начать курс

Машинное обучение на JavaScript (Node.js): библиотеки и инструменты

Хотя Python остаётся доминирующим языком для машинного обучения, JavaScript (особенно платформа Node.js) стремительно набирает популярность в этой области. Это связано с возможностью запускать модели прямо в браузере, унификацией стеков (full-stack JS) и появлением мощных библиотек для работы с нейронными сетями, линейной алгеброй и статистикой. В этой статье мы рассмотрим ключевые библиотеки машинного обучения для Node.js, их возможности и примеры использования.

1. TensorFlow.js — флагман машинного обучения в JS

TensorFlow.js — это порт популярного фреймворка Google, адаптированный для JavaScript. Он позволяет обучать модели с нуля, запускать предобученные модели и выполнять инференс как в Node.js, так и в браузере. Библиотека поддерживает GPU-ускорение через WebGL (в браузере) или CUDA (через Node.js-аддон).

Установка:

npm install @tensorflow/tfjs @tensorflow/tfjs-node

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

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

// Обучающие данные
const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
const ys = tf.tensor2d([2, 4, 6, 8], [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(() => {
  // Предсказание
  model.predict(tf.tensor2d([5], [1, 1])).print();
});

Ключевые возможности:

  • Полная поддержка нейронных сетей (сверточные, рекуррентные, трансформеры)
  • Загрузка моделей из Keras (Python) и TensorFlow Hub
  • Работа с графами вычислений и автоматическое дифференцирование
  • Встроенные инструменты для визуализации (tfjs-vis)

2. Brain.js — простота и удобство

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

Установка:

npm install brain.js

Пример: классификация XOR

const brain = require('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.98
console.log(output);

Особенности:

  • Минимальный порог входа — всего несколько строк кода
  • Встроенная поддержка нормализации данных
  • Возможность сохранения и загрузки обученных моделей в JSON
  • Поддержка рекуррентных сетей (LSTMTimeStep, GRUTimeStep)

3. Synaptic — модульная архитектура

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

Установка:

npm install 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.project(hiddenLayer);
hiddenLayer.project(outputLayer);

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

const trainer = new Trainer(myNetwork);
trainer.train([
  {input: [0, 0], output: [0]},
  {input: [0, 1], output: [1]},
  {input: [1, 0], output: [1]},
  {input: [1, 1], output: [0]}
]);

console.log(myNetwork.activate([1, 0])); // [0.987]

Преимущества:

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