Mind.js — это библиотека на JavaScript, предназначенная для создания нейронных сетей и реализации базовых алгоритмов машинного обучения прямо в браузере или на сервере с Node.js. Основной упор сделан на простоту настройки и использование нейронных сетей с минимальными затратами на инфраструктуру. Mind.js позволяет моделировать как полносвязные сети, так и сети с обратной связью, что делает её гибким инструментом для образовательных и прикладных задач.
Библиотека строится вокруг трёх ключевых компонентов:
Для создания сети используется конструктор
new brain.NeuralNetwork() или
new brain.NeuralNetworkGPU() для работы на GPU. Сеть
конфигурируется через объект с параметрами:
[3, 2] создаёт два
скрытых слоя с 3 и 2 нейронами соответственно.'sigmoid', 'relu' и
'tanh'.Пример настройки сети:
const net = new brain.NeuralNetwork({
hiddenLayers: [4, 3],
activation: 'relu',
learningRate: 0.01
});
Mind.js требует, чтобы входные и выходные данные были в формате чисел
между 0 и 1. Для категориальных данных используется one-hot
encoding. Например, если есть три категории "red",
"green", "blue", они кодируются как
[1,0,0], [0,1,0] и [0,0,1].
Пример структуры данных для обучения:
const trainingData = [
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] }
];
Обучение выполняется методом train(data, options).
Основные параметры:
Пример обучения:
net.train(trainingData, {
iterations: 20000,
errorThresh: 0.005,
log: true,
learningRate: 0.01
});
После обучения сеть готова к прогнозированию. Метод
run(input) возвращает выходные данные сети:
const output = net.run([1, 0]);
console.log(output); // значение между 0 и 1
Для категориальных данных часто используют функцию
argMax для выбора наиболее вероятного результата.
Функции активации сильно влияют на поведение сети:
'sigmoid' — классическая сигмоидная функция, подходит
для выхода в диапазоне [0,1].'relu' — ускоряет обучение больших сетей, но может
«выключать» нейроны при отрицательных входах.'tanh' — аналог сигмоиды, но с диапазоном [-1,1],
полезна для нормализованных данных.Learning rate регулирует скорость изменения весов. Слишком большое значение приводит к нестабильности, слишком маленькое — к медленному обучению.
Слои и нейроны: увеличение количества скрытых слоев повышает способность сети моделировать сложные зависимости, но требует больше данных и вычислительных ресурсов.
Mind.js позволяет сохранять обученную модель в JSON и загружать её позже:
const json = net.toJSON();
const net2 = new brain.NeuralNetwork();
net2.fromJSON(json);
Это упрощает повторное использование и интеграцию сети в различные проекты без повторного обучения.
Mind.js сочетает в себе простоту использования и гибкость, что делает её удобным инструментом для изучения принципов нейронных сетей и прототипирования алгоритмов машинного обучения на JavaScript.