Потери подразделяются на вероятностные, регрессионные и шарнирные. Вы также можете определить пользовательскую функцию потерь в Keras, и 9 из 63 примеров моделирования в этом руководстве имели пользовательские потери. Мы также кратко рассмотрим пользовательские потери.

Вот разница между различными типами потерь:

Вероятностные потери — будет использоваться в задачах классификации, где результат находится в диапазоне от 0 до 1.

Регрессионные потери — когда наши прогнозы будут непрерывными.

Потери в шарнирах — еще один набор потерь для задач классификации, но обычно используемый в машинах опорных векторов. Учитывается расстояние от границы классификации, и если расстояние недостаточно велико, вы будете оштрафованы.

Это упражнение также было фантастическим способом увидеть различные типы приложений компьютерного зрения. Во многих учебниках я не думал об этом конкретном приложении. Надеюсь, это откроет вам глаза, и вам даже не придется выполнять упражнение, просматривая каждое руководство!

Чтобы иметь представление о типах проблем, которые решались в учебниках, вот примерный список:

Функции потери классификации изображений

Так что, конечно, поскольку классификация изображений была наиболее частым типом проблемы в учебнике, мы ожидаем увидеть много вероятностных потерь. Но какие они были? Тогда самый очевидный вопрос: «Какие функции потерь используются в этих задачах классификации изображений?»

Мы видим, что разреженные категориальные потери перекрестной энтропии (также называемые потерями softmax) были наиболее распространенными. И разреженная категориальная перекрестная энтропия, и категориальная перекрестная энтропия используют одну и ту же функцию потерь. Если ваша выходная переменная закодирована горячим способом, вы должны использовать категориальную перекрестную энтропию, если ваша выходная переменная является целым числом, и они являются индексами класса, вы должны использовать разреженную функцию. Двоичная перекрестная энтропия используется, когда у вас есть только один классификатор.

Инновации и наука идут рука об руку. Послушайте нашу собственную беседу генерального директора Гидеона Мендельса с командой серии семинаров Stanford MLSys о будущем MLOps и дайте платформе Comet попробовать бесплатно!

В приведенной ниже функции «n» — это количество классов, а в случае бинарной кросс-энтропии количество классов будет равно 2, потому что в задачах бинарной классификации у вас есть только 2 потенциальных выхода (класса): выход может быть 0 или 1.

Пользовательские функции потерь Keras

Один вывод, который я также заметил, заключается в том, что не было сценариев, в которых определяемые пользователем потери использовались для проблем классификации изображений. Это не обязательно удивительно, но я надеялся увидеть вариант использования, в котором использовалась пользовательская функция потерь. Во всех задачах классификации использовалась одна из этих трех функций потерь. Какой тип проблемы они пытались решить в 14 % руководств, в которых использовалась определенная пользователем функция? (Это два отдельных списка).

Функции регрессионных потерь

Мне также было интересно посмотреть, какие алгоритмы чаще всего использовались в учебнике для задач регрессии. Было всего 6 регрессионных задач, так что выборка довольно маленькая.

Интересно, что только две потери были использованы. Мы не видели среднюю абсолютную процентную ошибку, среднеквадратичную логарифмическую ошибку, косинусное сходство, хуберовское или логарифмическое сходство. Приятно видеть, что потери, с которыми я больше всего знаком, используются в этих задачах, это кажется гораздо более доступным. MSE возводится в квадрат, поэтому большие различия между фактическим и расчетным значением штрафуются больше, чем MAE. Поэтому, если вас не волнует, «насколько» ваша оценка отличается, вы можете использовать MAE, а если размер ошибки имеет значение, используйте MSE.

Реализация функций потери Keras

Если вы только начинаете работать с Keras, построение модели выглядит немного иначе. Определение самой фактической функции потерь является прямым, но мы можем поговорить о паре строк, которые предшествуют определению функции потерь в учебнике (этот код взят прямо из учебника). В Keras есть два способа построения моделей: последовательный или функциональный. Здесь мы строим последовательную модель. API последовательной модели позволяет создать модель глубокого обучения, в которой создается последовательный класс, а затем вы добавляете к нему слои. В функции keras.sequentional() есть необязательные аргументы слои и имя, но вместо этого мы добавляем слои по частям.

Первая строка model.add, которую мы добавляем, инициализирует ядро. kernel_initializer определяет статистическое распределение начальных весов для вашей модели. В этом примере веса распределены равномерно. Это модель с одним скрытым слоем. Функция потерь будет передана на этапе компиляции. Здесь используется оптимизатор Adam, если вы хотите узнать больше об оптимизаторах в Keras, ознакомьтесь со статьей Yujian здесь. Пример взят из docs.

from tensorflow import keras
from tensorflow.keras import layers

model = keras.Sequential()
model.add(layers.Dense(64, kernel_initializer='uniform', input_shape=(10,)))
model.add(layers.Activation('softmax'))
loss_fn = keras.losses.SparseCategoricalCrossentropy()
model.compile(loss=loss_fn, optimizer='adam')

Заключение

Честно говоря, я чувствую себя лучше после просмотра этих руководств по компьютерному зрению! Хотя было много пользовательских функций потерь, с которыми я не был знаком, большинство вариантов использования были дружественными функциями потерь, которые я использовал раньше.

Я также чувствую, что буду чувствовать себя более уверенно, когда смогу выбирать функцию потерь для задач компьютерного зрения в будущем. Иногда мне кажется, что все будет очень причудливо или сложно, как тогда, когда «большие данные» впервые стали популярным модным словечком, но потом, когда я смотрю сам, это не так страшно, как я думал.

Если вы считаете, что это было полезно, обязательно дайте мне знать. Меня очень легко найти в LinkedIn, и я могу написать больше подобных статей, если людям будет интересен такой нестрогий анализ.

Первоначально опубликовано на https://datamovesme.com 03.08.2022

Примечание редактора. Heartbeat — это интернет-издание и сообщество, созданное участниками и посвященное предоставлению лучших образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.

Независимая от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.

Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение нашего еженедельного информационного бюллетеня (Еженедельник глубокого обучения), заглянуть в блог Comet, присоединиться к нам в Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов и событий. и многое другое, что поможет вам быстрее создавать более качественные модели машинного обучения.