openAi開源了一個叫gym的遊戲庫,這個庫裏有好多小遊戲能夠用來作強化學習試驗,好比Cart Pole平衡車小遊戲。網絡
gym的Cart Pole環境
Cart Pole在OpenAI的gym模擬器裏面,是相對比較簡單的一個遊戲。遊戲裏面有一個小車,上有豎着一根杆子。小車須要左右移動來保持杆子豎直。若是杆子傾斜的角度大於15°,那麼遊戲結束。小車也不能移動出一個範圍(中間到兩邊各2.4個單位長度)。以下圖所示: 機器學習
在gym的Cart Pole環境(env)裏面,左移或者右移小車的action以後,env都會返回一個+1的reward。到達200個reward以後,遊戲也會結束。學習
強化學習的目的就是訓練神經網絡來自動玩這個遊戲,使得最終結果是連續移動200個action而平衡車不倒,一直到遊戲正常結束。spa
那麼問題來了,神經網絡是經過什麼機制來學會自動玩這個遊戲呢?這就是深度學習裏一個鼎鼎大名的領域叫「強化學習」。著名的圍棋智能機器人阿法狗就是強化學習的一個典型應用。code
那麼強化學習是怎麼實現的呢?它的工做原理是什麼?blog
筆者不打算太多介紹理論方面的知識,更多的從實踐出發,教給你們怎麼編寫本身的強化學習模型。強化學習模型大概有DQN,策略網絡,DDPG等幾種常見的神經網絡結構,具體的模型實踐會在後續章節詳細介紹,這裏首先給出一點大概的印象。遊戲
首先看下怎麼使用gym吧:ip
先安裝openai的gym環境,gym是一個模擬遊戲環境的小引擎,openai開發gym就是爲了方便廣大機器學習愛好者作一些遊戲交互方面的機器學習嘗試。開發
pip install gym安裝完成後,試試gym能不能正常運行。深度學習
運行下面代碼:
import gym # 建立一個小車倒立擺模型 env = gym.make('CartPole-v0') # 初始化環境 env.reset() # 刷新當前環境,並顯示 env.render()
CartPole-v0’是小車遊戲名稱。出現上面這個窗口就表示gym環境已經能夠正常運行了!
第二步,讓小車動起來!
count = 0 for t in range(100): action = env.action_space.sample() #隨機採樣動做 print("action:%s"%(action)) observation, reward, done, info = env.step(action) #與環境交互,得到下一步的時刻 if done: break env.render() #繪製場景 count+=1 time.sleep(0.2) #每次等待0.2s print(count)
env.step(action)是讓小車按照action的動做動起來,返回動起來以後的小車狀態,回報值,是否結束等信息。
done=True表示本次遊戲結束;observation是小車狀態,reward是本次遊戲動做的回報值。