Сегодня обсудим базу, вокруг которой есть некоторый шум. Последний год мне доводится слышать, мол dropout неактуален, потому что есть batchnorm. Не знаю почему некоторые так безжалостно выкинули дропаут, наверное потому, что batchnorm полезный:
*️⃣Ускоряет сходимость, т.к. сглаживает функцию потерь и поэтому шаг сходимости растет.
*️⃣Интересным образом регуляризует сетку, но с меньшим эффектом, чем дропаут. Однако, это все типа компенсируется оптимизатором AdamW ))
*️⃣А еще, довольно интересное свойство — масштабная инвариантность параметров секти. Тут есть некоторые интересные размышления об этом.
Ну и типа... А что етот ваш dropout, на вид тяжелая операция, которая не дает бонусов от batchnorm. Ну, во-первых batchnorm не всегда полезен, кто знает, тот знает. Кстати, в PyTorch у batchnorm есть ошибка. Во-вторых, этот пост ради не очень значимой, но интересненькой статьи: "Dropout Reduces Underfitting". В ней говорится, что:
*️⃣ Dropout делает оценку градиента ближе к истинной (рис. 1). Это наблюдается у всех оптимизаторов (рис. 2). Но при этом норма градиента с dropout ниже, чем без, но мы проходим дальше.
*️⃣ Помогает бороться с недообучением (рис. 2). Если ваша модель недообучается, то dropout следует применять в начале обучения и в определенный момент выключить. Иначе, dropout следует использовать через некоторое время после начала обучения. Если не следовать этим рекомендациям, то вы получите меньший профит, как утверждают авторы. Этот эксперимент был поставлен на модели Vision Transformer и... все))
Так и что, какие выводы? Наверное, вывод в том, что не нужно забивать на dropout (а я так делал) и осознать, что ML бывает действительной тонким и необычным😬 То есть бывают случаи, когда именно dropout поможет выбить лучший профит от сетки.
Помним, что в машинном обучении очень много токностей, которые мешают идеям обобщаться на все случаи.
Post #180
601



- 👍 4
- 🔥 3