Функция потерь (loss function) является фундаментальным понятием в машинном обучении. Она измеряет разницу между предсказанными моделью значениями и реальными данными, задавая критерий качества обучения. В библиотеке Brain.js функции потерь используются для корректировки весов нейронной сети во время процесса обучения.
В контексте нейронных сетей задача сводится к минимизации ошибки. Функция потерь выполняет две ключевые роли:
y_pred и истинным
значением y_true в числовой показатель.Функция потерь формализуется как:
[ L(y_{}, y_{}) , L ]
где (L) — значение потерь, (y_{}) — целевое значение, (y_{}) — предсказанное сетью.
Brain.js предоставляет встроенные функции потерь, а также возможность использовать пользовательские функции. Наиболее часто применяемые функции:
Используется для регрессионных задач. Формула:
[ = _{i=1}^{n} (y_i - _i)^2]
Где (n) — количество обучающих примеров. MSE чувствительна к крупным ошибкам, что делает её эффективной при необходимости строгой корректировки больших расхождений между предсказанием и реальностью.
В Brain.js настройка MSE выполняется через объект конфигурации сети:
const net = new brain.NeuralNetwork({
learningRate: 0.01,
errorThresh: 0.005,
log: true,
logPeriod: 100,
});
Здесь errorThresh указывает целевое значение функции
потерь, при котором обучение останавливается.
Применяется для задач классификации. Она измеряет различие между распределением вероятностей предсказанных моделью и истинными классами:
[ H(p, q) = - _i p_i q_i]
В Brain.js можно использовать для сетей типа
NeuralNetwork с функцией train:
const net = new brain.NeuralNetwork({
activation: 'sigmoid',
learningRate: 0.01
});
net.train(trainingData, {
errorThresh: 0.01,
iterations: 20000
});
Для классификационных задач Cross-Entropy обеспечивает быстрое сходимость на малых данных, особенно если выходные значения нормализованы.
Brain.js поддерживает возможность передачи собственной функции потерь
через параметр train:
const net = new brain.NeuralNetwork();
net.train(trainingData, {
iterations: 10000,
errorFn: (target, output) => {
let sum = 0;
for (let key in target) {
sum += Math.abs(target[key] - output[key]);
}
return sum / Object.keys(target).length;
}
});
В приведённом примере используется средняя абсолютная ошибка (MAE). Такие функции позволяют точнее контролировать чувствительность сети к различным типам ошибок.
Функция потерь в Brain.js является центральным инструментом для настройки нейронной сети, позволяя не только измерять точность предсказаний, но и направлять обучение для оптимизации модели под конкретную задачу.