Отсечение
Отсечение (в контексте машинного обучения и статистики) — это метод регуляризации, применяемый для уменьшения переобучения моделей, особенно в нейронных сетях и ансамблевых методах, путём случайного отбрасывания (исключения) части нейронов или признаков во время обучения. Основная цель отсечения — повысить обобщающую способность модели, предотвращая её чрезмерную подстройку под шум в обучающих данных.
История
Метод отсечения был предложен в 2012 году группой исследователей из Университета Торонто под руководством Джеффри Хинтона. В их работе «Improving neural networks by preventing co-adaptation of feature detectors» было показано, что случайное отключение части нейронов во время обучения заставляет оставшиеся нейроны учиться более независимым и робастным признакам. Идея была вдохновлена биологическими механизмами: в мозге человека нейроны также могут временно выключаться, что способствует адаптации и предотвращает перегрузку.
В 2014 году метод был формализован и популяризирован в статье Нитиша Шриваставы и соавторов «Dropout: A Simple Way to Prevent Neural Networks from Overfitting». В этой работе было предложено использовать отсечение не только для полносвязных слоёв, но и для свёрточных, а также введена техника инвертированного отсечения (inverted dropout), которая стала стандартной в современных библиотеках глубокого обучения (например, TensorFlow и PyTorch).
Принцип работы
Отсечение реализуется путём случайного обнуления выходов нейронов (или целых каналов в свёрточных слоях) с заданной вероятностью p (обычно 0,5 для полносвязных слоёв и 0,2–0,3 для свёрточных). Во время каждого прохода обучения (эпохи) для каждого нейрона генерируется бинарная маска, определяющая, будет ли он активен. Нейроны, которые были отброшены, не участвуют в прямом и обратном распространении ошибки на данном шаге.
Математическая формулировка
Пусть h — вектор активаций нейронов на некотором слое. Тогда после применения отсечения:
- h_dropout = m ⊙ h, где m — вектор бинарных значений, каждое из которых равно 1 с вероятностью (1 − p) и 0 с вероятностью p.
- Во время тестирования (или инференса) отсечение не применяется, но активации масштабируются на коэффициент (1 − p), чтобы сохранить математическое ожидание выходов.
В инвертированном варианте (inverted dropout) масштабирование происходит во время обучения: активации активных нейронов делятся на (1 − p), что позволяет не менять архитектуру модели при тестировании.
Виды отсечения
Стандартное отсечение (Dropout)
Применяется к полносвязным слоям. Каждый нейрон отключается независимо с вероятностью p. Этот вид наиболее распространён и эффективен для задач классификации и регрессии.
Пространственное отсечение (Spatial Dropout)
Используется в свёрточных нейронных сетях (CNN). Вместо отключения отдельных нейронов отключаются целые карты признаков (каналы). Это позволяет сохранить пространственную структуру данных и улучшить обобщение для задач компьютерного зрения.
Гауссово отсечение (Gaussian Dropout)
Вместо бинарной маски применяется умножение на случайную величину, распределённую по нормальному закону с математическим ожиданием 1. Этот вариант менее распространён, но может быть полезен для некоторых типов данных.
Отсечение в рекуррентных сетях (Recurrent Dropout)
Для рекуррентных нейронных сетей (RNN, LSTM, GRU) отсечение применяется не к скрытым состояниям, а к входным данным или к связям между временными шагами, чтобы избежать потери долгосрочных зависимостей.
Отсечение в ансамблевых методах (Dropout в деревьях решений)
В библиотеках, таких как XGBoost и LightGBM, используется модифицированная версия отсечения для градиентного бустинга, где случайно отбрасываются деревья или их части для предотвращения переобучения.
Применение
Глубокое обучение
Отсечение является стандартным инструментом в архитектурах нейронных сетей, включая:
- Полносвязные сети — для задач классификации, регрессии, распознавания образов.
- Свёрточные сети — для обработки изображений (например, в архитектурах VGG, ResNet, Inception).
- Рекуррентные сети — для обработки последовательностей (текстов, временных рядов).
- Трансформеры — в моделях, таких как BERT и GPT, отсечение применяется к слоям внимания и полносвязным слоям.
Ансамблевые методы
В градиентном бустинге (например, CatBoost, XGBoost) отсечение используется для регуляризации, чтобы уменьшить влияние отдельных деревьев и повысить устойчивость.
Генеративные модели
В вариационных автоэнкодерах (VAE) и генеративно-состязательных сетях (GAN) отсечение помогает предотвратить коллапс мод и улучшить разнообразие генерируемых данных.
Преимущества и недостатки
Преимущества
- Снижение переобучения — отсечение заставляет модель учить более обобщённые признаки, а не запоминать шум.
- Простота реализации — метод легко интегрируется в существующие архитектуры без существенных изменений.
- Ансамблевый эффект — во время обучения случайно отключаются разные нейроны, что эквивалентно обучению ансамбля из множества подмоделей.
- Универсальность — применим к большинству типов нейронных сетей.
Недостатки
- Увеличение времени обучения — из-за случайного отключения нейронов модель может требовать больше эпох для сходимости.
- Потеря информации — при высоких вероятностях отсечения (p > 0,5) модель может недополучать важные признаки.
- Неэффективность для малых наборов данных — на очень маленьких выборках отсечение может ухудшить качество, так как модель и так страдает от нехватки данных.
- Сложность настройки — выбор оптимальной вероятности p часто требует экспериментов и может зависеть от архитектуры.
Критика
Некоторые исследователи отмечают, что отсечение не всегда является наилучшим методом регуляризации. Например, в работах по байесовским нейронным сетям утверждается, что отсечение может быть интерпретировано как приближённый байесовский вывод, но его эффективность сильно зависит от выбора априорного распределения. Кроме того, для очень глубоких сетей (например, с сотнями слоёв) отсечение может быть менее эффективным, чем другие методы, такие как пакетная нормализация (batch normalization) или стохастическая глубина (stochastic depth).
Интересные факты
- Отсечение было вдохновлено явлением «дропаута» в биологии, когда нейроны мозга временно перестают передавать сигналы, что способствует обучению без перегрузки.
- В 2014 году команда Google использовала отсечение в своей модели для распознавания изображений, что позволило снизить ошибку на тестовом наборе ImageNet на 2–3%.
- В библиотеке Keras (ныне часть TensorFlow) отсечение реализовано как отдельный слой
Dropout, который можно добавлять в любую последовательную модель. - В некоторых архитектурах, таких как CapsNet (капсульные сети), отсечение применяется не к нейронам, а к целым капсулам, что улучшает устойчивость к аффинным преобразованиям.
Источники
- Hinton, G. E., Srivastava, N., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. R. (2012). Improving neural networks by preventing co-adaptation of feature detectors.
- Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. (2014). Dropout: A Simple Way to Prevent Neural Networks from Overfitting.
- Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
- Keras Documentation: Dropout Layer. TensorFlow.
- XGBoost Documentation: Regularization Parameters.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →