Автор: Антти Хаванко

Решение реальных бизнес-задач с помощью машинного обучения (ML) занимает много времени и требует глубоких знаний ML и MLOps. Автоматизированное машинное обучение (AutoML) было изобретено для того, чтобы специалистам, не занимающимся машинным обучением, было проще использовать машинное обучение, не обладая глубокими знаниями о нем или доступом к квалифицированным специалистам по данным. Но даже несмотря на то, что AutoML часто кажется волшебным инструментом, решающим все проблемы, у него есть свои проблемы.

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

Мы начнем с рассмотрения положительных сторон AutoML и тестирования его на практике.

Что такое AutoML?

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

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

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

  • Google Cloud Platform (GCP) AutoML, включая BigQuery ML
  • Автопилот Amazon SageMaker
  • Автоматизированное машинное обучение Azure
  • Блоки данных AutoML
  • DataRobot AutoML
  • АвтоКерас
  • автообучение
  • H20 Беспилотный ИИ

Чем полезен AutoML?

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

Лучшие варианты использования AutoML:

  • Быстрое прототипирование/оценка идеи
  • Построение базовых моделей
  • Оценка своих данных

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

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

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

Каковы проблемы с AutoML?

Несмотря на то, что AutoML очень многообещающий, у него есть свои проблемы. Есть еще много вещей, на которые нужно обратить внимание:

  • Ложное чувство безопасности
  • Ограничение конкретными типами проблем
  • Отсутствие прозрачности
  • Высокие затраты

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

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

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

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

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

Пример прохождения

Теперь, когда вы знаете плюсы и минусы AutoML, давайте проверим на практике, действительно ли он может конкурировать с людьми-экспертами! Kaggle проводит конкурс «Petals to the Metal», в котором нужно распознать около 100 различных видов цветов. Мы будем использовать GCP AutoML для этого эксперимента, но могут подойти и другие решения. В этом соревновании всего около 15 000 помеченных примеров, так что это довольно простой случай для GCP AutoML, который может масштабироваться практически бесконечно.

Данные хранятся в файлах TFRecord, которые представляют собой двоичный формат хранения TensorFlow, тогда как GCP AutoML требует, чтобы необработанные файлы изображений находились в корзине Google Cloud Storage. Для GCP AutoML требуется файл CSV, содержащий URI и метку для каждого изображения. Кроме того, вы можете указать, к какому набору (обучение/оценка/тест) принадлежит каждое изображение, но пока мы можем оставить это для AutoML. По умолчанию AutoML использует 80 % изображений для обучения и 20 % для проверки и тестирования.

Vertex AI предлагает пользовательский интерфейс для обучения модели, но для тех, у кого менталитет инфраструктуры как кода, давайте создадим конвейер обучения с помощью Kubeflow. Google опубликовал компоненты конвейера для взаимодействия Kubeflow с Vertex AI и AutoML, поэтому создать набор данных, обучить модель и развернуть ее в Vertex AI довольно просто.

Мы также можем видеть конвейер и следить за его ходом в веб-интерфейсе Vertex AI. Создание набора данных занимает примерно 30 минут, а еще 30 минут — обучение модели.

Vertex AI также показывает показатели производительности для обученной модели, поскольку в качестве данных проверки он использует около 10% данных. Однако, поскольку нашей целью является участие в конкурсе Kaggle, нам необходимо классифицировать изображения в тестовом наборе, предоставленном Kaggle, и отправить наши прогнозы на проверку. Kaggle требует CSV с идентификаторами изображений и соответствующими метками для них. Vertex AI создает конечную точку REST для каждой развернутой модели, поэтому можно легко получить прогнозы, отправив каждое изображение в эту конечную точку.

После отправки наших результатов Kaggle показал, что наша модель набрала 91,55% в качестве оценки F1 и достигла 45-го места! Мы не победили всех экспертов-людей, но это все равно достижение, учитывая, как мало усилий и знаний потребовалось! Однако важно помнить, что нельзя улучшить это каким-либо другим способом, кроме сбора дополнительных данных и надежды на то, что AutoML создаст лучшую модель. Кроме того, если модель не соответствует требованиям к задержке или стоимости, то с этим действительно мало что можно поделать.

Последние мысли

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

Главный вывод — использовать AutoML, чтобы начать свой путь в области машинного обучения. Это может зайти довольно далеко, но в конечном итоге вы достигнете предела с точки зрения масштаба, стоимости, прозрачности или настраиваемости. Важно помнить, что AutoML может и не сэкономить время, но он позволит сосредоточить усилия на других вещах, например на улучшении качества данных.

Вот полный исходный код для вас, чтобы попробовать себя в конкурсе Petals to the Metal.