Ответ
Dropout — метод регуляризации, который случайным образом "отключает" (обнуляет выход) часть нейронов во время обучения.
Влияние на bias и variance:
- Variance (разброс) уменьшается. Dropout предотвращает коадаптацию нейронов, заставляя каждый нейрон учиться полезным признакам независимо от других. Это делает модель более устойчивой к шуму в данных и снижает переобучение (overfitting).
- Bias (смещение) может незначительно увеличиться. Поскольку часть сети "выключается", её предсказательная способность на обучающей выборке временно снижается. Это может привести к небольшому недообучению (underfitting), если параметр dropout установлен слишком высоким.
Практическое использование (на примере TensorFlow/Keras):
import tensorflow as tf
from tensorflow.keras import layers, models
model = models.Sequential([
layers.Dense(128, activation='relu', input_shape=(input_dim,)),
layers.Dropout(0.3), # Отключает 30% нейронов
layers.Dense(64, activation='relu'),
layers.Dropout(0.3),
layers.Dense(10, activation='softmax')
])
Ключевой момент: Во время инференса (предсказания) dropout не применяется, а веса масштабируются на коэффициент (1 - dropout_rate) (в современных фреймворках это делается автоматически). Оптимальное значение dropout_rate обычно находится в диапазоне 0.2–0.5 и подбирается валидацией.