1

Aufgrund von Beobachtungen, die den gesamten Zustand nicht offenbaren, muss ich Verstärkung mit einem wiederkehrenden neuronalen Netzwerk machen, so dass das Netzwerk eine Art Erinnerung an das hat, was in der Vergangenheit passiert ist. Der Einfachheit halber nehmen wir an, dass wir ein LSTM verwenden.Wie funktioniert das Lernen mit Verstärkung mit einem LSTM in PyTorch?

Jetzt erfordert der eingebaute PyTorch LSTM, dass Sie ihm einen Eingang der Form Time x MiniBatch x Input D zuführen und er gibt einen Tensor der Form Time x MiniBatch x Output D aus.

In Verstärkung lernen jedoch, um die Eingabe zum Zeitpunkt t+1 kennen, muss ich die Ausgabe zum Zeitpunkt t wissen, weil ich Aktionen in einer Umgebung mache.

Ist es also möglich, den integrierten PyTorch LSTM zu verwenden, um BPTT in einer Verstärkungslerneinstellung zu verwenden? Und wenn es ist, wie könnte ich es tun?

Antwort

1

Vielleicht können Sie Ihre Eingangssequenz in einer Schleife zu Ihrem LSTM füttern. Etwas, wie folgt aus:

h, c = Variable(torch.zeros()), Variable(torch.zeros()) 
for i in range(T): 
    input = Variable(...) 
    _, (h, c) = lstm(input, (h,c)) 

Jeder Zeitschritt Sie verwenden können (h, c) und Eingabeaktion zum Beispiel zu bewerten. Solange Sie den Berechnungsgraphen nicht unterbrechen, können Sie die Rückpropagierung durchführen, da Variablen den gesamten Verlauf behalten.

Verwandte Themen