Dropout

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск

Bogdan Kormalov (Обсуждение | вклад)
(Новая: '''Dropout (прореживание нейронной сети)''' — это метод регуляризации искусс...)
К следующему изменению →

Версия 12:00, 18 июля 2026

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

Впервые Dropout был предложен в 2012 году исследовательской группой под руководством Джеффри ХинтонаHinton, G. E., Srivastava, N., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. R. (2012). Improving neural networks by preventing co-adaptation of feature detectors. arXiv preprint arXiv:1207.0580., а более подробное математическое и эмпирическое обоснование было опубликовано Нитишем Сриваставой в 2014 годуSrivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. (2014). Dropout: a simple way to prevent neural networks from overfitting. The Journal of Machine Learning Research, 15(1), 1929—1958.. В современном глубоком обучении Dropout является одним из базовых и наиболее широко используемых инструментов для повышения обобщающей способности моделей.

Содержание

Мотивация: Проблема сложной коадаптации признаков

Главная проблема, которую решает Dropout — это сложная коадаптация признаков (complex co-adaptation of features).

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

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

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

Принцип работы и математическая формулировка

Во время обучения (Training time)

На этапе обучения (прямого прохода) для каждого скрытого слоя сети генерируется бинарная маска (вектор) m, элементы которой принимают значения 0 или 1 из распределения Бернулли с вероятностью p (вероятность того, что нейрон будет сохранен):

m \sim \text{Bernoulli}(p)

Пусть h — вектор активаций скрытого слоя до применения Dropout. Тогда модифицированный вектор активаций \hat{h} вычисляется как их поэлементное произведение (произведение Адамара):

\hat{h} = h \odot m

Все нейроны, для которых значение маски равно 0, не передают сигнал дальше и не участвуют в вычислении градиента на этапе обратного прохода. Вероятность сохранения p — это гиперпараметр, который настраивается инженером. Обычно для скрытых слоев используется p = 0.5, а для входного слоя p = 0.8 (или dropout rate 1 — p = 0.2).

Во время логического вывода (Inference / Test time)

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

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

W_{\text{test}} = p W_{\text{train}}

Inverted Dropout (Инвертированный Dropout)

На практике в современных фреймворках машинного обучения, таких как PyTorch или TensorFlow, используется модификация алгоритма, называемая Inverted Dropout. Вместо масштабирования весов на этапе тестирования, масштабирование происходит прямо во время обучения. Активации делятся на p:

\hat{h} = \frac{h \odot m}{p}

Это позволяет оставить этап логического вывода (inference) максимально быстрым и неизменным, перенося вычислительную нагрузку балансировки на этап обучения.

Практическое применение в глубоком обучении

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

Полносвязные сети (Многослойный перцептрон): Dropout показывает наилучшие результаты в полносвязных слоях с большим количеством параметров, где риск коадаптации максимален. Классическое значение доли исключения (dropout rate): от 20 % до 50 % (p \in [0.5, 0.8]).

Сверточные нейронные сети (CNN): В сверточных слоях Dropout используется реже. Во-первых, количество параметров в фильтрах не так велико (благодаря разделению весов). Во-вторых, соседние пиксели в картах признаков (feature maps) сильно коррелированы, и случайное отключение отдельных пикселей не мешает сети восстановить информацию. Для CNN чаще применяют пространственный Dropout (Spatial Dropout), который обнуляет целые карты признаков, а не отдельные элементыTompson, J., Goroshin, R., Jain, A., LeCun, Y., & Bregler, C. (2015). Efficient object localization using convolutional networks. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 338—346)..

Рекуррентные нейронные сети (RNN, LSTM, GRU): Применение стандартного Dropout к рекуррентным связям нарушает способность сети запоминать долгосрочные зависимости. На практике (по методу Зарембы) Dropout применяют только к нерекуррентным соединениям (между слоями). Для регуляризации скрытых состояний используют вариационный Dropout (Variational Dropout)Gal, Y., & Ghahramani, Z. (2016). A theoretically grounded application of dropout in recurrent neural networks. Advances in neural information processing systems, 29..

Преимущества и недостатки

Преимущества:

Значительно снижает переобучение и улучшает обобщающую способность модели.

Вычислительно дешев: требует лишь генерации псевдослучайных чисел и поэлементного умножения.

Может интерпретироваться как неявный метод ансамблирования: обучение сети с Dropout эквивалентно обучению 2^n различных прореженных архитектур с общими весами, предсказания которых усредняются на этапе тестирования.

Недостатки:

Увеличивает время обучения: поскольку на каждой итерации обновляется лишь часть весов, для достижения сходимости сети с Dropout обычно требуется в 2-3 раза больше эпох.

Менее эффективен при наличии больших объемов данных (в режиме Big Data), где сеть и так не склонна к переобучению, и более эффективен на ограниченных выборках.

Литература

  • Hinton, G. E., Srivastava, N., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. R. (2012). Improving neural networks by preventing co-adaptation of feature detectors. arXiv preprint arXiv:1207.0580.
  • Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. (2014). Dropout: a simple way to prevent neural networks from overfitting. The Journal of Machine Learning Research, 15(1), 1929—1958.
  • Tompson, J., Goroshin, R., Jain, A., LeCun, Y., & Bregler, C. (2015). Efficient object localization using convolutional networks. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 338—346).
  • Gal, Y., & Ghahramani, Z. (2016). A theoretically grounded application of dropout in recurrent neural networks. Advances in neural information processing systems, 29.
  • Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press. (Глава 7: Regularization for Deep Learning).
Личные инструменты