- BrainTools - https://www.braintools.ru -
Доброго времени суток!
Представьте, что вы играете в дартс. Сначала ваши дротики разлетаются по всей мишени, но с каждой попыткой вы постепенно приближаетесь к заветному центру. Человек интуитивно понимает, что нужно скорректировать бросок: сильнее, выше, левее или правее. Примерно так же работает и алгоритм машинного обучения [1]. Только вместо интуиции [2] там есть функция потерь.
Сегодня поговорим об этой функции, попробуем в ней разобраться и понять, как же алгоритм понимает, что он ошибся. Принимайте стратегически удобное положение, ну а я приступаю к своему повествованию.

Функция потерь – математическое выражение, количественно оценивающее, насколько предсказания модели отклоняются от фактических значений. Фактически это метрика, позволяющая алгоритму понять, насколько велика ошибка [3] и в каком направлении нужно скорректировать параметры.
Основной принцип машинного обучения состоит в минимизации функции потерь посредством процесса оптимизации. Чем меньше становится значение функции потерь, тем лучше работает модель – ее прогнозы приближаются к реальным данным.
Говоря проще, функция потерь подобна чувству вины нейросети. Сделала прогноз, сравнила с действительностью и заметила расхождение. Функция потерь переводит это различие в штраф. Если штраф велик, сеть резко перестраивает настройки, если мал – слегка подстраивает.
Математически [4] функцию потерь можно представить как:
Где L – функция потерь, y – фактическое значение, y* – предсказанное моделью значение, а f – конкретная реализация функции потерь.
Существует несколько ключевых характеристик качественной функции потерь. Первая – дифференцируемость. Она позволяет вычислять градиенты, что критически важно для работы методов градиентного спуска.
Вторая – выпуклость. Наличие единственного глобального минимума обеспечивает сходимость алгоритмов оптимизации.
Третья – робастность, иначе говоря, устойчивость к выбросам. Это свойство помогает работе с зашумленными данными.
Четвертая характеристика – вычислительная эффективность. Скорость расчетов значительно влияет на общее время обучения модели.
Функции потерь – не просто способ оценки точности. Они определяют форму поверхности оптимизации, по которой движется алгоритм поиска наилучших параметров. Эта форма отражает способность модели успешно обучаться.

В контексте глубокого обучения функция потерь определяет, каким образом информация о качестве предсказаний распространяется через слой нейронной сети в процессе обратного распространения ошибки.
Хотите попробовать какую-то модель? Воспользуйтесь агрегатором нейросетей BotHub. Список нейросетей там обширен – от работы с текстом до транскрибации и генерации видео. По специальной ссылке [5] для регистрации можно получить 100 000 капсов для собственных экспериментов.
Почти все можно разбить на категории, опираясь на то, для чего это нужно. Так и с функциями потерь. Их делят на категории в зависимости от типа решаемой задачи и характеристик данных.
В этом разделе, функции потерь оценивают отклонение предсказанных значений от фактических в задачах, где требуется предсказать непрерывную величину.
Mean Squared Error (MSE) – среднеквадратичная ошибка. Наиболее распространенный вариант для регрессии. Математический вид:
Благодаря возведению в квадрат метрика всегда имеет положительное значение. Кроме того, если в данных есть ошибка, то при использовании такого подхода они будут более заметными при анализе.
Mean Absolute Error (MAE) – средняя абсолютная ошибка, менее чувствительна к выбросам, чем MSE.
MAE не учитывает масштаб (насколько велико полученное отклонение) и направление ошибок (положительное или отрицательное отклонение от реальных значений). Получается, что в зависимости от контекста, одно и то же полученное значение может быть как хорошим, так и плохим результатом.
Huber Loss – гибридная функция, сочетающая свойства MSE и MAE, устойчивая к выбросам.
Где δ – параметр порога, который определяет точку, где функция переходит от квадратичной к линейной.

Log-Cosh Loss – логарифм гиперболического косинуса ошибки, дифференцируемая альтернатива MAE.
Хорошо работает с различными оптимизационными алгоритмами. Однако есть и ограничения: для очень больших прогнозов, не соответствующих истинным значениям, градиент и гессиан функции потерь могут быть постоянными, что может вызвать проблемы в некоторых алгоритмах.
В этой категории, функции потерь измеряют насколько хорошо модель предсказывает вероятность принадлежности к классам.
Binary Cross-Entropy (BCE) используется для бинарной классификации. Измеряет разницу между прогнозируемыми вероятностями и фактическими двоичными метками.
Функция чувствительна к несбалансированным данным. В случаях, когда один класс сильно доминирует в наборе данных, потеря может быть искажена, и модель может иметь смещение к большинству класса.
Кроме того, заметно достаточно сильное влияние выбросов. Экстремальные предсказанные вероятности (близкие к 0 или 1) могут привести к высоким значениям потерь, что может вызывать проблемы с сходимостью во время обучения.
Categorical Cross-Entropy – многоклассовая классификация.
Логарифмические операции иногда могут приводить к числовой нестабильности. Кроме того, фактические метки должны быть закодированы в one-hot, что может увеличить использование памяти [6]. Так же функция может быть чувствительной к несбалансированным наборам данных, где количество образцов в каждом классе не равно.
Focal Loss – модификация CCE для несбалансированных данных. В отличие от традиционных функций потерь, которые обрабатывают все примеры одинаково, тут вводится динамический механизм, который приоритезирует сложные примеры.
для y = 1
для y = 0
Где a – модулирующий фактор для обработки дисбаланса, а Y – дополнительный параметр, который контролирует, как обрабатываются легкие примеры.
Hinge Loss – применяется в SVM (метод опорных векторов) для максимизации разделяющей границы.
Функция подходит только для бинарной классификации – не может напрямую обрабатывать многоклассовую классификацию без модификаций. Кроме того, она чувствительна к несбалансированным данным и не предоставляет вероятностные выходы.
Отдельная категория направленная на решение конкретных задач.
Triplet Loss – используется в задачах метрического обучения и распознавания лиц.

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

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

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

Недостатком является то, что модель может выдавать слова, которые звучат правильно, но не написаны правильно, так как учитывает только отдельные символы, а не целые слова.
Сейчас наблюдается тенденция к использованию составных функций потерь, объединяющих несколько метрик для достижения оптимального баланса между различными аспектами модели. Комбинированные функции позволяют нивелировать недостатки отдельных компонентов и учесть множество факторов в процессе оптимизации.
Пожалуй, ключевой этап проектирования ML-систем – выбор оптимальной функции потерь. Условно процесс выбора можно разбить на критерии.
Для регрессии используют MSE, MAE, Huber Loss.
Для бинарной классификации – BCE.
Для многоклассовой классификации – Categorical Cross-Entropy.
Для генеративных моделей: Wasserstein Loss, KL-Divergence.
Наличие выбросов требует робастных функций (MAE, Huber). Несбалансированные классы лучше обрабатываются через Focal Loss или взвешенные версии стандартных функций. Для зашумленных данных лучше использовать сглаживающие функции.
О математических свойствах тоже не стоит забывать [7]. Например, дифференцируемость критична для градиентных методов оптимизации. Выпуклость обеспечивает наличие единственного глобального минимума, а масштабируемость позволяет эффективно обрабатывать большие объемы данных.
Функции потерь следует выбирать исходя из предметной области. Некоторые виды дают более понятные для конкретной сферы результаты.
Критерий особенно важный для больших моделей и объемов данных. Некоторые функции потерь требуют больше вычислительных ресурсов, а также будут замедлять само обучение.
Взаимосвязь с метриками оценки моделей также является важным критерием. Оптимально когда функция потерь хорошо соотносится с бизнес-метриками, определяющими успех модели.
В современной практике часто используется адаптивный подход, когда функция потерь изменяется в процессе обучения. Например, постепенно увеличивается вес сложных параметров или корректируются параметры в зависимости от текущего состояния обучения.
Основной результат, который дает функция потерь – оценка того, насколько хорошо классификатор работает на обучающей выборке. Однако мы помним, что главная цель машинного обучения – заставить алгоритм правильно работать на тестовой выборке. Поэтому хорошо справляющийся с обучающими данными метод может совершенно не работать на новых объектах. Это явление и называется переобучением.
Представим, что датасет состоит из некоторых точек. Если мы заставим алгоритм идеально подстраиваться под каждую из точек с нулевыми потерями, то график классификации превратится в извилистую кривую.
Это будет плохим результатом, потому что нам важна точность на тестовой выборке, а не на обучающей. Если мы проверим работу уже на новых данных, то имеющаяся кривая станет абсолютно неправильной. Т.е. нам нужно найти какую-то прямую линию, которая примерно соответствовала бы и тем, и другим данным.
В этом заключается фундаментальная проблема машинного обучения. Для ее решения обычно применяют различные методы регуляризации.
Функции потерь – важная вещь в машинном обучении, которая направляет модели к оптимальным решениям. Такой подход может радикально улучшить результаты без изменения архитектуры модели.
Универсальной функции потерь не существует – каждая задача требует индивидуальный подход. Порой в экспериментах, комбинациях и адаптациях функций появляются инновационные решения, позволяющие моделям превзойти стандартные ограничения и достичь нового уровня производительности.
Спасибо за прочтение!
Автор: MrRjxrby
Источник [8]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/24264
URLs in this post:
[1] обучения: http://www.braintools.ru/article/5125
[2] интуиции: http://www.braintools.ru/article/6929
[3] ошибка: http://www.braintools.ru/article/4192
[4] Математически: http://www.braintools.ru/article/7620
[5] специальной ссылке: https://bothub.chat/?invitedBy=m_aGCkuyTgqllHCK0dUc7
[6] памяти: http://www.braintools.ru/article/4140
[7] забывать: http://www.braintools.ru/article/333
[8] Источник: https://habr.com/ru/companies/bothub/articles/984648/?utm_campaign=984648&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.