Делался ли дроп-аут с опорой на лосс или случайным выкидыванием весов?
Что проверяют
Понимаете ли вы, что именно выключает дропаут и откуда в нём случайность, и не станете ли выдумывать опыт под формулировку вопроса. Следом обычно просят рассказать, где стоял слой, какое было p и как вы поняли, что он помогает.
Как отвечать
Сначала поправьте терминологию, это само по себе плюс. Классический дропаут случайно зануляет не веса, а активации нейронов: каждую с вероятностью p на каждом шаге обучения. Случайное выключение отдельных весов это другой метод, DropConnect. Выбора «по лоссу» в стандартном дропауте нет: маска случайная и от функции потерь не зависит.
Дальше каркас, который стоит наполнить своим проектом:
- реализация: в PyTorch
nn.Dropout(p), в Keraslayers.Dropout(rate). Используется inverted dropout: выжившие активации на обучении умножаются на1/(1-p), поэтому на инференсе слой просто пропускает данные; - режимы: в PyTorch поведение переключают
model.train()иmodel.eval(), забытыйeval()даёт шумные предсказания; - значения: для полносвязных слоёв в классике брали 0.5, в трансформерах типично около 0.1, в свёрточных сетях с BatchNorm дропаут часто не нужен или заменяется на
nn.Dropout2d; - проверка: сравнивали разрыв между train и validation лоссом с дропаутом и без, подбирали
pпо валидации.
Если адаптивные схемы у вас были, назовите их точно: Concrete Dropout учит вероятность выключения градиентом, Standout делает её зависимой от входа, MC Dropout оставляет слой включённым на инференсе для оценки неопределённости. Если не было, так и скажите: работали со стандартным случайным дропаутом, а отбор по лоссу встречали в другом месте, при выборе трудных примеров для обучения, но не нейронов.
Где спотыкаются
Говорят «дропаут выкидывает веса». Это DropConnect, и интервьюер почти наверняка ловит именно на этом.
Соглашаются с формулировкой и сочиняют «дропаут по лоссу» с порогами и хитрой логикой. На первом уточняющем вопросе такая история рассыпается.
Ставят дропаут перед BatchNorm и удивляются просадке: на инференсе дисперсия активаций меняется, и статистики BatchNorm, накопленные на обучении, ей больше не соответствуют.