Выпадение ( статья , объяснение ) обнуляет вывод некоторых нейронов. Таким образом, для MLP у вас может быть следующая архитектура для набора данных цветов Iris :
4 : 50 (tanh) : dropout (0.5) : 20 (tanh) : 3 (softmax)
Это будет работать так:
с , W 1 ∈ R 50 × 4 , D ∈ { 0 , 1 } 50 × 1 , W 2 ∈ R 20 × 50 , W 3 ∈ R 20 × 3 (игнорируя пристрастия ради простоты).
С и
где операция умножает D по точкам на M (см. произведение Адамара ).
Следовательно, мы просто выбираем матрицу каждый раз, и таким образом отсев становится умножением узла на 0.
Но для CNN мне не ясно, что именно выпало. Я вижу три возможности:
- Удаление полных карт характеристик (отсюда и ядро)
- Удаление одного элемента ядра (замена элемента ядра на 0)
- Удаление одного элемента карты объектов
Пожалуйста, добавьте ссылку / цитату к вашему ответу.
Мои мысли
Я думаю, что Лазанье делает (3) (см. Код ). Это может быть самым простым для реализации. Тем не менее, ближе к первоначальной идее может быть (1).
Кажется, похоже на Caffe (см. Код ). Для тензорного потока пользователь должен решить ( код - я не уверен, что происходит, когда noise_shape=None
передается).
Как это должно быть
(2) и (3) не имеют особого смысла, поскольку это заставит сеть добавить инвариантность к пространственным позициям, что, вероятно, нежелательно. Следовательно, (1) является единственным вариантом, который имеет смысл. Но я не уверен, что произойдет, если вы используете реализацию по умолчанию.
Ответы:
Для более подробной информации, я думаю, что раздел 3 в этой статье может помочь вам: Max-pooling & Convolutional dropout . Конкретно 3.2.
При тестировании вы используете все узлы сети, но с весами фильтра, масштабированными по вероятности удержания, как объяснено в статье.
Пожалуйста, не стесняйтесь уточнить или исправить мой ответ.
Надеюсь, это поможет хоть немного.
источник