Brain.js — это JavaScript-библиотека для работы с нейронными сетями, предоставляющая удобный интерфейс для создания, обучения и использования моделей машинного обучения. Ключевым этапом работы с любой нейронной сетью является подготовка корректной обучающей выборки, которая напрямую влияет на точность и качество предсказаний модели.
В Brain.js используются несколько основных форматов представления данных:
Формат объектов (object format)
Используется для данных, где каждая запись представлена объектом с
входными (input) и выходными (output)
значениями.
const trainingData = [
{ input: { r: 0.03, g: 0.7, b: 0.5 }, output: { light: 1 } },
{ input: { r: 0.9, g: 0.1, b: 0.2 }, output: { dark: 1 } }
];
Важные моменты:
Формат массивов (array format)
Используется для числовых данных, где каждый пример представляет собой
массив входных и соответствующих выходных значений:
const trainingData = [
{ input: [0.03, 0.7, 0.5], output: [1, 0] },
{ input: [0.9, 0.1, 0.2], output: [0, 1] }
];
Такой формат особенно удобен для многомерных числовых задач, например для работы с временными рядами или финансовыми данными.
Нормализация — критически важный этап подготовки обучающей выборки.
Brain.js требует, чтобы входные данные находились в диапазоне
[0,1], а для бинарной классификации выходные значения также
должны быть 0 или 1.
Примеры методов нормализации:
function normalize(value, min, max) {
return (value - min) / (max - min);
}
Ключевые компоненты обучающей выборки:
input): характеристики
или признаки, используемые для предсказания.output): целевые
значения, которые сеть должна научиться предсказывать.Для сложных задач рекомендуется:
const trainingData = [
{ input: { r: 0.9, g: 0.1, b: 0.1 }, output: { red: 1 } },
{ input: { r: 0.1, g: 0.9, b: 0.1 }, output: { green: 1 } },
{ input: { r: 0.1, g: 0.1, b: 0.9 }, output: { blue: 1 } },
{ input: { r: 0.5, g: 0.5, b: 0.5 }, output: { gray: 1 } }
];
Здесь каждая запись содержит нормализованные компоненты RGB, а выходные значения кодируют конкретный цвет через бинарное представление. Такой подход позволяет нейронной сети правильно классифицировать различные оттенки.
Для повышения точности модели:
Для оценки работы сети обучающую выборку часто делят на:
Пример простого разделения данных:
const train = trainingData.slice(0, Math.floor(trainingData.length * 0.8));
const test = trainingData.slice(Math.floor(trainingData.length * 0.8));
Это позволяет контролировать качество обучения и предотвращает переобучение.
[0,1] для всех входов и выходов.Обучающая выборка должна представлять собой массив объектов с двумя
ключами: input и output, где:
input — объект или массив чисел от 0 до 1.output — объект или массив чисел от 0 до 1, описывающий
ожидаемый результат.Правильная организация и нормализация данных обеспечивает успешное обучение сети и высокую точность предсказаний.