Как эффективно создавать продукты на базе машинного обучения.

Чтобы получить больше подобных материалов, подписывайтесь на Insight и Emmanuel в Twitter.

Начнем с основ

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

Все должно быть сделано как можно проще, но не проще.

Альберт Эйнштейн

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

При решении сложных проблем простые решения, такие как базовые показатели, которые мы опишем ниже, имеют множество недостатков:

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

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

Все модели неправильные, но некоторые полезны.

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

Что такое базовый уровень?

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

Вот несколько базовых показателей, которые может быть полезно учесть:

  • Линейная регрессия. Надежный первый подход к прогнозированию непрерывных значений (цены, возраст и т. Д.) На основе набора характеристик.
  • Логистическая регрессия. При попытке классифицировать структурированные данные или естественный язык логистическая регрессия обычно дает быстрые и надежные результаты.
  • Деревья с усилением градиента. Классика Kaggle! Для прогнозов временных рядов и общих структурированных данных трудно превзойти деревья с градиентным усилением. Хотя интерпретировать их немного сложнее, чем другие базовые показатели, они обычно работают очень хорошо.
  • Простая сверточная архитектура. Тонкая настройка VGG или повторное обучение некоторого варианта U-net обычно является отличным началом для большинства задач классификации, обнаружения или сегментации изображений.
  • И многое другое!

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

Зачем начинать с базовой линии?

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

Базовый уровень займет у вас менее 1/10 времени и может обеспечить до 90% результатов.

Умножьте свою продуктивность на 9!

Вот очень распространенная история: команда хочет реализовать модель, чтобы предсказать что-то вроде вероятности того, что пользователь нажмет на объявление. Они начинаются с логистической регрессии и быстро (после небольшой настройки) достигают точности 90%.

Отсюда возникает вопрос: Следует ли команде сосредоточиться на достижении точности до 95% или они должны решать другие проблемы на 90%?

Большинство современных моделей по-прежнему оставляют вас с ненулевым коэффициентом ошибок из-за их стохастической природы. Это зависит от вашего варианта использования, но большая часть эффективности системы является мультипликативной по своей природе, что означает, что вы бы предпочли иметь 10 последовательных шагов с точностью 90% (что приводит к общей точности 34%), а не один с 99%, за которым следует 9 с 10. % (Общая точность 0,00000000099 %%).

Начиная с базового уровня, вы в первую очередь устраните узкие места!

Базовый план помещает более сложную модель в контекст

Обычно есть три уровня производительности, которые вы можете легко оценить:

  • Тривиально достижимая производительность - показатель, который, как вы надеетесь, может превзойти любая модель. Примером этого значения может быть точность, которую вы получите, угадав наиболее частый класс в задаче классификации.
  • Возможности человека - уровень, на котором человек может выполнить эту задачу. Компьютеры намного лучше людей справляются с некоторыми задачами (например, игра в го) и хуже с другими (например, с написанием стихов). Знание того, насколько хорош человек в чем-то, может помочь вам заранее определить ожидания для алгоритма, но, поскольку разница между человеком и компьютером широко варьируется в зависимости от области, может потребоваться некоторый поиск литературы для калибровки.
  • Производительность , необходимая для развертывания, которая представляет собой минимальное значение, которое сделает вашу модель пригодной для производства с точки зрения бизнеса и удобства использования. Обычно это значение можно сделать более достижимым с помощью разумных дизайнерских решений. Например, Google Smart Reply показывает три предложенных ответа, что значительно увеличивает их шансы на получение полезного результата.

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

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

Базовые показатели легко развернуть

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

Это означает, что в инженерном отношении простыми моделями являются:

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

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

Что делать после построения базовой модели?

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

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

Базовый уровень поможет вам понять ваши данные

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

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

Базовый план поможет вам понять вашу задачу

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

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

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

В качестве другого примера, пытаясь сегментировать МРТ сердца, Чак-Хоу Йи начал с ванильной архитектуры U-net. Это привело к тому, что он заметил, что многие ошибки сегментации, допущенные его моделью, были вызваны отсутствием понимания контекста (маленькое воспринимающее поле). Чтобы решить эту проблему, он перешел на использование расширенных сверток, что значительно улучшило его результаты.

Когда базовый уровень просто не подойдет

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

Заключение

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

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

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

Хотите узнать о прикладном искусственном интеллекте у ведущих специалистов Кремниевой долины или Нью-Йорка? Узнайте больше о программе Искусственный интеллект.

Вы - компания, работающая в области искусственного интеллекта, и хотели бы принять участие в программе Insight AI Fellows Program? Не стесняйтесь связаться.