Машинное обучение на 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]
Преимущества:
- Полный контроль над архитектурой сети
Также в библиотеке
Генератор QR-кодов на Go (Golang) с библиотекой go-qrcode
ts-node-dev для TypeScript: полное руководство с примерами
Конфигурация приложений Node.js: лучшие инструменты и подходы
Реактивное программирование в Go (Golang): библиотеки, паттерны и примеры
xUnit / NUnit для C# (.NET): полное руководство с примерами