Brain.js — это библиотека для работы с нейронными сетями в JavaScript, которая позволяет создавать модели для предсказаний, классификации и распознавания шаблонов. Ключевым аспектом её использования является правильная подготовка и форматирование данных. От того, как представлены входные и выходные данные, зависит эффективность обучения сети и точность предсказаний.
В Brain.js данные передаются в виде числовых массивов или объектов. Основные форматы:
Массивы чисел Простейший способ передачи данных — это массив чисел, где каждый элемент соответствует определённой характеристике (feature).
Пример:
const trainingData = [
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] },
];
Здесь input — это вектор признаков, а
output — ожидаемый результат. Такой формат применяется для
задач классификации и регрессии.
Объекты с числовыми значениями Данные могут быть представлены объектами, где ключи — это имена признаков. Это удобно для работы с разнородными данными и позволяет не запоминать порядок элементов массива.
Пример:
const trainingData = [
{ input: { red: 0, green: 1, blue: 0 }, output: { light: 1 } },
{ input: { red: 1, green: 0, blue: 0 }, output: { dark: 1 } },
];Нормализация данных Brain.js ожидает, что все входные значения будут в диапазоне от 0 до 1. Если данные находятся в другом диапазоне, требуется нормализация.
Пример нормализации:
const normalizedInput = originalValue / maxValue;Выходные данные определяют, что нейронная сеть должна предсказывать. Их формат зависит от типа задачи:
Бинарная классификация Используются значения 0 и 1, либо объекты с ключами, где 1 обозначает правильный класс:
{ output: [0] } или { output: { yes: 1, no: 0 } }Множественная классификация Для задач с несколькими категориями создаются массивы с вероятностями или объекты с ключами, где сумма значений может быть равна 1:
{ output: { cat: 0.8, dog: 0.2 } }Регрессия Для предсказания числовых значений используются значения от 0 до 1, которые потом можно денормализовать в исходный диапазон:
{ output: [0.72] }Feedforward Neural Network (FFNN)
Recurrent Neural Network (RNN)
LSTM и GRU сети
One-hot кодирование: Для категориальных признаков значения превращаются в массивы, где активен только один элемент.
const colors = { red: [1,0,0], green: [0,1,0], blue: [0,0,1] };Масштабирование чисел: Любое числовое значение должно быть преобразовано в диапазон 0–1.
Токенизация текста: Для работы с текстовыми RNN данные разбиваются на символы или слова, которые затем кодируются в числовые массивы.
Использование корректно подготовленных данных напрямую влияет на скорость сходимости сети и точность предсказаний. Brain.js предоставляет гибкость в представлении данных, но строгие требования к диапазону и типу значений обеспечивают стабильность и предсказуемость работы моделей.