← Назад к вопросам

Что такое Dropout?

2.0 Middle🔥 241 комментариев
#Глубокое обучение#Машинное обучение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Dropout: регуляризация для нейронных сетей

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

Основная идея

Во время обучения на каждом проходе Dropout случайно выбирает часть нейронов и временно отключает их (устанавливает в ноль) с вероятностью p (обычно 0.5 для скрытых слоёв).

Например, если есть 4 нейрона и Dropout=0.5, то примерно 2 из них будут отключены: Без Dropout: z = w₁x₁ + w₂x₂ + w₃x₃ + w₄x₄ С Dropout: z = w₁x₁ + w₂x₂ + 0x₃ + w₄x₄

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

Математика Dropout

Во время обучения: Output = mask * (z / (1-p)) где mask — случайная маска (0 или 1) с вероятностью (1-p)

Масштабирование на 1/(1-p) сохраняет ожидаемое значение выхода. Это называется inverted dropout.

Во время предсказания все нейроны используются без масштабирования.

Реализация в Keras

Добавить Dropout между слоями очень просто: keras.layers.Dropout(0.5) — отключить 50% нейронов.

Типичные значения:

  • Input слой: 0.1-0.2 (10-20%)
  • Скрытые слои: 0.2-0.5 (20-50%)
  • Output слой: НИКОГДА не используется

Почему Dropout работает?

  1. Уменьшает co-adaptation (зависимость) нейронов: каждый нейрон должен быть полезен самостоятельно
  2. Эквивалентен обучению ансамбля моделей, где каждая модель использует подмножество нейронов
  3. Добавляет шум, действуя как форма регуляризации

Сравнение с другими методами

Dropout работает особенно хорошо для нейронных сетей. L1/L2 регуляризация добавляет штраф к весам. Early stopping использует валидацию для остановки обучения. Batch normalization нормализует слои. Часто используют комбинацию этих методов.

Практические советы

  • Не используйте Dropout в output слое
  • Не используйте слишком высокие rates (> 0.7) без веских причин
  • Комбинируйте с Batch Normalization для лучших результатов
  • Dropout автоматически отключается при предсказании (model.predict)

Dropout — один из самых простых и эффективных способов борьбы с переобучением в нейронных сетях.