Доброго времени суток, «Хабр»!Представьте, что вы играете в дартс. Сначала ваши дротики разлетаются по всей мишени, но с каждой попыткой вы постепенно приближаеДоброго времени суток, «Хабр»!Представьте, что вы играете в дартс. Сначала ваши дротики разлетаются по всей мишени, но с каждой попыткой вы постепенно приближае

Функция потерь: как алгоритм понимает, что он ошибся

Доброго времени суток, «Хабр»!

Представьте, что вы играете в дартс. Сначала ваши дротики разлетаются по всей мишени, но с каждой попыткой вы постепенно приближаетесь к заветному центру. Человек интуитивно понимает, что нужно скорректировать бросок: сильнее, выше, левее или правее. Примерно так же работает и алгоритм машинного обучения. Только вместо интуиции там есть функция потерь.

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

27c6305b7a205aefec11459d69169508.png

Сущность функции потерь

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

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

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

Математически функцию потерь можно представить как:

L(y,y*) = f(y-y*)

Где L - функция потерь, y - фактическое значение, y* - предсказанное моделью значение, а f - конкретная реализация функции потерь.

Существует несколько ключевых характеристик качественной функции потерь. Первая - дифференцируемость. Она позволяет вычислять градиенты, что критически важно для работы методов градиентного спуска.

Вторая - выпуклость. Наличие единственного глобального минимума обеспечивает сходимость алгоритмов оптимизации.

Третья - робастность, иначе говоря, устойчивость к выбросам. Это свойство помогает работе с зашумленными данными.

Четвертая характеристика - вычислительная эффективность. Скорость расчетов значительно влияет на общее время обучения модели.

Функции потерь - не просто способ оценки точности. Они определяют форму поверхности оптимизации, по которой движется алгоритм поиска наилучших параметров. Эта форма отражает способность модели успешно обучаться.

406ef74024e2de516bcccb87fb4af2b5.png

В контексте глубокого обучения функция потерь определяет, каким образом информация о качестве предсказаний распространяется через слой нейронной сети в процессе обратного распространения ошибки.


Небольшое отступление

Хотите попробовать какую-то модель? Воспользуйтесь агрегатором нейросетей BotHub. Список нейросетей там обширен - от работы с текстом до транскрибации и генерации видео. По специальной ссылке для регистрации можно получить 100 000 капсов для собственных экспериментов.


Классификация функций потерь в ML

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

Для задач регрессии

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

Mean Squared Error (MSE) - среднеквадратичная ошибка. Наиболее распространенный вариант для регрессии. Математический вид:

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

Mean Absolute Error (MAE) - средняя абсолютная ошибка, менее чувствительна к выбросам, чем MSE.

MAE не учитывает масштаб (насколько велико полученное отклонение) и направление ошибок (положительное или отрицательное отклонение от реальных значений). Получается, что в зависимости от контекста, одно и то же полученное значение может быть как хорошим, так и плохим результатом.

Huber Loss - гибридная функция, сочетающая свойства MSE и MAE, устойчивая к выбросам.

Где δ - параметр порога, который определяет точку, где функция переходит от квадратичной к линейной.

c3694ca618f1287147328cdec0e37ae3.png

Log-Cosh Loss - логарифм гиперболического косинуса ошибки, дифференцируемая альтернатива MAE.

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

Для задач классификации

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

Binary Cross-Entropy (BCE) используется для бинарной классификации. Измеряет разницу между прогнозируемыми вероятностями и фактическими двоичными метками.

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

Кроме того, заметно достаточно сильное влияние выбросов. Экстремальные предсказанные вероятности (близкие к 0 или 1) могут привести к высоким значениям потерь, что может вызывать проблемы с сходимостью во время обучения.

Categorical Cross-Entropy - многоклассовая классификация.

Логарифмические операции иногда могут приводить к числовой нестабильности. Кроме того, фактические метки должны быть закодированы в one-hot, что может увеличить использование памяти. Так же функция может быть чувствительной к несбалансированным наборам данных, где количество образцов в каждом классе не равно.

Focal Loss - модификация CCE для несбалансированных данных. В отличие от традиционных функций потерь, которые обрабатывают все примеры одинаково, тут вводится динамический механизм, который приоритезирует сложные примеры.

FL = -a  (1 – y^*)^Y  log(y^*) для y = 1

FL = -a  y^Y  log(1 – y^*) для y = 0

Где a - модулирующий фактор для обработки дисбаланса, а Y - дополнительный параметр, который контролирует, как обрабатываются легкие примеры.

Hinge Loss - применяется в SVM (метод опорных векторов) для максимизации разделяющей границы.

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

Для специализированных задач

Отдельная категория направленная на решение конкретных задач.

Triplet Loss - используется в задачах метрического обучения и распознавания лиц.

6c7366c3fa748de4e88a84f0fd5bbb81.png

Функция минимизирует расстояние между якорной и позитивной точками, а максимизирует - между якорной и отрицательной. Это помогает эффективнее различать похожие и непохожие примеры.

Contrastive Loss - контрастивная функция. Используется для обучения эмбеддингов (перевода объектов в векторы схожести) таким образом, чтобы схожие объекты имели близкие векторы в латентном пространстве, а различающиеся - находились далеко друг от друга.

44f5997bb6a97ddc82c0ebe73a366f5d.png

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

Dice Loss - специализированная функция потерь, разработанная для задач сегментации изображений. Она измеряет перекрытие между предсказанными и фактическими масками сегментации.

1d323c8e800084f2ae7e97f81c598578.png

Connectionist Temporal Classification (CTC) - алгоритм для обучения в задачах, где длина входной и выходной последовательностей отличается, а точное соответствие между ними часто неизвестно. Чаще всего используется в распознавании речи и рукописного текста.

656b8218bcc1e939f3a0af85d4386795.png

Недостатком является то, что модель может выдавать слова, которые звучат правильно, но не написаны правильно, так как учитывает только отдельные символы, а не целые слова.

Сейчас наблюдается тенденция к использованию составных функций потерь, объединяющих несколько метрик для достижения оптимального баланса между различными аспектами модели. Комбинированные функции позволяют нивелировать недостатки отдельных компонентов и учесть множество факторов в процессе оптимизации.


Критерии выбора

Пожалуй, ключевой этап проектирования ML-систем - выбор оптимальной функции потерь. Условно процесс выбора можно разбить на критерии.

Тип решаемой задачи

  • Для регрессии используют MSE, MAE, Huber Loss.

  • Для бинарной классификации - BCE.

  • Для многоклассовой классификации - Categorical Cross-Entropy.

  • Для генеративных моделей: Wasserstein Loss, KL-Divergence.

Характеристики распределения данных

Наличие выбросов требует робастных функций (MAE, Huber). Несбалансированные классы лучше обрабатываются через Focal Loss или взвешенные версии стандартных функций. Для зашумленных данных лучше использовать сглаживающие функции.

Математические свойства

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

Интерпретируемость результатов

Функции потерь следует выбирать исходя из предметной области. Некоторые виды дают более понятные для конкретной сферы результаты.

Вычислительная эффективность

Критерий особенно важный для больших моделей и объемов данных. Некоторые функции потерь требуют больше вычислительных ресурсов, а также будут замедлять само обучение.

Взаимосвязь с метриками оценки моделей также является важным критерием. Оптимально когда функция потерь хорошо соотносится с бизнес-метриками, определяющими успех модели.

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


Проблема переобучения

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

Представим, что датасет состоит из некоторых точек. Если мы заставим алгоритм идеально подстраиваться под каждую из точек с нулевыми потерями, то график классификации превратится в извилистую кривую.

Это будет плохим результатом, потому что нам важна точность на тестовой выборке, а не на обучающей. Если мы проверим работу уже на новых данных, то имеющаяся кривая станет абсолютно неправильной. Т.е. нам нужно найти какую-то прямую линию, которая примерно соответствовала бы и тем, и другим данным.

В этом заключается фундаментальная проблема машинного обучения. Для ее решения обычно применяют различные методы регуляризации.


Вывод

Функции потерь - важная вещь в машинном обучении, которая направляет модели к оптимальным решениям. Такой подход может радикально улучшить результаты без изменения архитектуры модели.

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

Спасибо за прочтение!

Источник

Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу service@support.mexc.com для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.