Brain.js — это библиотека на JavaScript для создания и обучения нейронных сетей. Она позволяет реализовать как простые, так и сложные модели машинного обучения непосредственно в браузере или на сервере с Node.js. Библиотека ориентирована на удобство использования, предоставляя высокоуровневый API для работы с различными типами сетей.
В Brain.js реализованы несколько ключевых типов сетей:
Каждый тип сети имеет свои методы для обучения и прогнозирования, а также конфигурационные параметры, влияющие на точность и скорость работы.
Прямое распространение создается через:
const brain = require('brain.js');
const net = new brain.NeuralNetwork({
hiddenLayers: [10, 10], // два скрытых слоя по 10 нейронов
activation: 'relu', // функция активации
learningRate: 0.01 // скорость обучения
});
Ключевые параметры:
hiddenLayers — массив, задающий количество нейронов в
каждом скрытом слое.activation — функция активации: 'sigmoid',
'relu' или 'leaky-relu'.learningRate — скорость корректировки весов во время
обучения.Сеть обучается на наборах данных в виде объектов:
const trainingData = [
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] }
];
Входные данные (input) должны быть нормализованы до
диапазона [0, 1] или [-1, 1] в зависимости от
выбранной функции активации. Выходные данные (output)
формируются аналогично.
Для обучения сети используется метод train:
net.train(trainingData, {
iterations: 20000, // максимальное количество итераций
errorThresh: 0.005, // порог ошибки
log: true, // вывод прогресса в консоль
logPeriod: 1000 // частота логирования
});
Важные моменты:
iterations определяет максимальное число проходов по
всем обучающим примерам.errorThresh останавливает обучение при достижении
указанной точности.log и logPeriod позволяют отслеживать
процесс оптимизации.После обучения сеть используется для прогнозирования:
const output = net.run([1, 0]); // [0.987] или близкое значение
Результат возвращается в виде массива чисел от 0 до 1. Для задач
классификации часто применяют пороговую фильтрацию
(> 0.5).
Рекуррентные сети (RNN и LSTM) позволяют обрабатывать последовательные данные. Их инициализация отличается:
const net = new brain.recurrent.LSTM();
net.train([
{ input: 'Привет', output: 'Здравствуйте' },
{ input: 'Как дела?', output: 'Хорошо' }
]);
const response = net.run('Привет'); // 'Здравствуйте'
Особенности:
Для долгосрочного использования можно сериализовать сеть:
const json = net.toJSON();
const net2 = new brain.NeuralNetwork();
net2.fromJSON(json);
Сериализация сохраняет веса и структуру, что позволяет возобновлять работу без повторного обучения.
brain.js с WebGL или Node.js для ускорения вычислений.learningRate и activation
позволяет адаптировать сеть под конкретную задачу.Brain.js обеспечивает баланс между простотой реализации и мощностью нейронных сетей, позволяя быстро строить модели машинного обучения как для учебных целей, так и для реальных приложений.