Машинное обучение на TypeScript: топ библиотек для ML в 2024

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

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

Начать курс

Машинное обучение на TypeScript: обзор библиотек и инструментов

TypeScript — это не просто строгая типизация для JavaScript. Благодаря своей экосистеме и совместимости с JS, он становится мощной платформой для машинного обучения (ML) прямо в браузере или на сервере (Node.js). В этой статье мы разберём четыре ключевые библиотеки, которые позволяют разрабатывать, обучать и запускать модели ML на TypeScript.

1. TensorFlow.js — флагман ML в TypeScript

TensorFlow.js — это порт популярного фреймворка TensorFlow на JavaScript/TypeScript. Он поддерживает как браузер, так и Node.js. Основное преимущество — возможность выполнять обучение и инференс (вывод) прямо на стороне клиента без отправки данных на сервер.

Установка

npm install @tensorflow/tfjs
npm install @tensorflow/tfjs-node  // для Node.js с ускорением CPU
npm install @tensorflow/tfjs-node-gpu // для GPU

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

import * as tf from '@tensorflow/tfjs';

// Создаем простую модель: y = 2x - 1
const model = tf.sequential();
model.add(tf.layers.dense({ units: 1, inputShape: [1] }));

// Компиляция
model.compile({ optimizer: 'sgd', loss: 'meanSquaredError' });

// Обучающие данные
const xs = tf.tensor2d([0, 1, 2, 3, 4], [5, 1]);
const ys = tf.tensor2d([-1, 1, 3, 5, 7], [5, 1]);

// Обучение
model.fit(xs, ys, { epochs: 250 }).then(() => {
  // Предсказание для x=5
  const output = model.predict(tf.tensor2d([5], [1, 1])) as tf.Tensor;
  output.print(); // ≈ 9 (2*5 - 1)
});

TensorFlow.js также поддерживает загрузку предобученных моделей (например, MobileNet для классификации изображений) и работу с графами вычислений.

2. ML5.js — ML для креативных проектов

ML5.js построен поверх TensorFlow.js и ориентирован на простоту использования. Идеален для художников, дизайнеров и новичков в ML. Библиотека предоставляет высокоуровневые API для задач классификации, генерации текста, распознавания жестов и т.д.

Установка

npm install ml5

Пример: классификация изображений (MobileNet)

import * as ml5 from 'ml5';

// Загружаем предобученную модель MobileNet
const classifier = ml5.imageClassifier('MobileNet');

// Классифицируем изображение по URL
const img = new Image();
img.crossOrigin = 'anonymous';
img.src = 'https://example.com/cat.jpg';

img.onload = () => {
  classifier.classify(img, (err: Error | null, results: any[]) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log('Результаты:', results);
    // [{ label: 'tabby cat', confidence: 0.98 }, ...]
  });
};

ML5.js автоматически загружает веса модели и предоставляет простой колбэк. Отлично подходит для быстрых прототипов и интерактивных инсталляций.

3. Brain.js — нейросети без сложностей

Brain.js — это библиотека для создания нейронных сетей с минимальным количеством кода. Поддерживает прямые сети, LSTM и RNN. Работает как в браузере, так и в Node.js.

Установка

npm install brain.js

Пример: XOR-функция (логическое исключающее ИЛИ)

import * as brain from '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] }
], {
  iterations: 10000,
  errorThresh: 0.005
});

const output = net.run([1, 0]); // ≈ 0.98 (близко к 1)
console.log(`Результат: ${output}`);

Brain.js автоматически нормализует данные и поддерживает сохранение/загрузку обученной модели в JSON.

4. Synaptic — архитектурная гибкость

Synaptic — это библиотека для создания сложных нейросетевых архитектур: перцептроны, многослойные сети, LSTM, сети Хопфилда и даже пользовательские топологии. Она не зависит от TensorFlow, что делает её легковесной.

Установка

npm install synaptic

Пример: прост

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