В библиотеке Brain.js hiddenLayers является ключевым
параметром при создании нейронных сетей. Он определяет структуру скрытых
слоёв сети, то есть количество промежуточных слоёв между входным и
выходным слоями, а также количество нейронов в каждом из них. Именно от
конфигурации скрытых слоёв во многом зависит способность сети к обучению
и её точность при работе с различными типами данных.
Скрытые слои выполняют функцию трансформации входных данных. Каждый
слой содержит набор нейронов, которые принимают взвешенные сигналы от
предыдущего слоя и передают результаты активационной функции дальше.
Параметр hiddenLayers задаётся как массив чисел, где каждое
число указывает количество нейронов в соответствующем слое.
Пример:
const net = new brain.NeuralNetwork({
hiddenLayers: [4, 6, 4]
});
В этом примере создаётся нейронная сеть с тремя скрытыми слоями: первый слой содержит 4 нейрона, второй 6, третий — 4. Входной и выходной слои задаются автоматически в зависимости от формы входных и выходных данных при обучении.
Количество скрытых слоёв и нейронов напрямую влияет на:
Для простых задач классификации часто достаточно одного слоя с 3–5 нейронами. Для более сложных задач, например обработки изображений или временных рядов, может потребоваться несколько слоёв с большим числом нейронов.
hiddenLayers тесно связан с параметрами обучения, такими
как:
learningRate — скорость обучения, определяет, как
быстро сеть корректирует веса;momentum — помогает сглаживать колебания при обновлении
весов;activation — функция активации, влияющая на поведение
нейронов (например, sigmoid, relu).Изменение конфигурации скрытых слоёв часто требует пересмотра этих параметров, чтобы сохранить стабильность обучения и точность модели.
Пример с одним слоем:
const net = new brain.NeuralNetwork({
hiddenLayers: [5]
});
net.train([
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] }
]);
console.log(net.run([1, 0])); // приближённое значение 1
Пример с двумя слоями:
const net = new brain.NeuralNetwork({
hiddenLayers: [4, 3]
});
net.train([
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] }
]);
console.log(net.run([1, 1])); // приближённое значение 0
В этом примере добавление второго слоя позволяет сети моделировать более сложные зависимости, что может улучшить точность для нестандартных наборов данных.
Параметр hiddenLayers является фундаментальным
инструментом для настройки структуры нейронной сети в Brain.js.
Правильная конфигурация слоёв позволяет достигать баланса между
точностью модели, скоростью обучения и стабильностью работы на различных
наборах данных.