Brain.js — это библиотека для работы с нейронными сетями в JavaScript, предоставляющая удобный интерфейс для построения моделей как для задач классификации, так и для регрессии. Понимание различий между этими типами задач критично для правильного выбора архитектуры сети и подхода к подготовке данных.
Классификация — это процесс определения категории
или класса, к которому принадлежит входной объект. В Brain.js
классификация часто реализуется с помощью NeuralNetwork или
NeuralNetworkGPU, где сеть обучается на наборе входов и
соответствующих метках классов.
Регрессия — это задача предсказания непрерывного значения. Здесь сеть моделирует зависимость между входными данными и числовым результатом. Brain.js поддерживает регрессионные задачи через ту же архитектуру нейронной сети, но с отличием в подготовке данных и интерпретации выхода сети.
Классификация:
Входные данные должны быть нормализованы в диапазоне
[0,1].
Выход сети кодируется в виде one-hot вектора:
{
input: { красный: 1, зелёный: 0, синий: 0 },
output: { яблоко: 1, банан: 0 }
}Для нескольких классов выходной вектор имеет столько элементов, сколько категорий.
Регрессия:
Входные данные также нормализуются, чтобы ускорить обучение и избежать численной нестабильности.
Выход сети — непосредственное числовое значение:
{
input: { температура: 0.6, влажность: 0.3 },
output: { потреблениеЭнергии: 0.75 }
}Значение может быть скалярным или многомерным, если требуется предсказание нескольких величин.
Классификация:
sigmoid.sigmoid для вероятностей.Регрессия:
identity), чтобы сеть могла
выдавать любые значения.Brain.js использует train метод с объектом настроек,
который отличается при работе с регрессией и классификацией:
Пример для классификации:
const net = new brain.NeuralNetwork({ hiddenLayers: [3] });
net.train(data, {
iterations: 20000,
errorThresh: 0.005,
log: true,
logPeriod: 100
});
Пример для регрессии:
const net = new brain.NeuralNetwork({ hiddenLayers: [5] });
net.train(data, {
iterations: 50000,
learningRate: 0.01,
errorThresh: 0.001,
log: true
});
Особенности:
Классификация:
Результат сети — объект с вероятностями для каждого класса.
Для выбора итогового класса используется максимальное значение:
const output = net.run({ красный: 1, зелёный: 0, синий: 0 });
// output = { яблоко: 0.9, банан: 0.1 }Регрессия:
Результат сети — число или набор чисел, представляющих прогноз.
Не требуется выбор максимума, так как значение уже численное:
const output = net.run({ температура: 0.6, влажность: 0.3 });
// output = { потреблениеЭнергии: 0.73 }Brain.js предоставляет гибкую основу для построения как классификационных, так и регрессионных моделей, и понимание различий между этими подходами позволяет создавать более точные и эффективные нейронные сети.