Как я могу заставить модель разучиться? Обратное распространение ошибок?

Вопрос или проблема

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

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

Как я могу перепроучить модель, чтобы она показывала хуже результаты на обучающих данных? Я пробовал:

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

введите описание изображения здесь

Добавьте небольшое количество случайного шума к весам/смещениям. Я бы умножал каждый вес/смещение $i$ на $(1 + \epsilon \cdot R_i)$, где $R_i$ — это случайное число с нулевым средним, а $\epsilon$ контролирует относительное количество добавленного шума. Установите $\epsilon$ малым при первой попытке (возможно, $|\epsilon \cdot R_i| \sim .01$). Затем попробуйте перепроучить. Если модель найдет лучшее решение, отлично; в противном случае повторите с большим $\epsilon$. Это, по сути, просто имитация отжига.

Ответ или решение

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

1. Рандомизация весов

Одним из самых эффективных способов является добавление небольшого количества случайного шума к весам или смещениям модели. Вы можете изменить веса, умножив каждый из них на ((1 + \epsilon \cdot R_i)), где (R_i) — это случайное число с нулевым ожиданием. Параметр (\epsilon) контролирует величину добавляемого шума. Рекомендуется начинать с небольших значений (|\epsilon \cdot R_i| \sim 0.01). После этого попробуйте повторно обучить модель.

2. Изменение гиперпараметров

Если добавление шума не дало желаемых результатов, вы можете попробовать изменить гиперпараметры вашей модели. Например:

  • Увеличение скорости обучения: Вы можете попытаться увеличить скорость обучения, чтобы модель могла "перескочить" текущее местоположение в пространстве потерь.
  • Изменение режима оптимизации: Попробуйте использовать другой оптимизатор. Например, смените Adam на SGD с моментом или наоборот, так как разные оптимизаторы ведут себя по-разному в зависимости от локальных минимумов.

3. Начальная инициализация

Запустите обучение модели с заново инициализированными весами. Вы можете попробовать использовать различные методы инициализации, такие как Xavier или He, чтобы изменить начальные условия обучения.

4. Увеличение регуляризации

Увеличение параметров регуляризации (например, L1 или L2) может помочь заставить модель быть менее зависимой от тренировочных данных, что может привести к уменьшению производительности на тренировочной выборке. Также можете попробовать использовать дроп-аут на уровне сети.

5. Увеличение данных

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

6. Изменение архитектуры сети

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

7. Обучение на менее информативных данных

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

Каждый из этих подходов поможет вам соответственно заставить модель "разучиться" и ослабить её связь с избыточными паттернами в тренировочных данных. Экспериментируйте с этими методами, и, надеюсь, вы сможете вернуться к желаемому минимуму.

Оцените материал
Добавить комментарий

Капча загружается...