Функции потерь: MSE, MAE, categorical_crossentropy, binary_crossentropy

Функция потерь (loss function) — ключевой компонент при обучении нейронной сети. Она измеряет расхождение между предсказаниями модели и реальными значениями, определяя направление оптимизации весов. В Keras.js функции потерь используются аналогично Python-версии Keras, но с учётом особенностей работы в браузере и ограничений JavaScript.


MSE (Mean Squared Error)

Определение: Среднеквадратичная ошибка вычисляется как среднее значение квадратов разностей между предсказанными и истинными значениями:

[ = _{i=1}^{n} (y_i - _i)^2]

где (y_i) — истинное значение, (_i) — предсказание модели.

Особенности использования в Keras.js:

  • Применяется для задач регрессии.
  • Чувствительна к выбросам, так как квадратичная функция усиливает влияние больших ошибок.
  • В Keras.js задаётся при компиляции модели:
model.compile({
    optimizer: 'adam',
    loss: 'meanSquaredError'
});

Примечание: для небольших данных и медленно меняющихся функций MSE обеспечивает стабильное обучение.


MAE (Mean Absolute Error)

Определение: Средняя абсолютная ошибка рассчитывается как среднее значение модулей разностей между предсказанными и реальными значениями:

[ = _{i=1}^{n} |y_i - _i|]

Особенности:

  • Более устойчив к выбросам по сравнению с MSE.
  • Подходит для задач, где важна средняя величина ошибки, а не её квадратичное усиление.
  • В Keras.js используется аналогично MSE:
model.compile({
    optimizer: 'adam',
    loss: 'meanAbsoluteError'
});
  • Идеальна для моделей, предсказывающих распределения с резкими скачками.

categorical_crossentropy

Определение: Функция кросс-энтропии для многоклассовой классификации. Используется, когда выход модели — вероятности классов, получаемые через softmax.

[ = - _{i=1}^{C} y_i (_i)]

где (C) — число классов, (y_i) — бинарный индикатор правильного класса, (_i) — предсказанная вероятность.

Особенности применения:

  • Требует one-hot кодирования истинных меток.
  • Чувствительна к уверенности модели: неверно предсказанные высокие вероятности сильно увеличивают ошибку.
  • В Keras.js задаётся так:
model.compile({
    optimizer: 'adam',
    loss: 'categoricalCrossentropy'
});
  • Часто используется совместно с softmax на выходном слое.

binary_crossentropy

Определение: Функция кросс-энтропии для бинарной классификации. Используется для задач с двумя классами.

[ = -[y () + (1-y) (1-)]]

где (y ), () — вероятность принадлежности к классу 1.

Особенности:

  • Подходит для задач с одним выходным нейроном и активацией sigmoid.
  • Увеличивает штраф за уверенные ошибки, что ускоряет коррекцию весов.
  • Пример использования в Keras.js:
model.compile({
    optimizer: 'adam',
    loss: 'binaryCrossentropy'
});
  • Важно следить за корректностью диапазона выходных значений: должны быть строго в интервале [0,1].

Практические рекомендации по выбору функций потерь

  • Регрессия без выбросов: MSE обеспечивает плавное обучение.
  • Регрессия с выбросами: MAE снижает влияние экстремальных значений.
  • Многоклассовая классификация: categorical_crossentropy + softmax.
  • Бинарная классификация: binary_crossentropy + sigmoid.

При работе в Keras.js оптимизация и обучение моделей полностью повторяют логику Python-версии, но требуется учитывать специфику работы с асинхронностью и WebGL, если используется для ускорения вычислений в браузере.