Масштабирование данных в диапазон от 0 до 1 является одной из ключевых практик при работе с нейронными сетями в Brain.js. Этот процесс обеспечивает стабильность и эффективность обучения моделей, позволяя ускорить сходимость и предотвратить переполнение активационных функций.
Нейронные сети чувствительны к диапазону входных данных. Если значения сильно отличаются по масштабу, это приводит к нескольким проблемам:
Масштабирование в диапазон 0–1 позволяет унифицировать данные и облегчить работу сети с разными признаками, особенно когда они имеют различные единицы измерения.
Наиболее популярный способ приведения данных к диапазону 0–1 — Min-Max нормализация. Формула вычисления нормализованного значения:
[ x_{norm} = ]
где:
Особенности метода:
В Brain.js входные данные обычно подаются в виде объектов с числовыми значениями. Пример нормализации:
const rawData = [
{ input: { temperature: 30, humidity: 70 }, output: { fan: 1 } },
{ input: { temperature: 25, humidity: 50 }, output: { fan: 0 } }
];
const normalize = (value, min, max) => (value - min) / (max - min);
const normalizedData = rawData.map(item => ({
input: {
temperature: normalize(item.input.temperature, 20, 40),
humidity: normalize(item.input.humidity, 40, 80)
},
output: item.output
}));
В этом примере данные о температуре и влажности приводятся к диапазону 0–1 на основе заранее известного минимума и максимума.
Для задач классификации или регрессии также важно масштабировать выходные данные. В Brain.js часто используют:
Пример масштабирования выходных данных:
const normalizeOutput = (value, min, max) => (value - min) / (max - min);
const normalizedData = rawData.map(item => ({
input: item.input,
output: { fan: normalizeOutput(item.output.fan, 0, 1) }
}));
После обучения сети необходимо вернуть предсказания к исходному масштабу. Формула обратного преобразования:
[ x = x_{norm} (x_{max} - x_{min}) + x_{min}]
Пример:
const denormalize = (value, min, max) => value * (max - min) + min;
const predicted = 0.75; // значение от сети
const originalScale = denormalize(predicted, 0, 100); // преобразуем обратно к диапазону 0–100
Масштабирование в диапазон 0–1 является фундаментальной практикой при работе с Brain.js, позволяющей эффективно подготавливать данные, управлять динамикой обучения и повышать качество предсказаний нейронной сети.