Автоматическое машинное обучение или AutoML: объяснение

Два самых больших препятствия на пути использования машинного обучения (как классического, так и глубокого обучения) - это навыки и вычислительные ресурсы. Вы можете решить вторую проблему, вложив в нее деньги либо на покупку ускоренного оборудования (например, компьютеров с высокопроизводительными графическими процессорами), либо на аренду вычислительных ресурсов в облаке (например, экземпляров с подключенными графическими процессорами, TPU и ПЛИС).

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

Что такое AutoML?

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

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

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

Что такое оптимизация гиперпараметров?

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

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

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

Что такое разработка функций?

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

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

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

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

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

Некоторые преобразования, которые люди используют для создания новых функций или уменьшения размерности векторов признаков, просты. Например, вычесть Year of Birthиз Year of Deathи вы строите Age at Death, который является главным независимой переменной для жизни и анализа смертности. В других случаях конструкция функции может быть не такой очевидной.

Что такое трансферное обучение?

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

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

Реализации AutoML

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

Сервисы AutoML

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

Некоторые более мелкие компании также предлагают услуги AutoML. Например, DataRobot, который утверждает, что изобрел AutoML, имеет прочную репутацию на рынке. И хотя dotData занимает крошечную долю рынка и посредственный пользовательский интерфейс, она обладает мощными возможностями разработки функций и охватывает множество корпоративных сценариев использования. H2O.ai AI без драйверов, который я рассмотрел в 2017 году, может помочь специалисту по анализу данных создавать модели, такие как мастер Kaggle, унифицированным способом выполнять проектирование функций, сканирование алгоритмов и оптимизацию гиперпараметров.

Фреймворки AutoML

AdaNet - это легкая платформа на основе TensorFlow для автоматического обучения высококачественных моделей с минимальным вмешательством экспертов. Auto-Keras - это библиотека программного обеспечения с открытым исходным кодом для автоматизированного машинного обучения, разработанная в Texas A&M, которая предоставляет функции для автоматического поиска архитектуры и гиперпараметров моделей глубокого обучения. NNI (Neural Network Intelligence) - это набор инструментов от Microsoft, который помогает пользователям проектировать и настраивать модели машинного обучения (например, гиперпараметры), архитектуры нейронных сетей или параметры сложной системы эффективным и автоматическим способом.

Вы можете найти дополнительные проекты AutoML и довольно полный и актуальный список статей по AutoML на GitHub.