iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0
自我挑戰組

高中生也可以!利用強化學習讓機器人動起來!系列 第 22

D22:使用強化學習訓練自己的環境

  • 分享至 

  • xImage
  •  

各位不知道有沒有期待今天的到來,過了22天才終於進入到實際使用強化學習的環節。我覺得其實30天說長不長說短不短,不知不覺也過了2/3了,也到了該是收穫果實的時候了。今天會帶大家訓練我們的環境,不過因為環境的開發時間較短,許多細節處理可能不是很好或者有瑕疵等,各位可以當成範本看看就好,有想要改良的話也都可以照著自己的意思改良喔。

匯入模組

from stable_baselines3 import PPO
import matplotlib.pyplot as plt
import gym

訓練

各位可以直接執行以下程式碼進行訓練。基本上程式碼都是官方文檔的範例,然後再改寫一些部分而已。


env=gym.make('R2D2walking-v1')
model = PPO("MlpPolicy", env, verbose=1,n_steps=500,seed=0)
model.learn(total_timesteps=1000000)
plt.plot(env.trainreward)
plt.show()
model.save("ppo_r2d2")
del model 

訓練完過後各位可以執行以下程式碼來評估模型。

model = PPO.load("ppo_r2d2")
obs = env.reset()
while True:
    action, _states = model.predict(obs)
    obs, rewards, dones, info = env.step(action)
    if dones:
        env.reset()
    env.render()

經驗談

強化學習訓練會花蠻多時間的,因為一直在錯誤中學習,所以他的運算、收斂等等訓練會比較久是正常的,上面程式碼我訓練了大約10小時左右,前面半小時到1小時R2D2都像個笨蛋亂跑是很正常的,需要有耐心靜待成果。

另外如果看到一些可能會影響成果的瑕疵的話(例如跌倒了卻還沒reset等),通常就會立刻中止程式並且除錯。想到不錯的主意的話通常會先記下來(例如訓練到一半想到觀察值可以使用極座標試試看),如果剛開始訓練的話就會終止程式並且試試看新主意,如果程式已經執行了一段時間了,我就會等他跑完看看結果再進行比較。

當然這也沒有一定,各位寫過幾個環境後就會有一些個人的心法了!這些都是難能可貴的經驗,也是促進各位進步最好的方式。

結語

今天就先到這邊,各位可以試試改良環境或者靜待訓練成果,明天會帶各位驗收一下成果,希望大家可以跟自己的機器人玩得開心喔,明天會給各位看看訓練初期跟後期甚至是評估時的情況。各位也可以看看自己的訓練情況如何。


上一篇
D21:stable_baselines3範例&PPO演算法基本API
下一篇
D23:強化學習訓練過程分享
系列文
高中生也可以!利用強化學習讓機器人動起來!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言