Введение в трансферное обучение | Нишант Нагпал | Середина
Введение
Обучение глубокой нейронной сети требует очень много времени и больших вычислительных ресурсов. Для хорошего обучения требуется большой набор данных для обучения, а для обучения большого набора данных требуются дни и дни. Тогда как мы можем оптимизировать процесс обучения за несколько итераций? Ответ: трансферное обучение.
Модели, созданные для конкретных задач, можно повторно использовать для построения моделей для аналогичных задач. Например, если нам нужно построить модель для классификации изображений, мы можем повторно использовать начальную модель Google в качестве отправной точки для построения нашей собственной модели классификации изображений. Таким образом, мы можем сэкономить много денег и времени. Давайте разберемся с несколькими подходами к повторному использованию исходной модели для построения новой модели с использованием трансферного обучения.
Исходная модель
Давайте сначала разберемся, как обученные глубокие нейронные сети хранят информацию внутри сети. Все скрытые слои в нейронной сети содержат определенные знания, называемые функциями. Начальные скрытые слои содержат очень общие характеристики данных, и по мере продвижения слоев обучение в скрытых слоях становится более конкретным для задачи. Модель обучаемого может быть представлена в двух частях: конфигурации сети и весовых коэффициентах.
Подходы к переносу обучения из исходной модели
Существует 4 подхода к повторному использованию знаний из исходной модели:
- Заморозить конфигурацию и веса исходной модели
Используйте, когда набор данных для обучения небольшой, а задача аналогична задаче исходной модели.
При таком подходе мы сохраняем всю конфигурацию сети как есть. Выходной слой повторно обучается с новыми весами в новом наборе данных. Этот метод применяется, когда у нас есть небольшой набор данных для повторного обучения, поскольку небольшой набор данных не сможет объединить сеть, обновив вес всех скрытых слоев. - Заморозить конфигурацию из исходной модели
Используйте, когда набор данных для обучения достаточно велик, а задача аналогична задаче исходной модели.
В этом подходе к трансферному обучению единственное отличие от предыдущего метода заключается в том, что у нас есть достаточно большой новый набор данных для повторного обучения, что позволяет сети сходиться, обновляя вес со всех слоев. В этом методе конфигурация сети остается неизменной. - Используйте конфигурацию исходной модели в качестве отправной точки и зафиксируйте веса скрытых слоев из исходной модели.
Используйте, когда набор данных для обучения невелик и задача требует дополнительных функций для изучения, чем задача исходной модели.
В этом методе мы сохраняем сетевую конфигурацию предварительно обученной модели, но в конце добавляем еще несколько скрытых слоев. Веса, связанные со скрытыми слоями из предварительно обученной модели, остаются прежними, поскольку мы повторно обучаем только дополнительные слои. Этот метод также рекомендуется, когда у нас есть новый набор данных небольшого размера для повторного обучения. - Используйте конфигурацию и веса из исходной модели в качестве отправной точки.
Используйте, когда набор данных для обучения достаточно велик и задача требует дополнительных функций для изучения, чем задача исходной модели.
В этом методе мы повторно используем исходную модель как отправную точку для обучения новой задаче. Мы добавляем еще несколько скрытых слоев к сети исходной модели. Поскольку у нас есть большой набор данных для обучения новым задачам, мы также пытаемся обновить веса, связанные с каждым слоем исходной модели.
Ссылка —