Introduction to Reinforcement Learning. Osa 3: Q-Learning with Neural Networks, Algorithm DQN

Voit ajaa TensorFlow-koodin itse tästä linkistä (tai PyTorch-version tästä linkistä), tai jatka lukemista nähdäksesi koodin ilman sen ajamista. Koska koodi on hieman pidempi kuin edellisissä osissa, näytän tässä vain tärkeimmät palat. Koko lähdekoodi on saatavilla yllä olevan linkin takaa.

Tässä on CartPole-ympäristö. Käytän OpenAI Gymiä tämän ympäristön visualisointiin ja ajamiseen. Tavoitteena on liikuttaa kärryä vasemmalle ja oikealle, jotta tolppa pysyy pystysuorassa asennossa. Jos napa kallistuu yli 15 astetta pystyakselista, jakso päättyy ja aloitamme alusta. Videolla 1 näytetään esimerkki useiden jaksojen suorittamisesta tässä ympäristössä tekemällä toimintoja satunnaisesti.

Video 1: Satunnaista pelaamista CartPole-ympäristössä.

Toteuttaaksemme DQN-algoritmin, aloitamme luomalla main (main_nn) ja target (target_nn) DNN:t. Tavoiteverkko tulee olemaan kopio pääverkosta, mutta sillä on oma kopio painoista. Tarvitsemme myös optimoijan ja häviöfunktion.

Algoritmi 1. Syvien neuroverkkojen arkkitehtuuri.

Seuraavaksi luomme kokemuksen toistopuskurin, jotta voimme lisätä kokemuksen puskuriin ja ottaa siitä näytteen myöhemmin harjoittelua varten.

Algoritmi 2. Kokemusten toistopuskuri.

Kirjoitamme myös apufunktion ε-greedy-käytännön suorittamiseksi ja pääverkon kouluttamiseksi puskuriin tallennettujen tietojen avulla.

Algoritmi 3. Funktiot ε-greedy-politiikkaa ja neuroverkon harjoittelua varten.

Määrittelemme myös tarvittavat hyperparametrit ja harjoittelemme neuroverkon. Pelaamme yhden jakson ε-greedy-käytäntöä käyttäen, tallennamme tiedot kokemuksen toistopuskuriin ja koulutamme pääverkon jokaisen vaiheen jälkeen. Kerran 2000 askeleen välein kopioimme painot pääverkosta kohdeverkkoon. Pienennämme myös epsilonin (ε) arvoa niin, että aloitamme suurella eksploraatiolla ja pienennämme eksploraatiota ajan myötä. Näemme, miten algoritmi alkaa oppia jokaisen jakson jälkeen.

Algoritmi 4. Pääsilmukka.

Tämä tulos näytetään:

Episode 0/1000. Epsilon: 0.99. Reward in last 100 episodes: 14.0 Episode 50/1000. Epsilon: 0.94. Reward in last 100 episodes: 22.2 Episode 100/1000. Epsilon: 0.89. Reward in last 100 episodes: 23.3 Episode 150/1000. Epsilon: 0.84. Reward in last 100 episodes: 23.4 Episode 200/1000. Epsilon: 0.79. Reward in last 100 episodes: 24.9 Episode 250/1000. Epsilon: 0.74. Reward in last 100 episodes: 30.4 Episode 300/1000. Epsilon: 0.69. Reward in last 100 episodes: 38.4 Episode 350/1000. Epsilon: 0.64. Reward in last 100 episodes: 51.4 Episode 400/1000. Epsilon: 0.59. Reward in last 100 episodes: 68.2 Episode 450/1000. Epsilon: 0.54. Reward in last 100 episodes: 82.4 Episode 500/1000. Epsilon: 0.49. Reward in last 100 episodes: 102.1 Episode 550/1000. Epsilon: 0.44. Reward in last 100 episodes: 129.7 Episode 600/1000. Epsilon: 0.39. Reward in last 100 episodes: 151.7 Episode 650/1000. Epsilon: 0.34. Reward in last 100 episodes: 173.0 Episode 700/1000. Epsilon: 0.29. Reward in last 100 episodes: 187.3 Episode 750/1000. Epsilon: 0.24. Reward in last 100 episodes: 190.9 Episode 800/1000. Epsilon: 0.19. Reward in last 100 episodes: 194.6 Episode 850/1000. Epsilon: 0.14. Reward in last 100 episodes: 195.9 Episode 900/1000. Epsilon: 0.09. Reward in last 100 episodes: 197.9 Episode 950/1000. Epsilon: 0.05. Reward in last 100 episodes: 200.0 Episode 1000/1000. Epsilon: 0.05. Reward in last 100 episodes: 200.0

Nyt kun agentti on oppinut maksimoimaan CartPole-ympäristön palkkion, laitamme agentin vuorovaikutukseen ympäristön kanssa vielä kerran, jotta voimme havainnollistaa tuloksen ja nähdä, että se pystyy nyt pitämään tolpan tasapainossa 200 kehyksen ajan.

Video 2. Tulos koulutetun DQN-agentin visualisoinnista vuorovaikutuksessa CartPole-ympäristön kanssa.

Voit suorittaa TensorFlow-koodin itse tästä linkistä (tai PyTorch-version tästä linkistä).

Vastaa

Sähköpostiosoitettasi ei julkaista.