Нейронная сеть — это вычислительная модель, вдохновлённая биологическими нейронами. Она состоит из множества взаимосвязанных узлов (нейронов), которые обрабатывают информацию и способны выявлять закономерности в данных. В JavaScript библиотека Brain.js предоставляет удобный инструмент для создания и обучения нейронных сетей прямо в среде веб-приложений или серверного JavaScript.
Brain.js поддерживает несколько типов нейронных сетей:
Feedforward Neural Network (Прямое распространение) Данные проходят последовательно от входного слоя к выходному. Используется для задач классификации и регрессии.
Recurrent Neural Network (Рекуррентная сеть,
RNN) Позволяет обрабатывать последовательные данные, такие как
текст или временные ряды. В Brain.js реализована через RNN,
LSTM и GRU.
Time Step Networks Модификация RNN, полезная для задач предсказания временных рядов, где важно учитывать последовательность событий.
Для начала работы необходимо импортировать библиотеку и создать экземпляр сети:
const brain = require('brain.js');
const net = new brain.NeuralNetwork({
hiddenLayers: [10, 10],
activation: 'sigmoid'
});
Ключевые параметры:
hiddenLayers — массив, определяющий количество нейронов
в каждом скрытом слое.activation — функция активации, которая влияет на то,
как нейрон преобразует входной сигнал. Brain.js поддерживает
'sigmoid', 'relu' и
'leaky-relu'.Нейронные сети требуют нормализованных данных. Для классификации это часто массивы чисел от 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 используется для обучения на подготовленных
данных:
net.train(trainingData, {
iterations: 20000,
learningRate: 0.01,
log: true,
logPeriod: 1000
});
Основные параметры обучения:
iterations — количество проходов по всему набору
данных.learningRate — скорость корректировки весов
нейронов.log и logPeriod — позволяют отслеживать
процесс обучения.После обучения сеть готова к предсказаниям:
const output = net.run([1, 0]);
console.log(output); // Результат работы сети
Выход сети может быть числом (для регрессии) или массивом вероятностей (для классификации).
RNN и LSTM сети Brain.js применяются для генерации текста или анализа последовательностей. Пример создания RNN:
const rnn = new brain.recurrent.LSTM();
rnn.train([
{ input: "привет", output: "здравствуйте" },
{ input: "как дела", output: "всё хорошо" }
]);
Для генерации текста используется метод run, который
возвращает предсказанный результат на основе входной
последовательности.
Brain.js позволяет сохранять состояние сети для последующего использования:
const json = net.toJSON();
const net2 = new brain.NeuralNetwork();
net2.fromJSON(json);
Это позволяет обучать сеть один раз и использовать её многократно без повторного обучения.
Нейронные сети в Brain.js подходят для задач классификации, прогнозирования и генерации последовательностей. Благодаря гибкой настройке архитектуры и обучающих параметров, можно создавать как простые модели, так и сложные системы анализа данных прямо в JavaScript-приложениях.