Алгоритм машинного обучения имеет параметры и гиперпараметры. Параметры изучаются и оптимизируются на основе данных, а гиперпараметры настраиваются и влияют на сам процесс обучения. В этой статье мы узнаем, как настроить гиперпараметры и, в частности, как это сделать на 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 масштабируемым образом в облаке!