🔴 Сложный ⏱️ 25 минут

Переобучение и недообучение: когда ИИ учится неправильно

Переобучение и недообучение: когда ИИ учится неправильно

🎯 Зачем это нужно?

Представь: ты готовишься к ЕГЭ, решая варианты прошлых лет 📚. Если зазубришь ответы наизусть - получишь 100 баллов на тренировочных, но провалишься на реальном экзамене! А если решишь всего 10 задач - не сдашь даже тренировочные.

Точно так же ведут себя модели машинного обучения: 🤖 ChatGPT: Обучен на триллионах текстов, но если бы запомнил их дословно - не смог бы генерировать новые тексты 📱 Рекомендации YouTube: Анализируют твое поведение, но не копируют действия других пользователей 1:1 🎮 AlphaGo: Изучил миллионы партий, но выиграл у чемпионов мира благодаря обобщению стратегий, а не запоминанию ходов

📚 История вопроса

В 1995 году Vladimir Vapnik сформулировал дилемму bias-variance, объяснив почему модели “тупят” 🧠. Но термины overfitting/underfitting популяризировались только с приходом глубокого обучения в 2010-х.

Забавный факт: первые нейросети 1980-х постоянно переобучались на крошечных датасетах (100-1000 примеров), поэтому ИИ-зима длилась до появления больших данных!

💡 Интуиция

[МЕДИА: image_01] Описание: Три графика с точками данных и кривыми разной сложности - недообучение (прямая), идеальная модель (плавная кривая), переобучение (зигзаг через все точки) Промпт: “educational illustration showing three regression curves on scatter plot: underfitting with simple straight line, good fit with smooth curve, overfitting with zigzag line through all points, clean mathematical style, blue data points, different colored curves”

Представь, что модель - это ученик, а данные - учебные задачи:

🔴 Недообучение (Underfitting) = Ленивый ученик

  • Решает только простые примеры
  • Не видит закономерности
  • Плохо работает везде - и на знакомых, и на новых задачах

🟡 Идеальная модель = Умный ученик

  • Понимает принципы, а не зубрит
  • Хорошо решает и знакомые, и новые задачи
  • Находит баланс между простотой и точностью

🔴 Переобучение (Overfitting) = Зубрила

  • Запоминает каждую задачу наизусть со всеми опечатками
  • Отлично работает на знакомых примерах
  • Беспомощен перед новыми задачами

📐 Формальное определение

Переобучение: модель показывает высокое качество на тренировочных данных, но плохое - на валидационных/тестовых.

Недообучение: модель показывает плохое качество на всех данных.

Математически это выражается через bias-variance decomposition:

Total Error = Bias² + Variance + Noise

  • Bias (смещение): насколько модель систематически ошибается
  • Variance (разброс): насколько сильно модель меняется при разных выборках
  • Noise: неустранимая ошибка в данных

🔴 Недообучение = высокий bias, низкая variance 🟡 Идеал = низкий bias, низкая variance
🔴 Переобучение = низкий bias, высокая variance

🔍 Примеры с разбором

Пример 1: Классификация спама

Допустим, обучаем фильтр спама на 10,000 писем:

[МЕДИА: image_02] Описание: Кривые обучения показывающие точность на тренировочной и валидационной выборках для трех сценариев Промпт: “learning curves graph showing training and validation accuracy over epochs, three scenarios: underfitting (both curves low and flat), good fit (curves converge at high accuracy), overfitting (training accuracy high, validation accuracy drops), professional data visualization style”

🔴 Недообученная модель:

  • Правило: “Если есть слово ‘деньги’ → спам”
  • Train accuracy: 60%
  • Test accuracy: 58%
  • Проблема: слишком простая, пропускает много спама

🟡 Хорошая модель:

  • Анализирует 50+ признаков: слова, длину, время отправки
  • Train accuracy: 95%
  • Test accuracy: 94%
  • Успех: нашла баланс!

🔴 Переобученная модель:

  • Запомнила каждое письмо с точностью до символа
  • Train accuracy: 99.9%
  • Test accuracy: 70%
  • Провал: зубрила, не понимает суть

Пример 2: Полиномиальная регрессия

Предскажем цену дома по площади:

# Недообучение - линейная модель
# y = a*x + b
model_simple = LinearRegression()

# Идеальная модель - полином 2-3 степени  
# y = ax³ + bx² + cx + d
model_good = PolynomialFeatures(degree=3)

# Переобучение - полином высокой степени
# y = ax¹⁰⁰ + bx⁹⁹ + ... + z  
model_overfit = PolynomialFeatures(degree=100)

🎮 Практика

Базовый уровень 🟢

Задание 1: У тебя есть модель для предсказания оценок учеников. Train loss = 0.1, Validation loss = 0.9. Что происходит?

✅ Ответ Переобучение! Большой разрыв между тренировочной и валидационной ошибками

Задание 2: Модель предсказания погоды: Train accuracy = 55%, Test accuracy = 53%. Диагноз?

✅ Ответ Недообучение. Обе метрики низкие и примерно равны

Задание 3: Какая кривая обучения соответствует хорошей модели: А) Train↑, Val→ Б) Train↑, Val↓ В) Train→, Val→?

✅ Ответ А) Обе кривые растут и сходятся на высоком уровне

Продвинутый уровень 🟡

Задание 4: Ты обучаешь нейросеть распознавать мемы. На каких признаках она может переобучиться?

✅ Ответ Водяные знаки, специфичные шрифты, случайные пиксели, метаданные изображений

Задание 5: Как early stopping помогает бороться с переобучением?

✅ Ответ Останавливает обучение, когда validation loss начинает расти, предотвращая запоминание деталей

Задание 6: У модели GPT-4 175B параметров. Почему она не переобучается на интернете?

✅ Ответ Огромный и разнообразный датасет, регуляризация, dropout, правильная архитектура

Челлендж 🔴

Задание 7: Предложи 3 способа диагностировать переобучение без валидационной выборки

✅ Ответ Cross-validation, анализ весов модели, тестирование на синтетических данных

Задание 8: Объясни парадокс: зачем современные нейросети делают overparametrized (больше параметров, чем данных), но не переобучаются?

✅ Ответ Double descent, implicit regularization, SGD как регуляризатор, lottery ticket hypothesis

⚠️ Частые ошибки

Ошибка: “Высокая точность = хорошая модель” ✅ Правильно: Важна точность на НОВЫХ данных, не на тренировочных 💡 Почему: Зубрежка ≠ понимание

Ошибка: “Переобучение всегда плохо”
Правильно: Легкое переобучение может быть полезно, важен баланс 💡 Почему: В реальности идеального баланса не существует

Ошибка: “Больше данных всегда решают переобучение” ✅ Правильно: Нужны КАЧЕСТВЕННЫЕ и разнообразные данные 💡 Почему: 1000 копий одного примера хуже 100 разных

Ошибка: “Regularization убивает производительность” ✅ Правильно: Регуляризация улучшает обобщающую способность 💡 Почему: Лучше немного потерять на тренировке, но выиграть на проде

🎓 Главное запомнить

Переобучение: запоминание вместо обучения (зубрила) ✅ Недообучение: слишком простая модель (не видит закономерности)
Цель: баланс между bias и variance ✅ Диагностика: кривые обучения и валидационные метрики

🔗 Связь с другими темами

Откуда пришли: Урок 303 дал понимание процесса обучения модели Куда ведем: Следующие уроки покажут конкретные техники борьбы:

  • Регуляризация (L1/L2, Dropout)
  • Кросс-валидация и правильное разбиение данных
  • Ансамбли и bagging/boosting
  • Data augmentation и feature engineering

Понял тему? Закрепи в боте! 🚀

Попрактикуйся на задачах и получи персональные рекомендации от AI

💪 Начать тренировку
💬 Есть вопрос? Спроси бота!