Функция потерь перекрестной энтропии: Обзор
Учебное пособие, в котором рассматривается функция потерь перекрестной энтропии, дополненное кодами PyTorch и Tensorflow, а также интерактивными визуализациями
Created on January 11|Last edited on February 11
Comment
РАЗДЕЛЫ
РАЗДЕЛЫ👋 Знакомство с функцией потерь перекрестной энтропии🧑🏻🏫 Что такое кросс энтропийная потеряТеория🧑🏼💻 Код🥕 Реализация на основе Tensorflow🔥 Реализация на основе PyTorchЗаключение📚 Some Resources
👋 Знакомство с функцией потерь перекрестной энтропии
Одной из наиболее распространенных функций потерь, используемой для обучения нейронных сетей, является функция потерь перекрестной энтропии. Рассмотрим деривацию и реализацию этой функции с помощью различных фреймворков, научимся способам входа и визуализации с помощью wandb.
🧑🏻🏫 Что такое кросс энтропийная потеря
Функция потерь перекрестной энтропии – это метрика, позволяющая оценить, насколько хорошо функционирует модель классификации в машинном обучении. Потеря (или ошибка) оценивается как число, находящееся между 0 и 1, где 0 – идеальная модель. Цель, как правило, заключается в том, чтобы максимально приблизить вашу модель к 0.
Функцию потерь перекрестной энтропии часто считают взаимозаменяемой с логистической ошибкой (или логистической функцией потерь и иногда рассматриваемой как функция потерь бинарной перекрестной энтропии), но это не всегда корректно.
С другой стороны, функция потерь бинарной перекрестной энтропии сохраняет только одно значение. Это значит, что она будет сохранять только 0,5, а другое значение вероятности будет подразумеваться. Если первая вероятность была 0,7, то подразумевается, что вторая вероятность будет 0,3. При вычислениях используется логарифм (отсюда и название – «логистическая функция потерь»).
В силу вышеуказанной причины функция потерь бинарной перекрестной энтропии (или логистическая функция потерь) используется в сценариях, предусматривающих два возможных результата, при этом нетрудно увидеть, где будет мгновенный сбой в случае двух или трех результатов. Функция потерь перекрестной энтропии часто применяется в моделях, в которых имеются три или более возможностей классификации.
Теория
Давайте начнем с азов. В процессе глубокого обучения обычно используется градиентная стратегия оптимизации для обучения модели (скажем ) с использованием некоторой функции потерь , где – определенная пара ввода-вывода. Функция потерь позволяет модели определить, насколько она «неправильная» и на основании этой «неправильности» – улучшить себя. Это мера ошибки. Наша роль в процессе обучения заключается в минимизации этой ошибки/потери.
Роль функции потерь является весьма важной. Если некорректный вывод не «наказывается» должным образом, это может привести к задержке сходимости и повлиять на обучение.
Существует парадигма обучения, называемая оценкой по методу наибольшей вероятности, которая обучает модель оценивать ее параметры, чтобы изучить базовое распределение данных. Таким образом, мы используем функцию потерь, чтобы оценить, насколько хорошо модель соответствует распределению данных.
Используя перекрестную энтропию, можно оценить ошибку (или разницу) между двумя вероятностными распределениями.
Например, в случае бинарной классификации перекрестная энтропия определяется как:
где:
- – предсказанная вероятность и
- – индикатор (0 или 1 в случае бинарной классификации)
Давайте пошагово рассмотрим, что происходит с определенной точкой данных. Предположим, что правильный индикатор - y = 1. В этом случае,
Таким образом, значение потерь ll зависит от вероятности pp. Следовательно, на��а функция потерь вознаграждает модель за правильный прогноз (высокое значение pp) с небольшими потерями. Однако, если вероятность ниже, значение ошибки будет высоким (большее отрицательное значение), и поэтому модель будет наказана за неправильный результат.
Простое расширение задачи множественной классификации (скажем, N классов) существует следующим образом:
🧑🏼💻 Код
В этом разделе мы рассмотрим, как можно использовать функцию потерь перекрестной энтропии и в Tensorflow, и в PyTorch, а также вход в wandb.
🥕 Реализация на основе Tensorflow
import tensorflow as tffrom wandb.keras import WandbCallbackdef build_model():...# Define the Model Architecturemodel = tf.keras.Model(inputs = ..., outputs = ...)# Define the Loss Function -> BinaryCrossentropy or CategoricalCrossentropyfn_loss = tf.keras.losses.BinaryCrossentropy()model.compile(optimizer = ..., loss = [fn_loss], metrics= ... )return modelmodel = build_model()# Create a W&B Runrun = wandb.init(...)# Train the model, allowing the Callback to automatically sync lossmodel.fit(... ,callbacks = [WandbCallback()])# Finish the run and sync metricsrun.finish()
🔥 Реализация на основе PyTorch
import wandbimport torch.nn as nn# Define the Loss Functioncriterion = nn.CrossEntropyLoss()# Create a W&B Runrun = wandb.init(...)def train_step(...):...loss = criterion(output, target)# Back-propagationloss.backward()# Log to Weights and Biaseswandb.log({"Training Loss": loss.item()})# Finish the run and sync metricsrun.finish()
Run set
2
Заключение
На этом мы завершаем краткое знакомство с функцией потерь перекрестной энтропии. Для получения информации о полном наборе характеристик wandb, пожалуйста, ознакомьтесь с кратким 5-минутным руководством.
📚 Some Resources
- Если вам интересно, почему мы должны использовать отрицательные логарифмические вероятности, посмотрите следующее видео. 🎥
- Если вы хотите получить более строгое математическое объяснение, ознакомьтесь с заметкой в блоге (1) и заметкой в блоге (2) 🧾
Также обратите внимание на следующее видео:
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.