Определение

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

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

В зависимости от обоих:

  • Размер нового набора данных и
  • Сходство нового набора данных с исходным набором данных

Подход к использованию трансферного обучения будет другим. Есть четыре основных случая:

  1. Новый набор данных невелик, новые данные аналогичны исходным обучающим данным.
  2. Новый набор данных невелик, новые данные отличаются от исходных данных обучения.
  3. Новый набор данных большой, новые данные аналогичны исходным обучающим данным.
  4. Новый набор данных большой, новые данные отличаются от исходных данных обучения.

В большом наборе данных может быть один миллион изображений. Небольшие данные могут содержать две тысячи изображений. Граница между большим набором данных и небольшим набором данных в некоторой степени субъективна. При использовании трансферного обучения с небольшим набором данных возникает проблема переобучения.

Изображения собак и изображения волков будут считаться подобными; изображения будут иметь общие характеристики. Набор данных изображений цветов будет отличаться от набора данных изображений собак.

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

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

Демонстрационная сеть

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

Вот общий обзор того, что делает сверточная нейронная сеть:

  • первый слой обнаружит края изображения
  • второй слой обнаружит формы
  • третий сверточный слой обнаруживает функции более высокого уровня

Каждый случай трансферного обучения будет использовать предварительно обученную сверточную нейронную сеть по-разному.

Случай 1: небольшой набор данных, похожие данные

Если новый набор данных небольшой и похож на исходные данные обучения:

  • отрезать конец нейронной сети
  • добавить новый полностью связанный слой, который соответствует количеству классов в новом наборе данных
  • рандомизируйте веса нового полностью связанного слоя; заморозить все веса из предварительно обученной сети
  • обучить сеть обновлению весов нового полностью связанного слоя

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

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

Вот как визуализировать этот подход:

Случай 2: небольшой набор данных, разные данные

Если новый набор данных небольшой и отличается от исходных данных обучения:

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

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

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

Вот как визуализировать этот подход:

Случай 3: большой набор данных, похожие данные

Если новый набор данных большой и похож на исходные данные обучения:

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

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

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

Вот как визуализировать этот подход:

Случай 4: большой набор данных, разные данные

f новый набор данных большой и отличается от исходных обучающих данных:

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

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

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

Вот как визуализировать этот подход:

Использованная литература:

Udacity.com: Глубокое обучение Nanodegree

Coursera.com: специализация по глубокому обучению