Что такое ошибка в обратном распространении во времени, если у меня только один выход? - PullRequest
0 голосов
/ 14 мая 2018

В этом вопросе, RNN: обратное распространение во времени, когда вывод выполняется только на последнем временном шаге Я видел, что, если у меня есть только один выход на последнем шаге времени T, то есть y (T), то ошибка на более раннем шаге времени не требуется.

Тогда, является ли член функции потерь E = сумма (E (t)) вместо значения E = E (T), T - время сканирования от начала до последнего шага времени?

1 Ответ

0 голосов
/ 14 мая 2018

Я постараюсь устранить некоторую путаницу.Это стандартный развернутый RNN:

rnn

И предположим, что o[t+1] - самый последний шаг.

Когда все выходы фактически используются сетью, ошибка будет распространяться через все вертикальные края: до s[t+1] с o[t+1], до s[t] с o[t], ...,до s[0] с o[0].Кроме того, все ячейки, кроме последней, получают ошибку от следующей ячейки: s[t] от s[t+1], s[t-1] от s[t] и т. Д.

Легко заметить, что все ячейки s[0] ... s[t] получают два сообщения об ошибках, и они суммируются (отсюда сумма).

Теперь ситуация, обсуждаемая Денни Бритцем, заключается в том, что only o[t+1] isиспользуется сетью, а все остальные выходы игнорируются.Это эквивалентно нулевым градиентам, вытекающим из o[t], o[t-1], ..., o[0].Технически, общий градиент, полученный в s[i], по-прежнему является суммой, но это сумма одного элемента (и нуля).По сути, ошибка будет распространяться следующим образом:

o[t+1] -> s[t+1] -> s[t] -> s[t-1] -> ... -> s[0]

Несколько других замечаний:

Тогда есть функция функции потерь E = sum (E (t)) вместо этого значение E = E (T)

Я не затрагивал функцию потерь в этом примере.Потеря находится выше и сравнивает выходные данные с метками и инициирует первое обратное сообщение.В обоих случаях это одно и то же.Разница лишь в том, проходит ли сообщение об ошибке через все o[i] или только через o[t+1].

...