Я новичок в нейронных сетях, и создаю LSTM с нуля. У меня есть работа с прямым распространением ... но у меня есть несколько вопросов о движущихся частях в прямом распространении в контексте обученной модели, обратного распространения и управления памятью.LSTM NN: распространение вперед
Итак, прямо сейчас, когда я запускаю прямое распространение, я складываю новые столбцы, f_t, i_t, C_t, h_t, etc
на своих соответствующих массивах, когда я накапливаю предыдущие позиции для вычислений градиента bptt.
Мой вопрос 4 часть:
1) Как далеко назад во времени, мне нужно, чтобы поддержать распространяться, чтобы сохранить достаточно долгосрочные воспоминания? (память, растянутая назад 20-40 шагов по времени, вероятно, то, что мне нужно для моей системы (хотя я мог бы выиграть от гораздо более длительного периода времени), что является минимальным для достойной производительности - , и я только снимаю минимум прямо сейчас, так что я могу заставить его работать)
2) После того, как я считаю, моя модель «обучен» есть любой причина для меня, чтобы держать больше, чем временные шаги 2 Мне нужно вычислить следующие C
и h
значения? (где C_t
это состояние клеток, а h_t
является конечным продуктом LSTM сети) в этом случае мне нужно несколько версий функции
3) прямого распространения Если я ограничил данные временных рядов на который должен тренироваться, и я хочу тренировать свою модель, будет ли производительность моей модели сходиться, так как я тренирую ее на обучающих данных снова и снова (как и колеблются вокруг некоторой максимальной средней производительности)? И будет ли он сходиться, если я реализую исключение?
4) Сколько компонентов градиента необходимо учитывать? Когда я вычисляю градиент различных матриц, я получаю основной вклад на временном шаге t, а вторичные вклады от временного шага t-1 (и вычисление возвращается обратно к t = 0)? (другими словами: это основной вклад доминирует вычисление градиента - будет изменение наклона за счет вторичных компонентов достаточно, чтобы гарантировать реализацию рекурсии резервное размножать временные шаги ...)