Градиентное отсечение при обучении глубоких нейронных сетей

10

Когда нужно выполнять градиентное отсечение при обучении RNN или CNN? Меня особенно интересует последнее. Что было бы хорошим начальным значением для отсечения? (это конечно можно настроить)

PIR
источник

Ответы:

4

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

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

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

Начальные значения для верхней границы градиентного отсечения будут чем-то меньшим, чем наибольшее число, которое может принимать переменная. Что касается нижней границы, я бы сказал, что это специфическая проблема, но, возможно, начнем с чего-то вроде 1e-10.

Miguel
источник
1
Я не уверен, что контекст этого ответа должен исключать RNN, но если это не так, то оба предложенных решения не лучше, чем градиентное ограничение, особенно в случае RNN.
Алекс Р.
Извините, я больше думал в контексте CNN, не стесняйтесь редактировать
Мигель