強化學習(Reinforcement Learning) — 案例分析 CartPole-v1 Part 2

John Hu
No silver bullet
Published in
3 min readAug 11, 2020

開始看這篇的結果分析之前,如果大家還沒看過 CartPole-v1案例分析 的話,記得先去看一下,才能知道這篇略過的東西喔!

接續原本 CartPole-v1案例分析,我們列出了一些 TODO List,這篇的目的是:【相同設定跑滿 100,000 次】。

Photo by Holger Link on Unsplash

TLDR;

我們這次訓練使用小的 DQN model (24 * 2)、簡單的設定、env 的產出當成 reward…等。之前的實驗是跑到 10,000 次,看起來結果沒有收斂。這次是跑到 20,000 多次,也都無法進行收斂。依照這種結果,即使我們跑滿100,000 次也沒辦法有好的結果。

程式設計

請大家直接參考 CartPole-v1案例分析

訓練成果

觀察

10,001 到 20,000 次成果的表現沒有原本 0 ~ 10,000 次來得好:

第 10,001 ~ 20,000 次的訓練結果,左圖為正常尺度,右邊為對數尺度

如果我們將這 20,000 次的訓練接一起來看,整體的結果還是有在收斂,但是,平均分數也是一路往下:

第 1 ~ 20,000 次的訓練結果,左圖為正常尺度,右邊為對數尺度

整體來說,跑到 20,000 次後的表現還是不盡理想。如果大家有興趣的話,可以在這邊找到我們的 model程式原始碼。啟動的指令是

python -m rl.main --display yes --episodes 10000 --game cartpole --agent simple --config rl/cfgs/simple.json --model small

在啟動之前,記得把 CartPole-21305.h5 放到 weights 資料夾中並改名成 CartPole.h5

未來想法 Updated

這個系列我們還是會持續下去,同時,我們會加入更多的變異。未來,時間許可下,我們會作出下面幾個實驗:

  • Learning rate 改成 0.1、0.01、0.0001;
  • 修改評分標準
  • 改用大一點的模型 Dense(1024) -> Dense(1024)、深一點的模型 Dense(24) -> Dense(24) -> … -> Dense(24)、又大又深的模型 Dense(1024) -> Dense(1024) -> … -> Dense(1024);
  • 開啓邊玩邊學、開啓邊玩邊學跟玩完在學;
  • 採用雙模型訓練模式;
  • 採用單一模型改成批量訓練而非單筆單筆 fit;
  • 以小模型的成果來當成大模型 exploring phase 的引導,而非隨機。

--

--