Проверка корректности данных

При работе с библиотекой 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], в зависимости от выбранной функции активации.

Проверка числовых значений

Перед подачей данных на обучение или прогноз рекомендуется проверить:

  1. Тип значения – должно быть number.

    typeof value === 'number'
  2. Диапазон значений – для функции активации sigmoid допустим диапазон [0,1], для tanh[-1,1].

  3. Отсутствие NaN и Infinity – такие значения приводят к остановке обучения или некорректной настройке весов.

Проверка структуры данных

  • Для массива данных обучения каждый элемент должен содержать поля input и output.
  • В случае объектов все записи должны иметь одинаковый набор ключей. Несовпадение ключей вызывает ошибку или некорректное обучение.

Пример корректной структуры:

const trainingData = [
  { input: { a: 0, b: 1 }, output: { result: 1 } },
  { input: { a: 1, b: 0 }, output: { result: 0 } }
];

Важно: порядок ключей в объектах не влияет на работу сети, но их наличие и соответствие обязательны.

Проверка полноты данных

Для успешного обучения нейронной сети необходимо:

  • Все признаки должны быть заполнены числами. Пропуски (null или undefined) требуют предварительной обработки.
  • Категориальные признаки должны быть закодированы через one-hot encoding или нормализованы в числовой формат.

Валидация на этапе прогнозирования

После обучения необходимо убедиться, что входные данные для метода 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], чтобы ускорить обучение и улучшить сходимость.

Ошибки, связанные с некорректными данными

  1. NaN в выходных значениях – появляется при передаче неверных диапазонов.
  2. Несоответствие ключей объектов – сеть не может сопоставить вход с обучением.
  3. Разная длина массивов входа – для feedforward сетей каждый массив входа должен иметь одинаковую длину.

Практическая рекомендация

Для больших наборов данных рекомендуется заранее построить скрипт проверки, который:

  • Пробегает все записи;
  • Проверяет тип и диапазон значений;
  • Сообщает о пропущенных или некорректных ключах;
  • При необходимости автоматически нормализует числовые значения.

Такой подход минимизирует ошибки на этапе обучения и повышает точность сети.


Проверка корректности данных — фундаментальная часть работы с Brain.js. Она обеспечивает стабильность обучения, правильное формирование весов и получение корректных прогнозов, снижая риски ошибок на поздних этапах разработки нейронных сетей.