Принуждение переобучения на простой модели

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

Я пытаюсь провести очень простой эксперимент.

Я хочу выучить тригонометрическую функцию (скажем, $sin(x)$) в интервале $[-2\pi, 2\pi]$. Я хочу усложнить задачу, добавив шум в тренировочный набор: вместо того чтобы иметь только одну характеристику, я добавляю вторую характеристику, которая не несет никакого сигнала и является просто случайным шумом. Я также добавляю немного шума к $sin(x)$.

Моя модель должна уметь делать две вещи:

  • Во-первых, благодаря регуляризации ($l1$ и $l2$ регуляризация) я хочу, чтобы веса, связанные со второй характеристикой, стремились к нулю во время тренировки. Я регулярно занимаюсь только весами, связанными со второй характеристикой, и это, похоже, работает.

  • Во-вторых, я хочу увидеть переобучение моей модели, т.е. хочу увидеть, как функция потерь стремится к 0, а валидационная потеря начинает увеличиваться после определенной эпохи, как на этом изображении здесь.

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

Есть идеи? Вот код, который я написал

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

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

### 1. Параметры модели и выбор архитектуры

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

### 2. Нагруженность модели и количество эпох

Необходимо увеличить количество эпох обучения. Поскольку в вашем случае данных достаточно мало (30 образцов), модель может лучше подстраиваться под шумы, увеличивая количество эпох, чтобы она могла «запомнить» данные. Это в свою очередь будет способствовать переобучению.

### 3. Регуляризация

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

### 4. Генерация шума

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

### 5. Разделение данных

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

### 6. Мониторинг производительности

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

### 7. Визуализация

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

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

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

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