Полносвязная нейронная сеть (Feedforward Neural Network) в библиотеке
Brain.js реализуется через класс NeuralNetwork. Это базовый
тип сети, в которой каждый нейрон одного слоя соединён с каждым нейроном
следующего слоя. Такая структура обеспечивает возможность моделирования
сложных нелинейных зависимостей между входными и выходными данными.
Создание сети осуществляется через конструктор:
const brain = require('brain.js');
const net = new brain.NeuralNetwork({
hiddenLayers: [3], // количество скрытых слоёв и нейронов в каждом
activation: 'sigmoid' // функция активации: 'sigmoid', 'relu', 'leaky-relu', 'tanh'
});
Параметры конструктора:
hiddenLayers — массив, задающий количество нейронов в
каждом скрытом слое. Например, [4, 5] создаёт два скрытых
слоя: первый с 4 нейронами, второй с 5.activation — функция активации. От неё зависит
нелинейность сети и скорость сходимости обучения. Чаще всего
используется 'sigmoid' для классификационных задач и
'relu' для регрессий с положительными значениями.Данные для обучения передаются в виде массива объектов, где
input — входной сигнал, а output — ожидаемый
результат:
const trainingData = [
{ input: { red: 1, green: 0, blue: 0 }, output: { color: 'red' } },
{ input: { red: 0, green: 1, blue: 0 }, output: { color: 'green' } },
{ input: { red: 0, green: 0, blue: 1 }, output: { color: 'blue' } }
];
Важно, чтобы входные значения были нормализованы (обычно в диапазоне 0–1), а выходные — либо бинарными, либо в формате one-hot encoding, если задача классификации.
Обучение сети происходит с помощью метода train:
const stats = net.train(trainingData, {
iterations: 20000, // максимальное количество итераций
learningRate: 0.01, // скорость обучения
log: true, // вывод прогресса
logPeriod: 1000, // каждые 1000 итераций
errorThresh: 0.005 // порог ошибки
});
Ключевые параметры метода train:
iterations — число эпох, в течение которых сеть будет
обновлять веса.learningRate — коэффициент, регулирующий величину шагов
при обновлении весов.log и logPeriod — позволяют отслеживать
динамику снижения ошибки во время обучения.errorThresh — цель обучения: если средняя ошибка сети
падает ниже этого значения, процесс завершится раньше.Метод возвращает объект с информацией о процессе обучения:
{
iterations: 12345,
error: 0.0048
}
После обучения сеть способна делать предсказания методом
run:
const output = net.run({ red: 0, green: 1, blue: 0 });
console.log(output); // { color: 0.01, ... }
Выход представляет собой объект с вероятностями для каждого класса. Для интерпретации результатов можно выбрать наибольшее значение.
Сеть можно сериализовать и хранить для дальнейшего использования:
const json = net.toJSON(); // экспорт в JSON
net.fromJSON(json); // восстановление сети из JSON
Это полезно для сохранения обученной модели без повторного обучения.
sigmoid, для регрессии с
положительными числами — relu. Функция tanh
обеспечивает диапазон значений от -1 до 1, что полезно для
нормализованных данных.learningRate делают обучение более стабильным, но
медленным, большие — ускоряют обучение, но могут вызвать расходимость
сети.log для контроля процесса обучения.Полносвязная сеть NeuralNetwork в Brain.js позволяет
быстро создавать простые и среднесложные модели, обеспечивая гибкость
архитектуры и прозрачность процесса обучения. Она подходит для задач
классификации, регрессии и моделирования зависимостей между многомерными
данными.