И его важность для AutoML

В последние годы произошел взрыв в разработке новых архитектур машинного обучения, которые позволяют решать задачи, когда-то непостижимые для ИИ. Хотя эта статья может бесконечно восхищаться этими захватывающими разработками, вместо этого она будет посвящена необходимой структуре, которая помогает ИИ выйти за пределы человеческого разума. Скучный? Может быть. Но представьте себе микросервис, который может оптимизировать любую модель машинного обучения, поскольку он инвариантен к языку, инфраструктуре и желаниям хранилища результатов / моделей. В Capital One я горжусь тем, что помог создать облачную платформу оптимизации гиперпараметров, не зависящую от системы и языка, которая помогла нам достичь самых современных результатов.

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

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

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

Гиперпараметры - те, которые изменяют способ обучения модели выполнять свою задачу
(например, метод оптимизации, пакетную нормализацию и т. д.) или возможности обучения
модели (структура самой модели, т. е. количество скрытых слоев,
размер слоев и т. д.).

Параметры модели - параметры, которые итеративно изучаются во время обучения модели
(веса и смещения модели).

Например, если я хочу научить животное новому трюку, некоторые из гиперпараметров могут быть такими: тип / порода / возраст животного; как я дрессирую животное; угощения, используемые во время тренировок; количество тренировок и т. д., потому что они либо влияют на структуру их мозга, либо на процесс обучения; однако процесс обучения животного - это то, что оптимизирует мозг животного, параметры модели.

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

Важность масштабирования

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

Важность агностицизма

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

  1. Язык программирования
  2. Библиотека оптимизации
  3. Служба управления моделями

Кроме того, для переносимости или безопасности существуют следующие три вторичных независимых требования:

1. Инфраструктура

2. Возможность развертывания / контейнеризация

3. Настраиваемый / управляемый через RESTful API.

Оптимизация гиперпараметров в Capital One

Локальные разработки на ноутбуке

Сегодняшние возможности машинного обучения позволяют среднему пользователю довольно просто загрузить новейшие пакеты для анализа данных (например, scikit-learn и т. Д.) И начать разработку моделей на местном уровне. Однако маловероятно, что модель будет работать оптимально, и локальная оптимизация гиперпараметров может быть не масштабируемой в зависимости от размера оптимизируемой модели, размера оцениваемого пространства гиперпараметров, применяемого метода оптимизации и / или данные для обучения модели. Эти ограничения проистекают из локальных ограничений памяти и скорости ЦП / распараллеливания задач гиперпараметров.

Оптимизация облака с ручным управлением

Capital One активно инвестируется в облачную инфраструктуру, а это означает, что развертывание виртуальных машин или контейнеров для распараллеливания задач гиперпараметров относительно просто. Им можно управлять как в облаке, так и локально через удаленный доступ. Однако для управления результатами и развертывания новых поисков по гиперпараметрам для каждого контейнера / виртуальной машины требуется обширный опыт DevOps. Кроме того, ограничения безопасности могут не допускать такого обмена данными.

Автоматическая оптимизация облака

Здесь все становится захватывающим. Вместо того, чтобы самостоятельно управлять оптимизацией, почему бы не позволить сервису заниматься этим? Мне посчастливилось создать такой продукт, и для начала обучения у него есть только два требования:

  1. Репозиторий GitHub с вашей моделью
  2. Короткий скрипт конфигурации JSON.

Ниже приведен пример сценария, отправляемого в этот микросервис настройки гиперпараметров:

```
{
 “code_github”: “https://github.com/.../optimizer_example",
  “command”: “python model_script.py”, # This could be running java, c++, etc.
  “dir”: “path/in/repo/to/script”,
  “install_script”: “install.sh”, # pre installation script o setup the environment
  “primary_result_key”: “accuracy”, # what we are optimizing
  “backend”: “aws”, # service we are deploying our infrastructure within
  “resources”: {
     “instance_count”: 10,
     “instance_type”: “p3.8xlarge”
  },
  “optimizer”: {
    # In here we specify the optimizer service type and any optimizer setup specifics
  },
  “search”: {
       # In here, we add the configuration sent to the optimizer service
       # For instance, with SVM we could search kernel and penalty
  },
  “model_storage”:{ # where we store our model after running a hyperparameter set
    “type”: “s3”,
    “bucket”: “<YOUR_S3_BUCKET_S3://>”
    “model_dir”: “saved_model”,
     “clean_model_dir_flag”: true
  }
}
```

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

Эта структура оптимизации гиперпараметров позволяет легко:

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

Хотя первые два момента необходимы / полезны, для AutoML критически важна история обучения модели, о которой я расскажу далее.

Важность и применение в AutoML

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

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

Текущие и будущие приложения

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

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

Команда по инновациям в данных из Университета Иллинойса Capital One, лаборатория Урбана-Шампейн. Спасибо за редактирование: Ан Чыонг, Марк Уотсон, Реза Фаривар и Остин Уолтерс.

Это мнение автора. Если в этом посте не указано иное, Capital One не является аффилированным лицом и не одобрен ни одной из упомянутых компаний. Все используемые или отображаемые товарные знаки и другая интеллектуальная собственность являются собственностью соответствующих владельцев. Эта статья принадлежит © 2019 Capital One.