Машинное обучение на 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 Также в библиотеке
Криптография в C++: шифрование и хеши на OpenSSL и Crypto++
inversify для TypeScript: полное руководство с примерами
Миграции баз данных в C# (.NET): Entity Framework, FluentMigrator и другие подходы
PDF генерация в Rust: обзор библиотек и инструментов для создания PDF-документов
Cheerio для JavaScript (Node.js): полное руководство с примерами