Отсев с активацией relu

Я пытаюсь реализовать нейронную сеть с отсечкой в ​​тензорном потоке.

tf.layers.dropout(inputs, rate, training)

Из документации: "Выпадение состоит в том, чтобы случайным образом установить частоту дроби входных единиц на 0 при каждом обновлении во время обучения, что помогает предотвратить переоснащение. Сохраняемые единицы масштабируются на 1 / (1 - скорость), так что их сумма неизменен во время обучения и вывода."

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

Что теперь, если кто-то использует активацию тан, которая сосредоточена вокруг нуля? Вышеприведенные рассуждения больше не верны, поэтому все еще верно масштабировать выход выпадения по указанному фактору? Есть ли способ предотвратить выпадение тензорного потока при масштабировании выходов?

заранее спасибо

2 ответа

Решение

Если у вас есть набор входов для узла и набор весов, их взвешенная сумма является значением S. Вы можете определить другую случайную переменную, выбрав случайную долю f исходных случайных величин. Взвешенная сумма с использованием тех же весов случайной величины, определенной таким образом, равна S * f. Из этого вы можете видеть, что аргумент для масштабирования является точным, если цель состоит в том, что среднее значение суммы остается одинаковым с масштабированием и без него. Это будет верно, если функция активации является линейной в диапазоне взвешенных сумм подмножеств, и приблизительно истинной, если функция активации является приблизительно линейной в диапазоне взвешенной суммы подмножеств.

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

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

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

Точка установки узла на нулевой выходной сигнал заключается в том, что нейрон не будет влиять на питаемые им нейроны. Это создаст разреженность и, следовательно, попытки уменьшить переоснащение. При использовании сигмоида или tanh значение по-прежнему устанавливается равным нулю.

Я думаю, что ваш подход рассуждений здесь неверен. Думайте о вкладе, а не сумме.

Другие вопросы по тегам