Bagging vs Dropout в глубоких нейронных сетях

17

Пакетирование - это создание нескольких предикторов, которые работают так же, как и один предиктор. Dropout - это метод, который обучает нейронные сети усреднять все возможные подсети. Глядя на наиболее важные соревнования Kaggle, кажется, что эти две техники используются вместе очень часто. Я не вижу никакой теоретической разницы, кроме фактической реализации. Кто может объяснить мне, почему мы должны использовать их оба в любом реальном приложении? и почему производительность улучшается, когда мы используем их обоих?

Emanuele
источник

Ответы:

21

Упаковка в мешки и выпадение не дают одно и то же, хотя оба являются типами усреднения моделей.

Упаковка в мешки - это операция по всему вашему набору данных, которая обучает модели на подмножестве обучающих данных. Таким образом, некоторые обучающие примеры не показаны для данной модели.

Отбрасывание , напротив, применяется к функциям в каждом учебном примере. Это правда, что результат функционально эквивалентен обучению экспоненциально многих сетей (с общими весами!) И затем равному взвешиванию их результатов. Но выпадение работает в пространстве функций, в результате чего определенные функции становятся недоступными для сети, а не полные примеры. Поскольку каждый нейрон не может полностью полагаться на один входной сигнал, представления в этих сетях имеют тенденцию быть более распределенными, и сеть с меньшей вероятностью перегружается.

jamesmf
источник
+1 за хорошее объяснение. Знаете ли вы какие-либо ссылки, где осуществляется реализация Python? Любой блог или, может быть, Github?
Dawny33
Здесь есть приличный: deeplearning.net/tutorial/lenet.html , хотя я предпочитаю стиль этого: neuralnetworksanddeeplearning.com/chap6.html . Для реализации и отличных демонстраций мне нравится keras (довольно легко установить pip) keras.io
jamesmf
2

Я нашел сравнение двух видов сетей в Max Out Networks, которое говорит:

Обучение по выбыванию аналогично пакетированию (Breiman, 1994), где много разных моделей обучаются на разных подмножествах данных. Обучение по выбыванию отличается от упаковки в пакеты тем, что каждая модель обучается только за один шаг, и все модели имеют общие параметры. Чтобы эта обучающая процедура (выпадение) велась так, как будто она обучает ансамбль, а не отдельную модель, каждое обновление должно иметь большой эффект, чтобы подмодель, индуцированная этим µ, соответствовала текущему входному сигналу v.

Надеюсь, это будет полезно.

Emanuele
источник
0

Выпадение - это метод регуляризации, используемый для того, чтобы избежать переобучения в больших нейронных сетях, в частности, путем исключения некоторых нейронов в скрытых слоях (отсюда и название выпадения оставленных нейронов) после тренировки. По сути, если сеть действительно чему-то научилась во время обучения, то выпадение некоторых нейронов не должно отрицательно влиять на точность прогнозов.

Упаковка в мешки также является эффективной техникой регуляризации, используемой для уменьшения отклонения от обучающих данных и повышения точности вашей модели с использованием нескольких копий, обученных на разных подмножествах данных из начального / большего набора обучающих данных.

увидеть этот вопрос

Linker
источник