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

Преимущества AutoML

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

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

Недостатки AutoML

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

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

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

Концепции AutoML

Применительно к AutoML необходимо понять две основные концепции: поиск нейронной архитектуры и трансферное обучение.

Поиск нейронной архитектуры

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

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

Трансферное обучение

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

Решения AutoML

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

Авто-Keras

По данным официального сайта:

Auto-Keras - это программная библиотека с открытым исходным кодом для автоматизированного машинного обучения (AutoML). Он разработан DATA Lab Техасского университета A&M и участниками сообщества. Конечная цель AutoML - предоставить легкодоступные инструменты глубокого обучения для экспертов в предметной области с ограниченным опытом в области науки о данных или машинного обучения. Auto-Keras предоставляет функции для автоматического поиска архитектуры и гиперпараметров моделей глубокого обучения.

Его можно установить с помощью простой команды pip:

pip install auto-keras

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

Авто-Sklearn

Auto-Sklearn - это пакет автоматизированного машинного обучения, основанный на S cikit-learn. Это замена оценщика Scikit-learn. Его установка также осуществляется с помощью простой команды pip:

pip install auto-sklearn

В Ubuntu требуется среда сборки C ++ 11 и SWIG:

sudo apt-get install build-essential swig

Установка через Anaconda выглядит следующим образом:

conda install gxx_linux-64 gcc_linux-64 swig

Невозможно запустить Auto-Sklearn в Windows. Однако можно попробовать некоторые хаки, такие как образ докера или запуск через виртуальную машину.

Инструмент оптимизации конвейера на основе дерева (TPOT)

Согласно его официальному сайту:

Цель TPOT - автоматизировать построение конвейеров машинного обучения путем объединения гибкого представления конвейеров в виде дерева выражений со стохастическими алгоритмами поиска, такими как генетическое программирование. TPOT использует основанную на Python библиотеку scikit-learn в качестве своего ML-меню.

Это программное обеспечение с открытым исходным кодом и доступно на GitHub.

AutoML от Google

На официальном сайте указано, что:

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

Решение AutoML от Google не является открытым исходным кодом. Его расценки можно посмотреть здесь.

H20

H2O - это распределенная платформа машинного обучения с открытым исходным кодом. Он доступен как в R, так и в Python. Этот пакет обеспечивает поддержку статистических алгоритмов и алгоритмов машинного обучения.

Применение AutoML к реальным проблемам

Теперь давайте посмотрим, как мы будем использовать Auto-Keras и Auto-Sklearn для решения реальной проблемы.

Реализация Auto-Keras

Я настоятельно рекомендую запустить следующий пример в Google Colab, если мы не используем машину с высокой вычислительной мощностью. Также важно убедиться, что мы используем среду выполнения GPU в нашем Google Colab. Первым шагом здесь является установка Auto-Keras в нашей среде выполнения Colab.

! pip install autokeras

Мы собираемся выполнить классификацию изображений по набору данных MNIST. Первый шаг - импортировать этот набор данных и классификатор изображений. Набор данных импортируется из Keras, тогда как классификатор изображений импортируется из Auto-Keras. Поскольку мы строим модель, которая распознает рукописные цифры на основе предварительно обученных моделей, мы классифицируем это как проблему контролируемого обучения. Затем мы проверяем точность модели на изображениях цифр, с которыми она не сталкивалась.

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

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

  1. Указание Verbose как True означает, что процесс поиска будет распечатан на экране, чтобы мы могли его увидеть.
  2. В методе подбора time_limit означает ограничение по времени поиска в секундах.
  3. final_fit - это последнее обучение, которое происходит после того, как модель нашла лучшую архитектуру. Указание retrain как истина означает, что веса модели будут повторно инициализированы.
  4. Печать y покажет нам точность после оценки модели на тестовом наборе.

Это все, что нам нужно для классификации изображений с помощью Auto-Keras. Очень мало строк кода, и Auto-Keras сделает за нас всю тяжелую работу.

Реализация Auto-Sklearn

Реализация Auto-Sklearn очень похожа на реализацию Auto-Keras, описанную выше. Мы проведем аналогичную классификацию, используя набор данных цифр. Во-первых, нам нужно убрать с пути несколько операций импорта:

  1. autosklearn.classification , который мы будем использовать для загрузки классификатора позже
  2. sklearn.model_selection для выбора модели
  3. sklearn.datasets для загрузки в набор данных
  4. import sklearn.metrics для измерения производительности модели

Как обычно, мы загружаем набор данных и разбиваем его на обучающий и тестовый набор. Затем мы импортируем AutoSklearnClassifier из autosklearn.classification . Как только это будет сделано, мы подгоняем классификатор к нашему набору данных, делаем прогнозы и проверяем точность. Это все, что тебе нужно сделать.

Что дальше?

Пакеты автоматизированного машинного обучения все еще находятся в активной разработке. Мы ожидаем увидеть больше достижений в этой области в 2019 году. За ходом работы над этими пакетами можно следить, следя за официальными сайтами документации. Можно также внести свой вклад в эти пакеты, сделав запрос на перенос на GitHub. Более подробную информацию и примеры про Auto-Keras и Auto-Sklearn можно найти на их официальном сайте.



Обсудите этот пост в Hacker News и Reddit.

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

Являясь независимой редакцией, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить лучшие модели машинного обучения.