В этом блоге мы узнаем, что такое трансферное обучение, а также когда и как мы должны его использовать.

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

Идея:вместо того, чтобы кодировать нейронную сеть с нуля для решения нашей проблемы, мы можем повторно использовать существующую модель (VGG16).

Зачем передавать обучение?

Для обучения модели глубокого обучения часто требуется очень большой набор данных. Это приводит к проблеме переобучения, когда у нас нет большого набора данных.

Если мы будем тренировать нашу модель с большим количеством слоев, то существует очень высокая вероятность переобучения.

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

Набор данных Image-Net:

ILSVRC — это ежегодное соревнование по компьютерному зрению, разработанное на основе подмножества общедоступного набора данных компьютерного зрения под названием ImageNet. Таким образом, задачи и даже сам вызов часто называют конкурсом ImageNet.

Он содержит более 14 миллионов точек данных и более 20 000 категорий.

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

Когда и как применять трансферное обучение?

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

Случай 1. Наш набор данных очень мал, но похож на набор данных image-Net.

Заморозьте все слои и добавьте несколько плотных слоев костюма и обучите модель.

Случай 2. Когда наш набор данных большой и похож на набор данных Image-Net.

Точная настройка всей сети с небольшой скоростью обучения.

Случай 3. Набор данных среднего размера и аналогичен набору данных Image-Net.

Настройте последние слои. Заморозьте верхние слои.

Случай 4. Набор данных большой и не похож на набор данных Image-Net.

Инициализируйте веса сети с предварительно обученной моделью и переобучите всю модель.

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

С 2012 года появилось много моделей для решения классификации Image-Net. Ниже приведены некоторые модели:

  1. Alex-Net: Alex-net — это название сверточной нейронной сети, разработанной Алексом Крижевским. AlexNet содержал восемь слоев; первые пять были сверточными слоями, за некоторыми из них следовали слои максимального опроса, а последние три были полносвязными слоями. В нем использовалась ненасыщающая функция активации ReLU, которая показала улучшенные результаты обучения по сравнению с tanh и сигмоидой.

2. VGG-Net: версия 2 (VGG16 и VGG19): это упрощенная версия AlexNet с ядром 3*3, шагом = 1 и отступом = таким же.

3.RESNET(34,50,101,152): остаточные сети были разработаны, чтобы пропустить мертвое соединение и уменьшить влияние слоев на производительность.

Применение трансферного обучения (VGG16):

Мы будем применять трансферное обучение к набору данных RVL-CDIP.

Источник данных: https://www.cs.cmu.edu/~aharley/rvl-cdip/

Всего в наборе данных 400 000 изображений документов. В несжатом виде размер набора данных составляет ~ 100 ГБ и включает 16 классов типов документов по 25 000 образцов на каждый класс. Примеры классов включают электронную почту, резюме и счет-фактуру.

Цель:

Для данного изображения классифицируйте его в один из 16 классов.

Шаг 1. Импортируйте библиотеку

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

Я загружаю только некоторые образцы из набора данных RVL-CDIP.

Шаг 3. Создайте модель с помощью трансферного обучения (VGG16)

Шаг 4. Заморозьте верхние слои и добавьте несколько пользовательских плотных слоев.

Шаг 4. Поскольку моя проблема заключается в многоклассовой классификации с 16 классами, добавьте плотный слой из 16 единиц и скомпилируйте модель

Шаг 5. Просмотр окончательной модели:

Мы видим, что из 22 миллионов параметров мы тренируем только 10 миллионов параметров.

Шаг 6. Обучение окончательной модели:

Вывод:

  1. заморозить верхние слои предварительно обученной модели VGG16, поскольку набор данных был среднего размера.
  2. Чтобы предотвратить переоснащение, попробуйте перенести обучение.
  3. Используя трансферное обучение, я обучил очень меньше параметров, что сэкономило много времени.

4. Трансферное обучение работает лучше всего, когда у нас есть набор данных, аналогичный ImageNet.

Ссылки:

https://en.wikipedia.org/wiki/Transfer_learning



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