При работе с библиотекой Brain.js, как и с любыми нейронными сетями, критически важно обеспечить корректность входных данных. Неправильный формат или несоответствующие значения могут привести к некорректному обучению и плохой точности прогнозов.
Brain.js поддерживает несколько типов данных для обучения нейронных сетей:
Массивы чисел – чаще всего значения
нормализуются в диапазоне от 0 до 1. Например:
[0.1, 0.5, 0.9].
Объекты с числовыми свойствами – ключи объекта соответствуют признакам, а значения – числовым данным:
{ feature1: 0.2, feature2: 0.8 }Объекты с бинарными значениями – используются для категориальных данных:
{ cat: 1, dog: 0, bird: 0 }Ключевой момент: Brain.js не выполняет
автоматическую нормализацию для всех типов данных. Входные значения
должны быть приведены к диапазону [0,1] или
[-1,1], в зависимости от выбранной функции активации.
Перед подачей данных на обучение или прогноз рекомендуется проверить:
Тип значения – должно быть
number.
typeof value === 'number'Диапазон значений – для функции активации
sigmoid допустим диапазон [0,1], для
tanh — [-1,1].
Отсутствие NaN и Infinity – такие значения приводят к остановке обучения или некорректной настройке весов.
input и output.Пример корректной структуры:
const trainingData = [
{ input: { a: 0, b: 1 }, output: { result: 1 } },
{ input: { a: 1, b: 0 }, output: { result: 0 } }
];
Важно: порядок ключей в объектах не влияет на работу сети, но их наличие и соответствие обязательны.
Для успешного обучения нейронной сети необходимо:
null или undefined) требуют предварительной
обработки.После обучения необходимо убедиться, что входные данные для метода
run соответствуют формату данных обучения:
const output = net.run({ a: 0.5, b: 0.8 });
Если структура отличается, Brain.js может вернуть неожиданные значения или NaN.
Функции валидации – собственные функции, которые проверяют тип, диапазон и полноту признаков.
Массивные проверки – можно использовать методы
Array.every и Array.map для проверки каждого
элемента:
const isValid = trainingData.every(item =>
typeof item.input.a === 'number' &&
typeof item.input.b === 'number' &&
typeof item.output.result === 'number'
);Нормализация данных – для числовых значений
полезно заранее привести данные к диапазону [0,1], чтобы
ускорить обучение и улучшить сходимость.
feedforward сетей каждый массив входа должен иметь
одинаковую длину.Для больших наборов данных рекомендуется заранее построить скрипт проверки, который:
Такой подход минимизирует ошибки на этапе обучения и повышает точность сети.
Проверка корректности данных — фундаментальная часть работы с Brain.js. Она обеспечивает стабильность обучения, правильное формирование весов и получение корректных прогнозов, снижая риски ошибок на поздних этапах разработки нейронных сетей.