Потеря валидации возрастает после некоторого переходного обучения эпохи

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

      def addTopModelMobileNet(bottom_model, num_classes):

top_model = bottom_model.output
top_model = GlobalAveragePooling2D()(top_model)
top_model = Dense(64,activation = 'relu')(top_model)
top_model = Dropout(0.25)(top_model)
top_model = Dense(32, activation = 'relu')(top_model)
top_model = Dropout(0.10)(top_model)
top_model = Dense(num_classes, activation = 'softmax')(top_model)

return top_model

Я использую альфа 0,25, скорость обучения 0,001, скорость обучения спада / эпоху, импульс нестерова 0,8. Я также использую обратный вызов с ранней остановкой с терпением 10 эпох.

2 ответа

Я почти наверняка сталкиваюсь с этой ситуацией каждый раз, когда тренирую глубокую нейронную сеть:

  • Вы можете повозиться с параметрами так, чтобы их чувствительность к весам уменьшилась, то есть они не изменили бы и без того "близкие к оптимальным" веса. Некоторые из этих параметров могут включать альфа оптимизатора, попробуйте уменьшать его постепенно. Импульс также может влиять на изменение веса.

  • Вы даже можете постепенно сократить количество бросающих школу.

Это явление называется переобучением. Примерно к 70 эпохам он заметно перекрывается.

На это есть несколько причин.

  1. Данные: пожалуйста, сначала проанализируйте свои данные. Сбалансируйте несбалансированные данные. Используйте увеличение, если разброс данных плохой.

  2. Настройка слоя: попробуйте еще немного настроить выпадающий гиперпараметр. Я бы посоветовал вам также попробовать добавить слой BatchNorm.

  3. Наконец, попробуйте уменьшить скорость обучения до 0,0001 и увеличить общее количество эпох. Не используйте EarlyStopping в данный момент. Посмотрите историю тренировок. Иногда глобальные минимумы не могут быть достигнуты из-за каких-то странных локальных минимумов.

Другие вопросы по тегам