Должны ли градиенты для выходного уровня RNN обрезаться? - PullRequest
0 голосов
/ 30 ноября 2018

В настоящее время я готовлю LSTM RNN для прогнозирования временных рядов.Я понимаю, что обычной практикой является ограничение градиентов RNN, когда они пересекают определенный порог.Тем не менее, я не совсем ясно, включает ли это выходной слой.

Если мы назовем скрытый слой RNN h, то выходной сигнал будет сигмоидальным (connected_weights * h + bias).Я знаю, что градиенты для весов для определения скрытого слоя обрезаны, но то же самое относится и к выходному слою?

Другими словами, градиенты для присоединенного веса также обрезаются в градиентном отсечении?

1 Ответ

0 голосов
/ 01 декабря 2018

Хотя ничто не мешает вам также обрезать их, нет причин делать это.Хорошая статья с обоснованием: здесь , я постараюсь дать вам обзор.

Проблема, которую мы пытаемся решить с помощью градиентного отсечения, заключается в взрывающихся градиентах: Давайте предположим, что ваш слой 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.Просто если вы видите, что градиент становится очень большим, вы говорите Нет, это пахнет.Я лучше сделаю маленький шаг. и отсечение - это простой способ сделать это (может случиться так, что взорвутся только некоторые элементы градиента, в то время как другие все еще будут вести себя хорошо и информативно).С большинством наборов инструментов у вас все равно нет выбора , потому что обратное распространение происходит атомарно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...