成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

幾行代碼實現強化學習

人工智能 機器學習
本文的目的是讓您快速使用一些簡潔的程序包,以便您可以輕松地開始學習強化學習。有關如何實施SOTA深度強化學習算法的深入教程,請參閱此內容。

在過去的一年中,強化學習已經取得了重大進步,最新技術每兩個月發布一次。 我們已經看到AlphaGo擊敗了世界冠軍圍棋選手Ke Jie,Multi-Agents玩了捉迷藏,甚至AlphaStar在星際爭霸中也擁有自己的實力。

實施這些算法可能會非常具有挑戰性,因為它需要對深度學習和強化學習都有很好的理解。 本文的目的是讓您快速使用一些簡潔的程序包,以便您可以輕松地開始學習強化學習。

有關如何實施SOTA深度強化學習算法的深入教程,請參閱此內容。 強烈推薦您仔細閱讀!

強化學習

一、環境

在開始實現這些算法之前,我們首先需要創建一個工作環境,即游戲。 對于算法而言,重要的是要了解什么是動作和觀察空間。 為此,我們將介紹幾個可用于選擇有趣環境的軟件包。

1. Gym

Gym是用于開發和比較強化學習算法的工具包。 它通常用于實驗和研究目的,因為它提供了一個易于使用的界面來處理環境。

只需使用以下命令安裝軟件包:

  1. pip install gym 

之后,您可以使用以下代碼創建環境:

  1. import gym 
  2. env = gym.make(‘CartPole-v0’) 

在 CartPole 環境中,您的任務是防止頭連接到推車的電線桿掉落。

env變量包含有關環境(游戲)的信息。 要了解CartPole的操作空間是什么,只需運行env.action_space即可產生Discrete(2)。 這意味著可能有兩個離散的動作。 要查看觀察空間,請運行env.observation_space,它產生Box(4)。 此框代表 n(4)個封閉間隔的笛卡爾積。

要渲染游戲,請運行以下代碼:

  1. import gym 
  2. env = gym.make('CartPole-v0') 
  3.  
  4. obs = env.reset() 
  5. while True: 
  6.     action = env.action_space.sample() 
  7.     obs, rewards, done, info = env.step(action) 
  8.     env.render() 
  9.  
  10.     if done: 
  11.         break 
[[336834]]

我們可以看到,如果我們選擇采取隨機行動,則小車車一直在失敗。 最終,目標將是運行強化學習算法,該算法將學習如何解決此問題。

有關Gym中環境的完整列表,請參閱此。

注意:如果您在運行atari(阿塔利)游戲時遇到問題,請參見內容:https://github.com/openai/gym/issues/1726。

2. Retro

創建有趣的環境的另一個選項是使用Retro。 該軟件包由OpenAI開發,可讓您使用ROMS來模擬Airstriker-Genesis之類的游戲。

只需使用以下命令安裝軟件包:

  1. pip install gym-retro 

然后,我們可以使用以下方法創建和查看環境:

  1. import retro 
  2. env = retro.make(game='Airstriker-Genesis'

同樣,要渲染游戲,請運行以下代碼:

  1. import retro 
  2. env = retro.make(game='Airstriker-Genesis'
  3.  
  4. obs = env.reset() 
  5. while True: 
  6.     action = env.action_space.sample() 
  7.     obs, rewards, done, info = env.step(action) 
  8.     env.render() 
  9.  
  10.     if done: 
  11.         break 
幾行代碼實現強化學習

要安裝ROMS,您需要找到相應的.sha文件,然后運行:

  1. python3 -m retro.import /path/to/your/ROMs/directory/ 

注意:有關易于使用的環境的完整列表,請運行:

  1. retro.data.list_games() 

3. Procgen

強化學習的一個典型問題是,生成的算法通常可以在特定環境下很好地工作,但無法學習任何可通用的技能。 例如,如果我們要改變游戲的外觀或敵人的反應該怎么辦?

為了解決這個問題,OpenAI開發了一個名為Procgen的軟件包,該軟件包允許創建過程生成的環境。 我們可以使用此軟件包來衡量強化學習代理學習通用技能的速度。

渲染游戲非常簡單:

  1. import gym 
  2. param = {"num_levels": 1, "distribution_mode": "hard"} 
  3. env = gym.make("procgen:procgen-leaper-v0", **param) 
  4.  
  5. obs = env.reset() 
  6. while True: 
  7.     action = env.action_space.sample() 
  8.     obs, rewards, done, info = env.step(action) 
  9.     env.render() 
  10.  
  11.     if done: 
  12.         break 
[[336835]]

這將生成可在其上訓練算法的單個級別。 有幾個選項可用于以程序方式生成同一環境的許多不同版本:

  • num_levels-可以生成的唯一級別數
  • distribution_mode-使用哪種級別的變量,選項為"easy簡單","hard難","extreme極致","memory記憶","exploration探索"。 所有游戲都支持“易”和“難”,而其他選項則取決于游戲。

二、強化學習

現在,終于是時候進行實際的強化學習了。 盡管有許多可用的軟件包可用于訓練算法,但由于它們的可靠實現,我將主要研究“穩定Baselines ”。

請注意,我不會在此帖子中解釋RL算法的實際工作方式,因為這本身就需要一個全新的帖子。 有關最新算法(例如PPO,SAC和TD3)的概述,請參見內容:

https://github.com/dennybritz/reinforcement-learning。

1. 穩定的基線(穩定Baselines)

穩定基準(SB)是基于OpenAI基準的,旨在使研究社區和行業更容易復制,改進和識別新想法。 他們在“基線”上進行了改進,使之成為一個更穩定,更簡單的工具,使初學者可以嘗試進行“強化學習”,而不會陷入實施細節中。

SB之所以經常使用,是因為它可以輕松,快速地應用最新的強化學習算法。 此外,創建和訓練RL模型只需要幾行代碼。

安裝可以簡單地通過以下方式完成:pip install stable-baselines。 然后,為了創建和學習RL模型(例如PPO2),我們運行以下代碼行:

  1. from stable_baselines import PPO2 
  2. from stable_baselines.common.policies import MlpPolicy 
  3. model = PPO2(MlpPolicy, env, verbose=1
  4. model.learn(total_timesteps=10_000log_interval=10

有些事情可能需要一些解釋:

  • total_timesteps:要訓練的樣本總數
  • MlpPolicy:實現actor-critic的Policy對象。 在這種情況下,將使用2層64層的多層感知器。還有視覺信息策略,例如CnnPolicy甚至CnnLstmPolicy

為了將此模型應用于CartPole示例,我們需要將環境包裝在Dummy中,以使其可供SB使用。 然后,在CartPole環境中訓練PPO2的完整示例如下:

  1. from stable_baselines.common.policies import MlpPolicy 
  2. from stable_baselines.common.vec_env import DummyVecEnv 
  3. from stable_baselines import PPO2 
  4. import gym 
  5.  
  6. env = gym.make('CartPole-v0') 
  7. env = DummyVecEnv([lambda: env]) 
  8.  
  9. model = PPO2(MlpPolicy, env, verbose=1
  10. model.learn(total_timesteps=50_000log_interval=10
  11.  
  12. obs = env.reset() 
  13. while True: 
  14.     action, _states = model.predict(obs) 
  15.     obs, rewards, dones, info = env.step(action) 
  16.     env.render() 
[[336836]]

如上圖所示,PPO2僅用50,000步就設法找到一種保持極點穩定的方法。 這只需要幾行代碼和幾分鐘的處理!

如果要將其應用于Procgen或Retro,請確保選擇一個允許基于卷積的網絡的策略,因為觀察空間很可能是環境當前狀態的圖像。

最后,CartPole示例非常簡單,僅需訓練50,000步即可。 大多數其他環境在顯示出顯著改進之前通常需要執行幾千萬步。

注意:《穩定基準》的作者警告初學者在產品中使用該軟件包之前,對強化學習要有很好的了解。 強化學習有許多關鍵組成部分,如果其中任何一個出現錯誤,該算法將失敗,并且可能會留下很少的解釋。

2. 其他軟件包

還有其他一些常用于應用RL算法的軟件包:

  • TF-Agents-比穩定基線需要更多的編碼,但通常是強化學習研究的必備軟件包。
  • MinimalRL-在Pytorch中以非常少的代碼實現的最新RL算法。 它絕對有助于理解算法。
  • DeepRL-Pytorch的另一種實現,但是此版本還具有實現要使用的其他環境。
  • MlAgents-一個開放源代碼的Unity插件,使游戲和模擬可用作培訓代理的環境。

三、結論

強化學習可能是一個棘手的課題,因為很難調試代碼中是否以及何時出現問題。 希望這篇文章可以幫助您開始進行強化學習。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2023-03-23 16:30:53

PyTorchDDPG算法

2023-01-24 17:03:13

強化學習算法機器人人工智能

2023-06-25 11:30:47

可視化

2025-05-08 09:16:00

模型強化學習訓練

2023-03-09 08:00:00

強化學習機器學習圍棋

2019-08-12 08:43:53

GitHub代碼開發者

2023-11-07 07:13:31

推薦系統多任務學習

2022-11-02 14:02:02

強化學習訓練

2024-04-03 07:56:50

推薦系統多任務推薦

2020-11-12 19:31:41

強化學習人工智能機器學習

2021-09-17 15:54:41

深度學習機器學習人工智能

2021-06-11 09:28:04

人工智能機器學習技術

2024-12-09 08:45:00

模型AI

2020-04-01 12:18:11

人工智能強化學習開源

2019-09-29 10:42:02

人工智能機器學習技術

2024-05-30 16:37:29

2017-07-25 16:04:31

概念應用強化學習

2020-06-05 08:09:01

Python強化學習框架

2020-01-23 15:33:07

AI 數據人工智能

2023-07-20 15:18:42

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九热国产精品视频 | 欧美色专区 | 亚洲在线一区 | 中文字幕亚洲视频 | 涩涩视频网站在线观看 | 日韩三区 | 国产香蕉视频 | 99亚洲精品 | 99一区二区 | 欧美色综合一区二区三区 | 超碰地址| 午夜精品视频 | 国产日韩电影 | 久久精品视频网站 | 中文字幕一区二区三区在线观看 | 国产精品久久久久久久久久了 | 国产精品1区2区3区 男女啪啪高潮无遮挡免费动态 | 日韩欧美国产综合 | 福利视频一区 | 亚洲综合色视频在线观看 | 亚洲二区视频 | 精品久久久久久久 | 高清久久 | 在线亚洲免费视频 | 欧美影院 | 亚洲狠狠丁香婷婷综合久久久 | 亚洲欧洲精品一区 | 日韩在线资源 | 精品久久国产视频 | 久久噜| 日韩精品一区二区三区视频播放 | 一区二区不卡 | 亚洲综合99 | 日韩午夜影院 | 久久99国产精一区二区三区 | 免费a在线 | 成人免费av | 91国自视频| 亚洲午夜精品一区二区三区 | 日本aⅴ中文字幕 | 成人在线视频免费观看 |