強化學習——環境庫OpenAI Gym

這段時間各大新聞媒體都在報道SpaceX的馬斯克,因為其公司成功發射「獵鷹9號」火箭。馬斯克是一個極具傳奇色彩的人物,其成就也足以讓他名垂青史。但今天我們要討論的不是馬斯克這個人,而是馬斯克牽頭建立的人工智慧非營利組織OpenAI下一個強化學習工具庫Gym,它可以被用來開發和比較強化學習演算法。

簡單的說,gym就是提供了強化學習中與agent交互的environments,gym中的環境都留出了供我們設計演算法的相應介面,這為我們節省了不少事。下面就來看看這個gym庫里有哪些東西吧~

安裝

要求Python版本大於3.5,使用pip可以簡單安裝。

pip install gym

這種安裝方法並沒有安裝gym中的全部環境,只包括了

  • algorithmic
  • toy_text
  • classic_control

這三種類型的環境,另外還有Atari,Box2d和MuJoCo。按照自己的需要可以按照github上的指導進行安裝。

環境(Environments)

下面是一個CarPole的例子,運行下面的代碼就可以完成1000步:

import gymenv = gym.make(CartPole-v1)env.reset()for _ in range(1000): env.render() env.step(env.action_space.sample()) # take a random action

https://www.zhihu.com/video/951127101563260928

當我們需要使用別的環境時,只需將第二行代碼中的CartPole-v1替換成別的,不知道有哪些可供選擇?看看這裡。

觀測(Observations)

上面的例子中,我們採取的是隨機選取的動作(action),但實際中我們肯定希望更為合理的動作,所以我們希望知道動作作用以後會對環境造成上面影響,即需要一個反饋。環境的step函數正是我們所需要的,它執行以後會返回四個參數:

  • Observations(object):代表您對特定環境的觀測值。 例如,來自相機的像素數據,機器人的關節角度和關節速度,或棋盤遊戲中的棋盤狀態。
  • reward (float):前一次行動所獲得的獎勵值。其範圍在不同的環境中有所不同,但目標總是提高總獎勵。
  • done (boolean):一個布爾型數據,表示是否需要reset環境,即是否完成一個episode。比如上一個例子中我們桿是不是偏的太遠,玩遊戲時是不是喪命等
  • info (dict): 用於調試的診斷信息。 它有時對學習有用(例如,它可能包含環境最後狀態變化的原始概率)。 但是,agent的評估不能用這個信息去學習。

import gymenv = gym.make(CartPole-v0)for i_episode in range(20): observation = env.reset() for t in range(100): env.render() print(observation) action = env.action_space.sample() observation, reward, done, info = env.step(action) if done: print("Episode finished after {} timesteps".format(t+1)) break

https://www.zhihu.com/video/951127622894280704

空間(Spaces)

在上面的CarPole的例子中,我們使用了隨機的action,這些隨機的action就來自環境的動作空間(action space)。每一個環境都有一個動作空間(action space)和觀測空間(observation space)。具體是什麼情況可以查看屬性action_space和observation_space,至於其含義就要去看代碼注釋和官網的一些說明啦。

import gymenv = gym.make(CartPole-v0)print(env.action_space)#> Discrete(2)print(env.observation_space)#> Box(4,)

參考

Gym: A toolkit for developing and comparing reinforcement learning algorithms

openai/gymgithub.com圖標github:gym

推薦閱讀:

Ciyous Note: 遺傳演算法與進化策略
親手教的AI總是放心些
他這個Z炮是怎麼壓到我的?——OpenAI解釋Dota2AI的實現過程
OpenAI人工智慧1v1擊敗Dota2頂級玩家:明年開啟5v5模式
熵最大化和智能行為

TAG:機器學習 | 強化學習ReinforcementLearning | openai |