2

Я заметил, что самая тонкая настройка CNN поверх нового набора данных выполняется только на «последнем» полностью подключенном (fc) слое.тонкая настройка CNN с нижнего слоя fc

Я заинтересован в тонкой настройке с «первого» полностью подключенного уровня: то есть, я хочу использовать функции среднего уровня из сверток и слоев объединения, как они есть (предположим, что он обучен на ImageNet), но затем подгоните все слои fc к моему новому набору данных.

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

ответ

3

Теоретически, чем глубже вы тонко настраиваетесь, тем лучше ваша модель подходит для ваших данных. Итак, если бы вы могли точно настроить всю модель - тем лучше.

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

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

+0

Большое вам спасибо! Я размышлял. У меня почти 1,5 М изображений со 100 классами, которые, как я полагаю, не являются тривиальной суммой. Будет ли это достаточно много, чтобы тренировать слои 2 ~ 3 fc и по-прежнему избегать переобучения? – ytrewq

+0

@CosmicRabbitMediaInc выглядит достаточно, чтобы тренировать всю сеть. Удачи – Shai

0

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

Это означает, что параметры, изученные уровнями FC, в большинстве случаев очень специфичны (зависит от данных) и в большинстве случаев не могут быть переданы.

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

Теперь вы можете пройти 2 пути отсюда.

  1. Используйте окончательный сплющенный вывод с последнего слоя Conv/Pooling как извлеченные функции для вашей проблемы и подготовьте модель ML на нем. Этот метод обычно используется, если ваш набор данных мал или не похож на предварительно подготовленную модель.
  2. Получите извлеченные функции, используя описанный выше метод, а затем используйте их для обучения нейронной сети FC. Как только вы достигли приличного уровня точности, он поверх последнего уровня conv/pooling предварительно подготовленной модели (не забудьте удалить слои FC orignal). Теперь замораживание (параметры сделаны постоянными и не меняются при обучении) большая часть предварительно подготовленной модели и позволяют только обучать последние несколько conv-слоев. Теперь обучите всю сеть тренироваться с очень небольшой скоростью обучения.

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

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