Mind.js — это библиотека для создания нейронных сетей на JavaScript, ориентированная на удобство использования и наглядность структуры сети. Основное преимущество Mind.js заключается в лёгкости настройки как однослойных, так и многослойных перцептронов. Библиотека позволяет реализовать обучение с учителем, обработку числовых и бинарных данных, а также использовать сохранение и восстановление моделей.
Создание сети начинается с объявления объекта mind, в
котором можно задать параметры:
const net = new mind.NeuralNetwork({
hiddenLayers: [3], // массив количества нейронов в скрытых слоях
learningRate: 0.6 // скорость обучения
});
Ключевые моменты настройки:
hiddenLayers — задаёт структуру скрытых слоёв сети.
Можно использовать несколько слоёв, передавая массив, например
[4, 5, 3].learningRate — определяет скорость корректировки весов
на каждом шаге обучения.activation (опционально) — функция активации нейронов,
по умолчанию используется sigmoid. Можно применять
relu или tanh для более сложных задач.Данные для обучения должны быть представлены в виде массива объектов
с ключами input и output. Пример для бинарной
классификации:
const trainingData = [
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] }
];
Важно нормализовать данные, если значения выходят за пределы
диапазона [0,1] или [-1,1], в зависимости от
функции активации. Mind.js корректно работает только с числовыми
массивами одинаковой длины.
Процесс обучения реализуется с помощью метода train:
net.train(trainingData, {
iterations: 20000,
errorThresh: 0.005,
log: true,
logPeriod: 1000
});
Объяснение параметров:
iterations — максимальное количество итераций
обучения.errorThresh — целевой уровень ошибки, при достижении
которого обучение прекращается.log и logPeriod — включение и частота
вывода информации о процессе обучения.Метод возвращает объект с итоговыми показателями: количество итераций, достигнутую ошибку и скорость обучения.
После обучения сеть можно использовать для предсказаний:
const output = net.run([1, 0]); // возвращает массив с результатами
console.log(output);
Mind.js обеспечивает консистентность структуры весов, поэтому модель можно сохранять и загружать:
const json = net.toJSON();
const restoredNet = new mind.NeuralNetwork();
restoredNet.fromJSON(json);
Mind.js ориентирован на работу в средах, поддерживающих современные возможности JavaScript, включая ES6+. Для старых браузеров требуется использование полифиллов и транспиляции.
Полифиллы — это скрипты, которые реализуют современные функции JavaScript в средах, где они отсутствуют. Например:
Promise для асинхронных операций.Array.prototype.includes для проверки наличия
элемента.Object.assign для копирования объектов.Транспиляция — процесс преобразования современного JavaScript (ES6+) в более старые стандарты (ES5), чтобы код работал в устаревших средах. Для Mind.js это особенно важно при использовании:
()=>{}.class NeuralNetwork.const и let.`строка ${переменная}`.На практике используют такие инструменты, как Babel, с настройками:
{
"presets": ["@babel/preset-env"]
}
Babel позволяет автоматически добавлять полифиллы при транспиляции
через core-js:
import "core-js/stable";
import "regenerator-runtime/runtime";
Использование полифиллов и транспиляции обеспечивает совместимость Mind.js со старыми версиями браузеров, что критично для веб-приложений с широкой аудиторией.
Mind.js легко интегрируется с React, Vue и Angular, поскольку
предоставляет чистый JavaScript API. Например, в React обучение можно
запускать в useEffect, сохраняя модель в состоянии или
локальном хранилище, что позволяет динамически обучать нейросеть прямо в
браузере. При этом полифиллы и транспиляция гарантируют корректную
работу кода на мобильных устройствах и старых версиях браузеров.
Mind.js поддерживает:
Комплексное применение этих возможностей требует правильной подготовки данных, адекватного выбора структуры сети и корректного использования полифиллов для обеспечения совместимости.