…и зачем вашему проекту машинного обучения нужно и то, и другое?

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

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

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

В науке о данных вы увидите, что функции оценки (например, MSE) используются для трех основных целей:

  1. Оценка эффективности: насколько хорошо работает наша модель? Другими словами, можем ли мы быстро понять, с чем мы работаем?
  2. Модель оптимизация: это наилучшее соответствие или мы можем его улучшить? Другими словами, какая модель ближе всего подходит к нашим точкам данных?
  3. Статистическое принятие решений: достаточно ли хороша модель для использования? Другими словами, соответствует ли модель нашим строгим критериям проверки гипотез?

Эти три тонко — но важно — отличаются друг от друга, поэтому давайте более подробно рассмотрим, что делает функцию «хорошей» для каждой цели.

Оценка производительности (метрика)

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

Метрики должны быть разработаны так, чтобы они были понятны людям и эффективно передавали информацию.

Хотя среднеквадратическая ошибка (MSE) — очень популярная функция для оптимизации модели, она включает в себя возведение в квадрат интересующих нас чисел, что приводит к неправильному масштабу. Это не совсем приятно читать, и это проблема, если вы ищете хороший, значимый показатель. Метрики должны быть разработаны так, чтобы они были понятны людям и эффективно передавали информацию.

Люди предпочитают RMSE, потому что он переводит MSE в более удобочитаемую шкалу.

Как я объясню в другой статье, именно поэтому многие люди предпочитают брать квадратный корень из MSE (который затем называется RMSE — R — это корень), прежде чем смотреть на него. RMSE переводит MSE в более удобочитаемый масштаб. Это не совсем то же самое, что и насколько велики в среднем наши ошибки?, но это достаточно близко, чтобы упоминать его таким образом, ничего не поджигая. (Хотя такая интерпретация делает некоторых людей безумными.)

Резюме: Что делает функцию оценки «хорошей» для оценки?

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

Оптимизация модели (функция потерь)

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

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

В машинном обучении эквивалентом «вкусовой» оценки супа является так называемая функция потерь*, за исключением того, что по соглашению мы измеряем ошибки, а не успехи. Это больше похоже на оценку «плохого вкуса» — чем меньше, тем лучше.

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

Любая функция потерь, которая становится больше, когда наша модель имеет более неприятные ошибки, технически поможет, но на практике реализация — это все. Разумно выбрать функцию, с которой легко работать вашему компьютеру, поэтому MSE так популярен для оптимизации. Есть веская причина, по которой первая производная, которую вы когда-либо учили, — это x²; в исчислении и, следовательно, в оптимизации квадраты очень просты. S в MSE означает «квадрат» — это очень удобная функция для минимизации.

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

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

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

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

Но если звезды сойдутся и ваша идеальная метрика оценки + тестирования также доступна в виде функции потерь, пожалуйста, используйте ее (и спойте благодарственную песнь за вашу удачу). Но никогда не начинайте с функции потерь и не стройте свою оценку на ее основе. Это неправильный путь.

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

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

Резюме: Что делает функцию оценки «хорошей» для оптимизации?

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

Статистическое принятие решений (тестовая статистика)

А как же статистическое тестирование? Игра предназначена для описания счета, который находится прямо на границе между двумя действиями, такими как запуск вашей системы и ее отсутствие.

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

Акцент на реальном мире

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

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

Резюме: Что делает скоринговую функцию «хорошей» для статистического тестирования?

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

Результат

Только новичок настаивает на использовании своей функции потерь для оценки производительности; профессионалы сначала начинают с правильной функции для оценки, а затем ищут функцию потерь, что означает, что они в конечном итоге получат две (или более) функции подсчета очков.

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

В прикладном ML/AI функция потерь предназначена для оптимизации, а не для статистического тестирования. Статистическое тестирование должно спрашивать: «Достаточно ли хорошо он работает для сборки/запуска?», где «производительность» должен определяться бизнес-проблемой и его владелец. Вы не должны изменять постановку бизнес-задачи в соответствии со своими амбициями по выпуклой оптимизации. Для удобства вы можете оптимизировать, используя стандартную функцию потерь, которая движется в том же направлении, что и функция, только что созданная воображением вашего лидера (выполните проверки корреляции *** аналитически или с помощью моделирования), но, пожалуйста, проверьте их функцию.

Прохождение

Если вы хотите немного показать в дополнение к рассказу, вот мой пошаговый пример трех различных применений MSE в науке о данных:



Спасибо за прочтение! Как насчет курса YouTube?

Если вам было весело здесь, и вы ищете полный курс прикладного ИИ, предназначенный для развлечения как новичков, так и экспертов, вот тот, который я сделал для вашего развлечения:

* Функция потерь — это слово машинного обучения для целевой функции — это одно и то же.

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

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