NeuralNetworkGPU — это специализированная версия
классической нейронной сети NeuralNetwork библиотеки
Brain.js, оптимизированная для работы на графических процессорах (GPU).
Использование GPU позволяет существенно ускорить обучение и обработку
больших массивов данных, особенно при многослойных сетях или при работе
с высокоразмерными входными данными.
Ключевые особенности:
NeuralNetwork.Создание сети осуществляется через конструктор
NeuralNetworkGPU. Основные параметры конфигурации:
const { NeuralNetworkGPU } = require('brain.js');
const net = new NeuralNetworkGPU({
hiddenLayers: [64, 32], // массив, определяющий количество нейронов в каждом скрытом слое
learningRate: 0.01, // скорость обучения
activation: 'relu', // функция активации ('sigmoid', 'relu', 'leaky-relu', 'tanh')
});
Пояснения параметров:
hiddenLayers — определяет структуру сети. Чем больше
нейронов и слоёв, тем выше способность сети моделировать сложные
функции, но увеличивается время обучения.learningRate — влияет на скорость обновления весов.
Слишком высокое значение может привести к нестабильности обучения,
слишком низкое — к медленному сходимости.activation — функция активации, влияющая на
нелинейность модели. Для GPU рекомендуется relu или
leaky-relu из-за их эффективной реализации.NeuralNetworkGPU поддерживает входные данные в формате числовых массивов или объектов с бинарными/вещественными значениями.
Примеры форматов данных:
const trainingData = [
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] },
];
const trainingData = [
{ input: { a: 0, b: 1 }, output: { result: 1 } },
];
Важные моменты:
[0, 1]. Это критично для стабильного обучения на GPU.Функция train имеет схожий синтаксис с CPU-версией, но
внутренние вычисления происходят на GPU:
net.train(trainingData, {
iterations: 20000, // количество эпох
errorThresh: 0.005, // порог ошибки для остановки обучения
log: true, // вывод логов прогресса
logPeriod: 100, // частота логирования
});
Рекомендации по обучению:
iterations и уменьшить learningRate.errorThresh, чтобы избежать переобучения.После обучения сеть можно использовать для получения предсказаний с
помощью метода run:
const output = net.run([1, 0]);
console.log(output); // вероятностный результат
Особенности:
run возвращает значения в диапазоне [0, 1]
для каждого выходного нейрона.output > 0.5 ? 1 : 0).NeuralNetworkGPU поддерживает сериализацию модели, что позволяет сохранять её состояние и использовать без повторного обучения:
const json = net.toJSON();
const restoredNet = new NeuralNetworkGPU();
restoredNet.fromJSON(json);
Пояснения:
toJSON сохраняет архитектуру сети, веса и
конфигурацию.fromJSON позволяет восстановить сеть с сохранёнными
параметрами на GPU, готовую к предсказаниям.Для максимального ускорения на GPU стоит учитывать следующие моменты:
NeuralNetworkGPU поддерживает несколько функций активации, каждая из которых имеет свои особенности:
[0, 1], но может страдать от затухающего градиента.Выбор функции активации напрямую влияет на скорость сходимости и точность сети.