Функции потерь в платформах машинного обучения и глубокого обучения играют жизненно важную роль в определении того, насколько хорошо модель машинного обучения будет работать с невидимыми данными. Потеря может быть как минимизирована, так и максимизирована для различных задач классификации и регрессии в машинном обучении. Согласно Википедии (Функция потерь — Википедия), в математической оптимизации и теории принятия решений функция потерь или функция стоимости (иногда также называемая функцией ошибок) — это функция, которая отображает событие или значения одной или нескольких переменных в реальное число, интуитивно представляющее некоторую стоимость, связанную с событием. Задача оптимизации направлена ​​на минимизацию функции потерь. Но мы определим наши собственные утраченные функции.

Что такое функция потерь?

Функции потерь используются для определения ошибки/потери между выходными данными наших алгоритмов машинного обучения и заданным целевым значением.

Приложения функций потерь?

Функции потерь используются в задачах оптимизации с целью минимизации потерь. Функции потерь используются в регрессии при поиске линии наилучшего соответствия путем минимизации общей потери всех точек с прогнозом из линии. Функции потерь используются при обучении сетей Перцептрона, Адалин и Neural Networks, влияя на то, как обновляются их веса. Чем больше потеря, тем больше обновление. Минимизируя потери, точность модели максимизируется. Однако в этих приложениях машинного обучения необходимо оценить компромисс между размером обновления и минимальными потерями.

Функции потерь в PyTorch

PyTorch поставляется с множеством канонических функций потерь с упрощенными шаблонами проектирования, которые позволяют разработчикам легко и быстро перебирать эти различные функции потерь во время обучения. Все функции потерь Py Torch упакованы в модуль torch.nn, базовый класс PyTorch для всех нейронных сетей. Это делает добавление функции потерь в ваш проект таким же простым делом, как добавление одной строки кода.

Средняя абсолютная ошибка (MAE) L1Loss

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

Среднеквадратическая ошибка (MSE) MSELoss

Среднеквадратическая ошибка имеет некоторое сходство со средней абсолютной ошибкой. Вместо вычисления абсолютной разницы между значениями в прогнозе и метке он вычисляет квадратную разницу между значениями в прогнозе и значениями меток. Таким образом, относительно большие различия наказываются сильнее, а относительно небольшие — меньше. MSE считается менее надежным при обработке выбросов и шумов, чем MAE.

Среднеквадратичное значение (RMSE) torch.sqrt(MSELoss)

Среднеквадратичные потери не существуют в Pytorh из стандартного модуля потерь (torch.nn), но их можно легко реализовать, просто взяв квадратный корень из MSE при вычислении. выше.

Потеря двоичной перекрестной энтропии (BCEL) BCELoss

Двоичная перекрестная энтропия, также известная как логарифмическая потеря или логарифмическая потеря, представляет собой показатель модели, который отслеживает неправильную маркировку класса данных моделью, штрафуя модель, если возникают отклонения в вероятности при классификации меток. Низкие значения логарифмических потерь соответствуют высоким значениям точности. Бинарная перекрестная энтропия равна -1*log (вероятность).

Бинарная перекрестная энтропия с потерей логитов (BCEWithLogitsLoss)

Двоичная перекрестная энтропия с логарифмическими потерями объединяет сигмовидный слой и BCELoss в одном классе. Эта версия более численно стабильна, чем использование простой сигмоиды, за которой следует BCELoss, поскольку, объединяя операции в один слой, мы используем трюк log-sum-exp для численной стабильности.

Перекрестная потеря энтропии

Перекрестнаяэнтропийная потеря используется в задачах классификации, которые включают ряд дискретных классов. Он измеряет разницу между двумя распределениями вероятностей для заданного набора случайных величин. Обычно при использовании Cross Entropy Loss выход нашей сети представляет собой слой Softmax, который гарантирует, что выход нейронной сети представляет собой значение вероятности от 0 до 1.

Все образцы кода, используемые в приведенных выше примерах, доступны по адресу https://github.com/averma111/PyTorch_Loss_Functions.git. Благодарим вас за терпение и прохождение различных функций потери в Pytorch. Вы можете оштрафовать меня на https://www.kaggle.com/averma111 или на https://www.linkedin.com/in/ashish-v-7a99a818/. Оставайтесь с нами, часть 2 скоро выйдет. А пока Удачного питоринга!!!.