Функции потерь (loss functions) играют ключевую роль в процессе
обучения нейронных сетей. Они измеряют расхождение между предсказанными
значениями модели и фактическими метками данных. В TensorFlow.js функции
потерь реализуются через API tf.losses и могут
использоваться как при компиляции моделей, так и при ручной оптимизации
через градиентный спуск.
Определение: Среднеквадратичная ошибка вычисляется как среднее значение квадратов разностей между предсказанными и истинными значениями.
[ = _{i=1}^{n} (y_i - _i)^2]
где (y_i) — истинное значение, (_i) — предсказанное.
Особенности применения:
tf.losses.meanSquaredError(labels, predictions).Пример:
const labels = tf.tensor1d([1, 2, 3]);
const predictions = tf.tensor1d([1.1, 1.9, 3.2]);
const loss = tf.losses.meanSquaredError(labels, predictions);
loss.print(); // Выведет значение MSE
Определение: Категориальная кросс-энтропия измеряет различие между распределением вероятностей истинной метки и предсказанного распределения. Обычно используется для многоклассовой классификации.
[ = - _{i=1}^{n} y_i (_i)]
где (y_i) — one-hot вектор истинной метки, (_i) — вероятность предсказания класса.
Особенности применения:
tf.losses.softmaxCrossEntropy(labels, logits).Пример:
const labels = tf.tensor2d([[0, 1, 0], [1, 0, 0]]);
const logits = tf.tensor2d([[0.1, 0.8, 0.1], [0.7, 0.2, 0.1]]);
const loss = tf.losses.softmaxCrossEntropy(labels, logits);
loss.print(); // Значение кросс-энтропии
Определение: Бинарная кросс-энтропия используется для задач классификации с двумя классами.
[ = - _{i=1}^{n} ]
где (y_i ), (_i) — вероятность класса 1.
Особенности применения:
tf.losses.sigmoidCrossEntropy(labels, logits).Пример:
const labels = tf.tensor1d([0, 1, 1]);
const logits = tf.tensor1d([0.2, 0.8, 0.6]);
const loss = tf.losses.sigmoidCrossEntropy(labels, logits);
loss.print();
Huber Loss
Комбинирует преимущества MSE и MAE (Mean Absolute Error). Считается менее чувствительной к выбросам, чем MSE.
[ = ]
В TensorFlow.js используется через
tf.losses.huberLoss(labels, predictions, delta).
Absolute Difference (MAE)
Считается как среднее абсолютное отклонение:
[ = _{i=1}^{n} |y_i - _i|]
Применяется для регрессии, когда важнее уменьшить влияние выбросов. В
TensorFlow.js доступно через
tf.losses.absoluteDifference(labels, predictions).
meanSquaredError,
absoluteDifference, huberLoss.binaryCrossentropy (sigmoidCrossEntropy).categoricalCrossentropy
(softmaxCrossEntropy).Правильный выбор функции потерь влияет на скорость сходимости и качество модели. Необходим учет особенностей данных: чувствительность к выбросам, количество классов, распределение значений.
Функция потерь передается при компиляции модели через
model.compile:
model.compile({
optimizer: tf.train.adam(0.01),
loss: 'meanSquaredError', // или 'categoricalCrossentropy', 'binaryCrossentropy'
metrics: ['mse']
});
При необходимости функции потерь могут применяться напрямую к тензорам вне процесса обучения модели, что позволяет гибко настраивать кастомные алгоритмы оптимизации и градиентные методы.