В библиотеке Brain.js входной слой нейронной сети представляет собой ключевой элемент, через который происходит первичная обработка данных перед передачей их в скрытые слои. От структуры входного слоя напрямую зависит способность сети эффективно обучаться и корректно предсказывать результаты.
Входные данные в Brain.js обычно передаются в виде объектов или массивов чисел. Формат зависит от типа сети:
[x1, x2, x3, …] или объекты
{ input1: 0.5, input2: 0.8 }.LSTM)
работают с последовательностями данных, представленных в виде массивов
чисел или строк.Все значения входного слоя должны быть нормализованы. Brain.js ожидает числа в диапазоне от 0 до 1. Для категориальных данных используется one-hot encoding, превращающий каждый возможный вариант в бинарный вектор. Например, для трёх категорий:
{ A: [1,0,0], B: [0,1,0], C: [0,0,1] }
Ненормализованные данные приводят к нестабильному обучению и затрудняют сходимость сети.
Количество нейронов входного слоя должно соответствовать числу признаков в наборе данных. Каждый нейрон отвечает за один признак. Например, если используется объект с тремя ключами:
{ temperature: 0.7, humidity: 0.4, wind: 0.2 }
— входной слой должен содержать три нейрона. Несоответствие количества нейронов и признаков приведет к ошибкам при обучении.
[0,1]. Для отрицательных значений можно использовать сдвиг
и масштабирование.Входной слой не выполняет сложных вычислений: его основная функция — подача сигналов в скрытые слои. Каждый нейрон входного слоя соединяется с каждым нейроном первого скрытого слоя, формируя полносвязную сеть. Значение каждого нейрона вычисляется как взвешенная сумма входов, передаваемая через функцию активации:
[ y_j = f({i} w{ij} x_i + b_j)]
где (x_i) — значение i-го входного нейрона, (w_{ij}) — вес между входным нейроном и j-ым нейроном скрытого слоя, (b_j) — смещение, (f) — функция активации.
Brain.js поддерживает несколько типов функций активации для входного слоя и скрытых слоев:
Функция активации влияет на скорость обучения и сходимость сети. Неправильный выбор может привести к исчезающему градиенту.
const brain = require('brain.js');
const net = new brain.NeuralNetwork({
inputSize: 3, // количество нейронов входного слоя
hiddenLayers: [5, 3], // два скрытых слоя
outputSize: 2, // выходной слой
activation: 'sigmoid' // функция активации
});
const trainingData = [
{ input: [0.1, 0.2, 0.3], output: [1, 0] },
{ input: [0.5, 0.6, 0.7], output: [0, 1] }
];
net.train(trainingData);
В этом примере входной слой состоит из трёх нейронов, соответствующих трём признакам каждого обучающего примера. Каждый нейрон подает нормализованное значение в первый скрытый слой.
Каждому нейрону входного слоя добавляется смещение, которое позволяет сети сдвигать функцию активации. Это критически важно для улучшения точности, особенно если данные не центрированы. В Brain.js смещения автоматически инициализируются случайными значениями при создании сети.
Входной слой в Brain.js служит фундаментом для построения эффективной нейронной сети. Правильная подготовка данных и корректная настройка числа нейронов и функции активации напрямую определяют успешность последующего обучения.