Вступление

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

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

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

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

Ожидаемые предварительные знания

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

  • наборы для обучения, разработки (разработки) и тестирования. Набор для разработки также называется проверочным или удерживаемым набором. Этот пост - отличное краткое введение в тему.
  • показатели оценки (или производительности): какие меры используются, чтобы показать, насколько хорошо модель машинного обучения выполняет свою работу. Вот статья, посвященная некоторым основным показателям, используемым в машинном обучении.
  • Ошибки смещения (недостаточного соответствия) и дисперсии (переобучения): Это отличное объяснение этих ошибок простым способом.

Важность ортогонализации

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

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

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

Рассмотрим, например, рулевое колесо автомобиля. Когда вы поворачиваете руль влево, машина движется влево. Когда вы поворачиваете вправо, машина движется вправо. Что, если рулевое колесо влево переместит автомобиль влево и скорость автомобиля увеличится? Управлять автомобилем стало бы намного сложнее, не так ли? Почему? Потому что управление левым колесом больше не является самостоятельным элементом управления автомобилем. Он связан с другим элементом управления, регулятором скорости . Всегда проще, когда элементы управления независимы.

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

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

Стратегии

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

а) Объедините несколько показателей оценки в один

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

В этом случае рекомендуется объединить точность и отзыв в одной метрике. Как вы уже могли догадаться, подойдет счет F1 [F1 score= (2 *precision*recall)/(precision + recall)]. Таким образом, классификатор A из таблицы 1 будет иметь лучший результат F1.

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

Оптимизация и удовлетворение

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

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

Однако, если ваша цель - максимизировать производительность по всем показателям, вам нужно будет их объединить.

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

б) Правильно установите наборы для обучения, разработки и тестирования

Выберите подходящий размер для группы "поезд / разработка / тестирование"

Вы, вероятно, видели разделение 60%, 20%, 20% для наборов данных для обучения, разработки и тестирования соответственно. Это хорошо работает для небольших наборов данных - скажем, 10 тыс. Точек данных или меньше. Однако при работе с большими наборами данных, особенно с глубоким обучением, более подходящим может быть разделение на 98%, 1%, 1% или подобное. Если в вашем наборе данных 2 миллиона точек данных, разделение на 1% составляет 20 000 точек данных, которых достаточно для наборов данных для разработки и тестирования.

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

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

Хотя это может показаться тривиальным, я видел, как опытные разработчики забывают об этом важном моменте. Допустим, вы экспериментировали и многократно улучшали модель, которая прогнозирует дефолт по автокредиту на основе почтового индекса. Не ожидайте, что ваша модель будет правильно работать на тестовом наборе из областей с почтовым индексом с низким средним доходом, если, например, набор для разработчиков поступает из областей с почтовым индексом с высоким средним доходом. Это два разных дистрибутива!

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

Например, если вы выполняете распознавание лиц, разрешение ваших изображений для разработки / тестирования должно отражать разрешение изображений в производстве. Хотя это может быть тривиальный пример, вам следует изучить все аспекты данных, с которыми ваше приложение будет работать в производственной среде, по сравнению с данными для обучения / разработки / тестирования. Если ваша модель хорошо справляется с вашими метриками и наборами для разработки / тестирования, но не так хорошо в производственной среде, у вас неправильная метрика и / или неправильные наборы для разработки / тестирования!

в) Сначала определите "правильную" ошибку и устраните ее.

Ошибка Байеса и человеческий фактор

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

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

Повышение производительности ниже человеческого

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

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

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

Итак, как вы точно определяете человеческую ошибку? Об этом и пойдет речь дальше!

Определение ошибки, связанной с человеческим фактором, и определение ошибки, которую необходимо устранить в первую очередь

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

  • средний человек: ошибка 2%
  • средний зоолог: ошибка 1%
  • зоолог-эксперт: ошибка 0,6%
  • команда зоологов-экспертов: погрешность 0,4%

Теперь рассмотрим четыре случая в таблице 3 ниже.

В случае A вашим приоритетом должна быть проблема недостаточного соответствия - высокая систематическая ошибка - на что указывают ошибки красного цвета, поскольку ошибка систематической ошибки (5% -2% = 3%) больше, чем ошибка дисперсии (6% -5% = 1%). Для человеческой ошибки самая большая из человеческих ошибок, меньше, чем ошибка обучения, используется первой. Таким образом, ваша ссылка на человеческую ошибку в этом случае - это ошибка среднего человека - 2%, поскольку это самая большая ошибка среди человеческих ошибок, меньших, чем ошибка обучения (все они в данном случае).

В случае B вам может потребоваться сначала улучшить ошибку дисперсии, 9% -5% = 4%, поскольку она больше, чем ошибка смещения 5% -2% = 3%.

В случае C вы превзошли человеческие способности среднего человека, и вы привязаны к работе среднего зоолога. Итак, ваша новая человеческая ошибка должна быть ошибкой зоолога-эксперта - 0,6% - или даже команды зоологов-экспертов - 0,4%. Ошибка дисперсии в этом случае составляет 0,2%, а ошибка смещения составляет от 0,4% до 0,6%. Итак, вы должны сначала поработать над этой ошибкой - вам нужно лучше соответствовать обучающим данным.

Превосходя человеческие возможности

В случае D вы видите, что ошибка обучения составляет 0,2%, в то время как наилучшая человеческая ошибка составляет 0,4%. Означает ли это, что ваша модель превзошла человеческие характеристики или модель превзошла ее на 0,2% ?! Видите ли, неясно, следует ли сосредоточить внимание на ошибке смещения или ошибке дисперсии. Кроме того, если ваша модель действительно превзошла человеческие характеристики, и вы все еще стремитесь улучшить модель, становится неясным, какой стратегии следовать с точки зрения человеческой интуиции.

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

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

Первоначально опубликовано на assawiel.com/blog 24 марта 2018 г. Отредактировано: 4 октября 2018 г.