Хотя ничто не мешает вам также обрезать их, нет причин делать это.Хорошая статья с обоснованием: здесь , я постараюсь дать вам обзор.
Проблема, которую мы пытаемся решить с помощью градиентного отсечения, заключается в взрывающихся градиентах: Давайте предположим, что ваш слой RNN вычисляется следующим образом:
h_t = sigmoid(U * x + W * h_tm1 + b)
Поэтому, забыв на время о нелинейности, вы могли бы сказать, что текущее состояние h_t
зависит от некоторого более раннего состояния h_{t-T}
как h_t = W^T * h_tmT + input
.Поэтому, если матрица W
раздувает скрытое состояние, влияние этого старого скрытого состояния со временем возрастает экспоненциально.И то же самое происходит при обратном распространении градиента, в результате чего возникают градиенты, которые, скорее всего, приведут вас к какой-то бесполезной точке в пространстве параметров.
С другой стороны, выходной слой применяется только один раз во время обоих переходов вперед.и обратный проход, так что, хотя это может усложнить обучение, это будет происходить только по «постоянному» фактору, не зависящему от развертывания во времени.
Чтобы получить более техническую информацию: решающее значение, которое определяет, будете ли выполучить взрыв градиента является наибольшим собственным значением W
.Если он больше единицы (или меньше -1, то это очень весело :-)), тогда вы получите взрывные градиенты.И наоборот, если он меньше единицы, вы будете страдать от исчезающих градиентов , что затруднит изучение долгосрочных зависимостей.Вы можете найти хорошее обсуждение этих явлений здесь , с указателями на классическую литературу.
Если мы возьмем сигмоид обратно в картину, становится труднее получить взрывные градиенты, так какпри обратном распространении градиенты уменьшаются как минимум в 4 раза.Но, тем не менее, имейте собственное значение больше 4, и у вас будут приключения :-) Очень важно тщательно инициализировать, вторая статья дает некоторые подсказки.При tanh
наблюдается небольшое демпфирование около нуля, и ReLU просто распространяет градиент, поэтому они довольно подвержены градиентным взрывам и поэтому чувствительны к инициализации и ограничению градиента.
В целом, LSTMs имеют лучшие обучающие свойства, чем ванильные РНН, особенночто касается исчезающих градиентов.Хотя по моему опыту, градиентное отсечение обычно также необходимо с ними.
РЕДАКТИРОВАТЬ: Когда обрезать?Прямо перед обновлением весов, т.е. вы делаете бэкпроп без изменений.Дело в том, что градиентное отсечение - это грязный хак.Вы по-прежнему хотите, чтобы ваш градиент был как можно более точным, поэтому лучше не искажать его в середине backprop.Просто если вы видите, что градиент становится очень большим, вы говорите Нет, это пахнет.Я лучше сделаю маленький шаг. и отсечение - это простой способ сделать это (может случиться так, что взорвутся только некоторые элементы градиента, в то время как другие все еще будут вести себя хорошо и информативно).С большинством наборов инструментов у вас все равно нет выбора , потому что обратное распространение происходит атомарно.