Основы ИИ

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

mm
Добавьте Unite.AI в избранные источники в Google

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

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

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

Решение проблемы глубокого обучения

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

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

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

Типы переносного обучения

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

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

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

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

Тонкая настройка сети

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

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

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

Примеры переносного обучения

Самые распространенные применения переносного обучения, вероятно, являются те, которые используют данные изображений в качестве входных данных. Это часто задачи прогнозирования/классификации. То, как свёрточные нейронные сети интерпретируют данные изображений, предрасполагает к повторному использованию аспектов моделей, поскольку свёрточные слои часто различают очень похожие признаки. Одним из примеров распространенной задачи переносного обучения является задача ImageNet 1000, огромный набор данных, содержащий 1000 разных классов объектов. Компании, которые разрабатывают модели, которые достигают высоких результатов на этом наборе данных, часто выпускают свои модели под лицензиями, которые позволяют другим повторно использовать их. Некоторые из моделей, которые были получены в результате этого процесса, включают модель Microsoft ResNet , модель Google (GOOGL ) Inception и группу моделей Oxford VGG.

Блогер и программист с специализацией в Machine Learning и Deep Learning темах. Daniel надеется помочь другим использовать силу ИИ для социального блага.