Двоичная кросс-энтропия, косинусная близость, потеря шарнира и еще 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)

Если вам понравилось, ознакомьтесь с другими сообщениями: