2016-09-28 1 views
0

Ich verwende eine Open-Source-Version von a3c implementation in Tensorflow, die für atari 2600-Experimente ziemlich gut funktioniert. Allerdings, wenn ich das Netzwerk für Mujoco, wie outlined in the paper ändern, weigert sich das Netzwerk, etwas Sinnvolles zu lernen. Hat es irgendjemand geschafft, Open-Source-Implementierungen von a3c mit kontinuierlichen Domänenproblemen wie zum Beispiel mujoco zu betreiben?Hat es jemand geschafft, Asynchronous Vorteil Schauspieler Kritiker Arbeit mit Mujoko-Experimenten zu machen?

+0

Hi @Sahil, ich bin auch auf der Suche nach der A3C Continuous Control-Implementierung. Ich versuche, einen Agenten zu trainieren, um ein Spiel ähnlich wie https://cs.stanford.edu/people/karpathy/convnetjs/demo/rldemo.html zu spielen, indem ich visuelle Eingaben in DQN benutze. Ich möchte wissen, ob Sie ein 2D-Motion-Spiel mit DQN versucht haben und erfolgreich waren? –

+0

Ich glaube nicht, dass ich Ihren Kommentar verstehe. Könnten Sie es anders formulieren? – Sahil

Antwort

4

Ich habe eine kontinuierliche Aktion von Pendulum getan und es funktioniert gut.

Zuerst werden Sie Ihr neuronales Netzwerk aufbauen und Mittelwert (mu) und Standardabweichung (Sigma) für die Auswahl einer Aktion ausgeben.

Der wesentliche Teil der kontinuierlichen Aktion besteht darin, eine Normalverteilung einzubeziehen. Ich verwende tensorflow, so wird der Code wie folgt aussieht:

normal_dist = tf.contrib.distributions.Normal(mu, sigma) 
log_prob = normal_dist.log_prob(action) 
exp_v = log_prob * td_error 
entropy = normal_dist.entropy() # encourage exploration 
exp_v = tf.reduce_sum(0.01 * entropy + exp_v) 
actor_loss = -exp_v 

Wenn Sie wollen eine Aktion kosten, gibt die Funktion tensorflow verwenden:

sampled_action = normal_dist.sample(1) 

Der vollständige Code von Pendulum finden Sie in meinem Github. https://github.com/MorvanZhou/tutorials/blob/master/Reinforcement_learning_TUT/10_A3C/A3C_continuous_action.py

+1

Das sieht wirklich nicht wie eine richtige Antwort aus. Nicht nur auf eine externe Website verlinken; eine wirklich sommerliche, und vielleicht ein paar Code-Schnipsel. – GhostCat

1

Ich war auf diese für eine lange Zeit aufgehängt, hilft hoffentlich jemand in meine Schuhe:

Vorteil Schauspieler-Kritiker in diskreten Räumen ist einfach: Wenn Ihr Schauspieler besser tut, als Sie erwarten, erhöhen Sie die Wahrscheinlichkeit diese Bewegung zu machen. Wenn es schlimmer ist, verringern Sie es.

In kontinuierlichen Räumen, wie machst du das? Der gesamte Vektor, den Ihre Richtlinienfunktion ausgibt, ist Ihr Zug. Wenn Sie sich in der Richtlinie befinden und besser als erwartet sind, können Sie nicht sagen: "Lassen Sie uns diese Aktion noch mehr ausgeben!" weil Sie bereits genau diesen Vektor ausgeben.

Hier kommt Morvans Antwort ins Spiel. Anstatt nur eine Aktion auszugeben, geben Sie für jedes Ausgabe-Feature einen Mittelwert und einen Std-Dev aus. Um eine Aktion auszuwählen, übergeben Sie Ihre Eingaben, um für jedes Ausgabe-Feature ein mean/stddev zu erstellen. Anschließend können Sie jedes Feature aus dieser Normalverteilung abtasten.

Wenn Sie es gut machen, passen Sie die Gewichtung Ihres Richtliniennetzwerkes an, um den Mittelwert/stddev zu ändern, um diese Aktion zu unterstützen. Wenn Sie schlecht tun, tun Sie das Gegenteil.

Verwandte Themen