Дилемма автоматического машинного обучения

Автоматическое машинное обучение

Взгляд инженера инфраструктуры

Фото Фабрицио Конти на Unsplash

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

AutoML на кривой Гартнера (изображение автора)

В данной статье мы должны понять текущее состояние AutoML и найти путь к будущему. Я являюсь инженером-разработчиком, который создал две библиотеки AutoML: AutoKeras и KerasTuner. В этой статье я помогу вам рассмотреть, что такое AutoML, и какие отсутствующие элементы препятствуют широкому принятию AutoML.

Что такое AutoML?

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

С точки зрения ввода и вывода, AutoML делает следующее.

AutoML с точки зрения ввода и вывода (изображение автора)

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

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

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

Как работает AutoML?

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

Можно представить это как цикл for, включающий следующие шаги:

  • Создать конфигурацию модели.
  • Создать и обучить модель с помощью конфигурации.
  • Оценить модель на валидационных данных.
  • Изучить результаты оценки для улучшения конфигурации.

Умный агент в системе AutoML генерирует конфигурации и улучшается с течением времени, изучая результаты оценки.

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

  • Аппроксимация функции. Умный агент пытается выявить связь между конфигурациями модели и производительностью модели. В математическом языке это означает попытку выучить функцию y=f(x), где x – это конфигурация модели, а y – производительность модели.
  • Максимизация функции. Конечная цель умного агента – найти конфигурацию модели с наилучшей производительностью. Другими словами, мы хотим найти x, который максимизирует значение f(x), т.е. argmax f(x).

Влияние AutoML

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

Что AutoML может сделать сегодня?

Применение AutoML сегодня довольно ограничено, в основном сосредоточено на следующих двух аспектах.

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

Что AutoML может сделать в будущем?

Ожидания относительно того, что AutoML может сделать в будущем, намного выше, чем то, что он может сделать сегодня. Мы сводим его к трем основным целям:

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

Проблемы AutoML

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

Проблема 1: Отсутствие бизнес-поощрений

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

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

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

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

Долгосрочное решение: К сожалению, идеального решения для снижения стоимости разметки данных пока не существует. Мы будем полагаться на будущие научные открытия в области “обучения на малом объеме данных”. Один из возможных путей – инвестирование в передачу знаний.

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

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

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

Проблема 2: Отсутствие поддерживаемости

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

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

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

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

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

Проблема 3: Недостаток поддержки инфраструктуры

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

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

Чтобы решить эту проблему, мы разработали KerasCV и KerasNLP – специализированные библиотеки для задач компьютерного зрения и обработки естественного языка, построенные на основе Keras. Они оборачивают модели последнего поколения в простые, понятные, но гибкие API, которые соответствуют требованиям системы AutoML.

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

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

Я не вижу четкого решения этой проблемы пока. Мы должны дать некоторое время развитию фреймворков глубокого обучения. Как-то раз определение модели будет независимым от кода для размещения аппаратного обеспечения.

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

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

Выводы

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