Как именно DropOut работает со сверточными слоями?

10

Выпадение ( статья , объяснение ) обнуляет вывод некоторых нейронов. Таким образом, для MLP у вас может быть следующая архитектура для набора данных цветов Iris :

4 : 50 (tanh) : dropout (0.5) : 20 (tanh) : 3 (softmax)

Это будет работать так:

softmax(W3tanh(W2mask(D,tanh(W1input_vector)))

с , W 1R 50 × 4 , D { 0 , 1 } 50 × 1 , W 2R 20 × 50 , W 3R 20 × 3 (игнорируя пристрастия ради простоты).input_vectorR4×1W1R50×4D{0,1}50×1W2R20×50W3R20×3

С иD=(d)ij

dijB(1,p=0.5)

где операция умножает D по точкам на M (см. произведение Адамара ).mask(D,M)DM

Следовательно, мы просто выбираем матрицу каждый раз, и таким образом отсев становится умножением узла на 0.D

Но для CNN мне не ясно, что именно выпало. Я вижу три возможности:

  1. Удаление полных карт характеристик (отсюда и ядро)
  2. Удаление одного элемента ядра (замена элемента ядра на 0)
  3. Удаление одного элемента карты объектов

Пожалуйста, добавьте ссылку / цитату к вашему ответу.

Мои мысли

Я думаю, что Лазанье делает (3) (см. Код ). Это может быть самым простым для реализации. Тем не менее, ближе к первоначальной идее может быть (1).

Кажется, похоже на Caffe (см. Код ). Для тензорного потока пользователь должен решить ( код - я не уверен, что происходит, когда noise_shape=Noneпередается).

Как это должно быть

(2) и (3) не имеют особого смысла, поскольку это заставит сеть добавить инвариантность к пространственным позициям, что, вероятно, нежелательно. Следовательно, (1) является единственным вариантом, который имеет смысл. Но я не уверен, что произойдет, если вы используете реализацию по умолчанию.

Мартин Тома
источник
Я задал вопрос также в группе пользователей Lasagne .
Мартин Тома
Мой друг отметил, что (2) и (3) могут не быть хорошей идеей, потому что это может заставить сеть распространять информацию в пространстве.
Мартин Тома

Ответы:

1

lW(l+1)

Для более подробной информации, я думаю, что раздел 3 в этой статье может помочь вам: Max-pooling & Convolutional dropout . Конкретно 3.2.

При тестировании вы используете все узлы сети, но с весами фильтра, масштабированными по вероятности удержания, как объяснено в статье.

Пожалуйста, не стесняйтесь уточнить или исправить мой ответ.

Надеюсь, это поможет хоть немного.

Леонард Аукеа
источник