Толковый словарь по нейросетям и искусственному интеллекту
Прореживание
Категория термина
Dropout — это метод регуляризации в нейронных сетях, который используется для предотвращения переобучения (overfitting). Его суть заключается в случайном "выключении" части нейронов на этапе обучения, т.е. их временном исключении из архитектуры модели вместе со всеми входящими и исходящими связями.
На каждом обучающем шаге нейросети, при использовании dropout, определённый процент нейронов (например, 20–50%) случайным образом отключается. Это препятствует тому, чтобы отдельные нейроны слишком сильно подстраивались под тренировочные данные и «запоминали» их. На этапе инференса (применения модели) dropout не применяется, но веса масштабируются, чтобы компенсировать "прореживание".
Формула (упрощённая):
Если входной вектор:
x=[x1,x2,...,xn]x = [x_1, x_2, ..., x_n]И применяется маска dropout m∼Bernoulli(p)m \sim \text{Bernoulli}(p), то результат:
x′=x⋅mx' = x \cdot mгде pp — вероятность сохранить нейрон.
Основные характеристики:
- Параметр: вероятность dropout (обычно от 0.1 до 0.5).
- Тип регуляризации: стохастическая (случайная), накладывает шум на структуру сети.
- Применяется: в основном к полносвязным слоям (dense), но может использоваться и в сверточных, рекуррентных и других слоях.
Преимущества:
- Повышает способность модели к обобщению.
- Предотвращает совместное адаптирование нейронов.
- Прост в реализации и интеграции.
- Может использоваться совместно с другими методами регуляризации (например, L2-регуляризацией, batch normalization).
Области применения:
- Классификация изображений: например, в архитектурах вроде AlexNet, VGG.
- Обработка текста: применяется в LSTM/GRU, Transformer-слоях.
- Мультимодальные модели: генерация текста по изображению, и наоборот.
- Регрессия и другие задачи предсказания.
Пример:
В Keras:
from tensorflow.keras.layers import Dense, Dropout
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5)) # отключает 50% нейронов во время обучения
Альтернативы и дополнения:
- SpatialDropout: используется в сверточных сетях, отключает целые карты признаков.
- DropConnect: обнуляет не нейроны, а веса связей.
- Stochastic Depth: применяется в глубоких архитектурах (ResNet), отключает целые слои.
Значение:
Dropout — один из самых простых и эффективных инструментов борьбы с переобучением. Он позволяет обучать более устойчивые и обобщающие модели, особенно в случаях, когда данных недостаточно, а модель слишком сложна.