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

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

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

  • Упакуйте обучающий код машинного обучения в контейнер Docker и обучите его на платформе AI.
  • Настройка гиперпараметров на платформе ИИ
  • Разверните модель на платформе AI и обслуживайте запросы

Данные

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

Алгоритм машинного обучения

В целях иллюстрации мы выберем Стохастический градиентный спуск (SGD) с алгоритмом логарифмических потерь для обучения модели. Алгоритм прост, но масштабируем для больших наборов данных и может обрабатывать большое количество функций. Мы будем использовать реализацию scikit-learn, как показано в обучающем коде в нашем репозитории git.

Настройка гиперпараметров

Обучение машинному обучению на больших наборах данных может быть дорогостоящим в вычислительном отношении, особенно в части настройки гиперпараметров. Облачные вычислительные ресурсы по запросу могут предложить эффективное решение, мы можем выбирать, на каком оборудовании работать, а также работать распределенно. Здесь мы будем использовать Google Cloud AI Platform. Для алгоритма потери журнала SGD мы настроим два гиперпараметра:

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

Шаги, связанные с нашей процедурой обучения и настройки, следующие. Во-первых, нам нужно установить gcloud sdk на ваш локальный компьютер и настроить доступ к вашим ресурсам GCP из командной строки. Затем мы создаем образ докера, содержащий наше обучение машинному обучению, а также код настройки гиперпараметров, который затем передается в наш облачный реестр контейнеров. Теперь, когда у нас есть готовый образ докера, мы можем создать и отправить обучающее задание на платформу AI. Здесь мы можем использовать гибкость, которую предлагает платформа ИИ с точки зрения того, на каком оборудовании ее запускать, например, ЦП, ГП, ТПУ, распределенное обучение между несколькими узлами, аппаратные ускорители для рабочих узлов и т. д. После процесса настройки находят лучшие гиперпараметры на основе при оптимизации нашего выбора метрики (например, точности в наборе проверки) мы используем эти гиперпараметры и обучаем нашу окончательную модель всему набору данных.

Развернуть и обслуживать

В рамках учебного процесса мы сохранили нашу окончательную модель в корзину облачного хранилища. Платформа AI позволяет нам создавать ресурс модели прогнозирования и ресурс версии. Мы используем создание моделей gcloud ai-platform для создания ресурса модели и создание версий gcloud ai-platform для создания ресурса версии и указания пути к облачному хранилищу для нашей сохраненной модели.

Развернув нашу модель, мы можем делать к ней прогнозные запросы через конечные точки REST API.

Код

Полный исходный код этой статьи находится в нашем репозитории git, и его можно загрузить, выполнив команду —

git clone https://[email protected]/chandangope1/hypertune.git

Все шаги, описанные выше, доступны в виде рабочего кода в блокноте jupyter. Вам нужно будет загрузить CSV-файлы набора данных для обучения и проверки в корзину Cloud Storage в своей учетной записи, а затем настроить путь в записной книжке.

Заключение

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