Двоичная кросс-энтропия, косинусная близость, потеря шарнира и еще 6
Функции потерь являются неотъемлемой частью обучения нейронной сети - выбор правильной функции потерь помогает нейронной сети узнать, насколько далеко она находится, чтобы она могла правильно использовать свой оптимизатор. В этой статье мы обсудим несколько функций потерь, поддерживаемых Keras - как они работают, их приложения и код для их реализации.
Перекрестная энтропия
Двоичная кросс-энтропия математически определяется как -
- при правильном целевом значении t и прогнозируемом значении p.
Учитывая значения p для правильного целевого значения 0, значение бинарной кросс-энтропии можно изобразить как -
Учитывая значения p для правильной цели 1, значение бинарной кросс-энтропии можно изобразить как -
Энтропия - это мера неопределенности в определенном распределении, а кросс-энтропия - это значение, представляющее неопределенность между целевым распределением и прогнозируемым распределением.
#FOR COMPILING model.compile(loss='binary_crossentropy', optimizer='sgd') # optimizer can be substituted for another one #FOR EVALUATING keras.losses.binary_crossentropy(y_true, y_pred, from_logits=False, label_smoothing=0)
Категориальная перекрестная энтропия и разреженная категориальная перекрестная энтропия - это версии двоичной перекрестной энтропии, адаптированные для нескольких классов. Категориальная перекрестная энтропия должна использоваться, когда одна выборка имеет несколько классов или метки являются мягкими вероятностями, а разреженная категориальная перекрестная энтропия должна использоваться, когда классы являются взаимоисключающими.
Категориальная кросс-энтропия:
#FOR COMPILING model.compile(loss='categorical_crossentropy', optimizer='sgd') # optimizer can be substituted for another one #FOR EVALUATING keras.losses.categorical_crossentropy(y_true, y_pred, from_logits=False, label_smoothing=0)
Разреженная категориальная кросс-энтропия:
#FOR COMPILING model.compile(loss='sparse_categorical_crossentropy', optimizer='sgd') # optimizer can be substituted for another one #FOR EVALUATING keras.losses.sparse_categorical_crossentropy(y_true, y_pred, from_logits=False, axis=-1)
Косинусная близость / косинусное сходство
Косинусное сходство - это мера сходства между двумя векторами. Математическое представление -
- заданы два вектора A и B, где A представляет вектор прогноза, а B представляет целевой вектор.
Более высокая косинусная близость / сходство указывает на более высокую точность. Идеально противоположные векторы имеют косинусное подобие -1, идеально ортогональные векторы имеют косинусное подобие 0, а идентичные векторы имеют косинусное подобие 1.
Косинусная близость может быть реализована в Керасе:
#FOR COMPILING model.compile(loss='cosine_proximity', optimizer='sgd') # optimizer can be substituted for another one #FOR EVALUATING keras.losses.cosine_proximity(y_true, y_pred, axis=-1)
Потеря шарнира
Потеря шарнира математически определяется как -
- с учетом прогноза y и целевого значения t ± 1 . Примечание. y должно быть вероятностью, а не меткой отдельного класса.
Ниже приведен график потерь на шарнире, который является линейно отрицательным, пока не достигнет значения x, равного 1.
#FOR COMPILING model.compile(loss='hinge', optimizer='sgd') # optimizer can be substituted for another one #FOR EVALUATING keras.losses.hinge(y_true, y_pred)
У шарнира есть еще один отклоняющийся от нормы, шарнир в квадрате, который (как можно догадаться) является функцией шарнира в квадрате.
#FOR COMPILING model.compile(loss='squared_hinge', optimizer='sgd') # optimizer can be substituted for another one #FOR EVALUATING keras.losses.squared_hinge(y_true, y_pred)
Huber Loss
Математически потеря Хубера определяется как
… Для коэффициента c, где t представляет собой разницу между целевым значением и прогнозируемым значением, которое можно изобразить как
… Для различных значений c.
Это может быть реализовано в Керасе как
#FOR COMPILING model.compile(loss='huber_loss', optimizer='sgd') # optimizer can be substituted for another one #FOR EVALUATING keras.losses.huber_loss(y_true, y_pred, delta=1.0)
Логарифм гиперболического косинуса
Функция гиперболического косинуса - это log (ch (x)), представленная как
… Где x указывает разницу между прогнозируемым значением и целевым значением.
#FOR COMPILING model.compile(loss='logcosh', optimizer='sgd') # optimizer can be substituted for another one #FOR EVALUATING keras.losses.logcosh(y_true, y_pred)
Квадрат логарифмической ошибки
Логарифм средней абсолютной ошибки, или log (x ²), показан ниже на графике.
Логарифм квадрата ошибки является особенным в том смысле, что уменьшение ошибки, скажем, на 0,1 привело бы к большему падению функции потерь, если бы она была ближе к 0 (скажем, от 0,2 до 0,1), чем если бы она была дальше (скажем, 1,2 к 1,1).
Это может быть реализовано в Keras как:
#FOR COMPILING model.compile(loss='mean_squared_logarithmic_error', optimizer='sgd') # optimizer can be substituted for another one #FOR EVALUATING keras.losses.mean_squared_logarithmic_error(y_true, y_pred)
Если вам понравилось, ознакомьтесь с другими сообщениями: