【dqn】카오스인 운동을 심층 강화 학습한다♬~아마 과오. . .

드디어 카오스한 운동을 심층 강화 학습해 보았습니다.

했던 일



(1) Pendulum의 심층 강화 학습
(2) 혼돈의 Duffing 진동자의 심층 강화 학습
(3) 혼돈의 Lorenz 방정식의 해의 심층 강화 학습
(4) 조금 고찰

(1) Pendulum의 심층 강화 학습



※코드는 표제에서 링크하고 있습니다
Training for 9600 steps ...
Interval 1 (0 steps performed)
 9600/10000 [===========================>..] - ETA: 5s - reward: 67.6096done, took 135.389 seconds
Testing for 5 episodes ...
Episode 1: reward: 34889.989, steps: 240
Episode 2: reward: 34889.989, steps: 240
Episode 3: reward: 34889.989, steps: 240
Episode 4: reward: 34889.989, steps: 240
Episode 5: reward: 34889.989, steps: 240
Testing for 10 episodes ...
Episode 1: reward: 34889.989, steps: 240
Episode 2: reward: 34889.989, steps: 240
Episode 3: reward: 34889.989, steps: 240
Episode 4: reward: 34889.989, steps: 240
Episode 5: reward: 34889.989, steps: 240
Episode 6: reward: 34889.989, steps: 240
Episode 7: reward: 34889.989, steps: 240
Episode 8: reward: 34889.989, steps: 240
Episode 9: reward: 34889.989, steps: 240
Episode 10: reward: 34889.989, steps: 240

plot_x-p_pendulum




(2) 혼란스러운 Duffing 진동자의 심층 강화 학습



※코드는 표제에서 링크하고 있습니다
Training for 9600 steps ...
Interval 1 (0 steps performed)
 9600/10000 [===========================>..] - ETA: 5s - reward: 39.9779done, took 126.762 seconds
Testing for 5 episodes ...
Episode 1: reward: 11182.445, steps: 240
Episode 2: reward: 11182.445, steps: 240
Episode 3: reward: 11182.445, steps: 240
Episode 4: reward: 11182.445, steps: 240
Episode 5: reward: 11182.445, steps: 240
Testing for 10 episodes ...
Episode 1: reward: 11182.445, steps: 240
Episode 2: reward: 11182.445, steps: 240
Episode 3: reward: 11182.445, steps: 240
Episode 4: reward: 11182.445, steps: 240
Episode 5: reward: 11182.445, steps: 240
Episode 6: reward: 11182.445, steps: 240
Episode 7: reward: 11182.445, steps: 240
Episode 8: reward: 11182.445, steps: 240
Episode 9: reward: 11182.445, steps: 240
Episode 10: reward: 11182.445, steps: 240




(3) 혼돈의 Lorenz 방정식 해의 심층 강화 학습



※코드는 표제에서 링크하고 있습니다
Training for 9600 steps ...
Interval 1 (0 steps performed)
 9600/10000 [===========================>..] - ETA: 5s - reward: -27.8420done, took 140.154 seconds
Testing for 5 episodes ...
Episode 1: reward: 0.000, steps: 240
Episode 2: reward: 0.000, steps: 240
Episode 3: reward: 0.000, steps: 240
Episode 4: reward: 0.000, steps: 240
Episode 5: reward: 0.000, steps: 240
Testing for 10 episodes ...
Episode 1: reward: 0.000, steps: 240
Episode 2: reward: 0.000, steps: 240
Episode 3: reward: 0.000, steps: 240
Episode 4: reward: 0.000, steps: 240
Episode 5: reward: 0.000, steps: 240
Episode 6: reward: 0.000, steps: 240
Episode 7: reward: 0.000, steps: 240
Episode 8: reward: 0.000, steps: 240
Episode 9: reward: 0.000, steps: 240
Episode 10: reward: 0.000, steps: 240

Lorenz_xt

Lorenz_xt_obvs&original

Lorenz_yt

Lorenz_yt_obvs&original

Lorenz_zt
t
Lorenz_zt_bvs&original


plot_xy

plot_yz

plot_zx


조금 고찰



이번 특징은 무차고차 Test의 결과가 좋다는 것이다.
물론, Cartpole는 초기값이야말로 다르기 때문에 일단 운동 학습을 했다고 할 수 있지만, 그래도 그 후의 운동은 거의 함께이므로 그것도 Test 결과가 좋았다.

그러나 이번 자유 운동과 혼돈 운동의 Test는 초기치도 같고, 그 후의 움직임도 함께 이른바 학습 데이터로 검증하고 있는 것 같다.
그러면 그러면 그 파라미터를 이용하여 미지의 초기값을 예측하면 어떻게 되는지에 관심이 든다.

따라서 매개 변수를 zvst 데이터로 학습 한 다음 x vs. t 및 y vs. t에 적용합니다.
코드는 다음을 추가했습니다.
# After training is done, we save the final weights.
dqn.save_weights('dqn_{}_weights.h5f'.format(ENV_NAME), overwrite=True)

zvs.t 학습

이 때의 파라미터를 사용해 xvs.t의 데이터로, 게다가 학습 없이 dqn.test를 해 보았습니다.
dqn.load_weights('dqn_{}_weights.h5f'.format(ENV_NAME))
# トレーニングを開始。同じ正弦曲線を9600 = 240 x 400回 回す。
#histry = dqn.fit(env, nb_steps=9600, visualize=False, verbose=1)
# After training is done, we save the final weights.
#dqn.save_weights('dqn_{}_weights.h5f'.format(ENV_NAME), overwrite=True)
# トレーニング結果を確認
dqn.test(env, nb_episodes=5, visualize=False)

다음과 같이 큰 reward를 얻었습니다.
Testing for 5 episodes ...
Episode 1: reward: 317410.349, steps: 240
Episode 2: reward: 317410.349, steps: 240
Episode 3: reward: 317410.349, steps: 240
Episode 4: reward: 317410.349, steps: 240
Episode 5: reward: 317410.349, steps: 240
Testing for 10 episodes ...
Episode 1: reward: 317410.349, steps: 240
Episode 2: reward: 317410.349, steps: 240
Episode 3: reward: 317410.349, steps: 240
Episode 4: reward: 317410.349, steps: 240
Episode 5: reward: 317410.349, steps: 240
Episode 6: reward: 317410.349, steps: 240
Episode 7: reward: 317410.349, steps: 240
Episode 8: reward: 317410.349, steps: 240
Episode 9: reward: 317410.349, steps: 240
Episode 10: reward: 317410.349, steps: 240
Plotting Results

그리고 예측 결과도 다음과 같이 거의 완벽합니다.


마찬가지로 yvs.t 학습을 동일한 매개 변수로 수행했습니다. 이번에는 초기값을 [0.1,0,0]에서 [0,10,20]로
그리고 구간도 [0,48,240]에서 [48,96,240]로 변경하여 실시해 보았습니다.
그 결과, 다음과 같이 또 큰 reward가 되었습니다.
Testing for 5 episodes ...
Episode 1: reward: 478383.841, steps: 240
Episode 2: reward: 478383.841, steps: 240
Episode 3: reward: 478383.841, steps: 240
Episode 4: reward: 478383.841, steps: 240
Episode 5: reward: 478383.841, steps: 240
Testing for 10 episodes ...
Episode 1: reward: 478383.841, steps: 240
Episode 2: reward: 478383.841, steps: 240
Episode 3: reward: 478383.841, steps: 240
Episode 4: reward: 478383.841, steps: 240
Episode 5: reward: 478383.841, steps: 240
Episode 6: reward: 478383.841, steps: 240
Episode 7: reward: 478383.841, steps: 240
Episode 8: reward: 478383.841, steps: 240
Episode 9: reward: 478383.841, steps: 240
Episode 10: reward: 478383.841, steps: 240

그리고, 다음과 같이 그래프도 꽤 양호한 재현성이 되고 있습니다.



결과가 너무 좋고 꽤 걸리지만 검증의 방법이 떠오르지 않기 때문에 이번에는 여기까지하고 싶습니다.

요약



· 혼돈 운동의 심층 강화 학습을 시도했습니다.
・피팅은 통상의 운동과 같이 깨끗이 재현했다.

· 학습된 파라미터를 사용하여, 같은 Lorenz 방정식의 미지 데이터의 피팅을 실시했지만, 깨끗한 재현성을 얻었다.
・이번에 나타내고 있지 않지만, reward가 작은데 재현하는 경우도 있으므로 어딘가 과오가 있다

・본래 model.predict로부터 구성해야 한다고 고찰되므로, 처음으로 돌아와 재고찰하고 싶다
· dqn의 학습과 Validation에 대한 지식이 없기 때문에 더 심해지며 예언할 수 있도록 하고 싶다

좋은 웹페이지 즐겨찾기