Обучение нейронной сети с подкреплением, требующее распространения следующего состояния для обратного распространения

Я пытаюсь построить нейронную сеть, включающую свертки и LSTM (используя библиотеку Torch), для обучения с помощью Q-learning или Advantage-learning, оба из которых требуют распространения состояния T+1 по сети перед обновлением весов для состояния T.

Необходимость выполнять дополнительное распространение снизит производительность, и это плохо, но слишком плохо; Однако проблема в том, что в этом замешаны всевозможные состояния. Во-первых, реализация обратного распространения в Torch имеет несколько быстрых путей повышения эффективности, основанных на том, что обратное распространение происходит сразу после прямого распространения, что может испортить дополнительное распространение. Возможно, я мог бы обойти это, создав вторичную клонированную сеть, разделяющую значения веса, но мы подошли ко второй проблеме.

Каждое прямое распространение, включающее LSTM, имеет состояние. Как я могу обновить веса в T + 1, когда распространяющаяся сеть (T + 1) могла изменить содержимое LSTM? Я попытался посмотреть на обсуждение обновлений веса TD, как это сделано в TD-Gammon, но это бесполезно для меня, и в любом случае это для прямой связи, а не для повторения.

Как я могу обновить веса сети в точке T, не увеличивая сеть до T+1, или как мне увеличить сеть до T+1, а затем вернуться и отрегулировать веса, как если бы это все еще было T?


person JAKJ    schedule 18.08.2015    source источник