偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

幾行代碼實現強化學習

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

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

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

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

強化學習

一、環(huán)境

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

1. Gym

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

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

  1. pip install gym 

之后,您可以使用以下代碼創(chuàng)建環(huán)境:

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

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

env變量包含有關環(huán)境(游戲)的信息。 要了解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中環(huán)境的完整列表,請參閱此。

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

2. Retro

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

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

  1. pip install gym-retro 

然后,我們可以使用以下方法創(chuàng)建和查看環(huán)境:

  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/ 

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

  1. retro.data.list_games() 

3. Procgen

強化學習的一個典型問題是,生成的算法通??梢栽谔囟ōh(huán)境下很好地工作,但無法學習任何可通用的技能。 例如,如果我們要改變游戲的外觀或敵人的反應該怎么辦?

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

渲染游戲非常簡單:

  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]]

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

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

二、強化學習

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

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

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

1. 穩(wěn)定的基線(穩(wěn)定Baselines)

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

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

安裝可以簡單地通過以下方式完成:pip install stable-baselines。 然后,為了創(chuàng)建和學習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示例,我們需要將環(huán)境包裝在Dummy中,以使其可供SB使用。 然后,在CartPole環(huán)境中訓練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步就設法找到一種保持極點穩(wěn)定的方法。 這只需要幾行代碼和幾分鐘的處理!

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

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

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

2. 其他軟件包

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

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

三、結論

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

 

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

2023-03-23 16:30:53

PyTorchDDPG算法

2023-01-24 17:03:13

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

2025-05-08 09:16:00

模型強化學習訓練

2023-06-25 11:30:47

可視化

2023-03-09 08:00:00

強化學習機器學習圍棋

2019-08-12 08:43:53

GitHub代碼開發(fā)者

2023-11-07 07:13:31

推薦系統多任務學習

2022-11-02 14:02:02

強化學習訓練

2020-11-12 19:31:41

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

2024-04-03 07:56:50

推薦系統多任務推薦

2021-09-17 15:54:41

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

2021-06-11 09:28:04

人工智能機器學習技術

2020-04-01 12:18:11

人工智能強化學習開源

2024-12-09 08:45:00

模型AI

2024-05-30 16:37:29

2020-06-05 08:09:01

Python強化學習框架

2017-07-25 16:04:31

概念應用強化學習

2019-09-29 10:42:02

人工智能機器學習技術

2023-07-20 15:18:42

2023-04-23 10:12:14

算法強化學習
點贊
收藏

51CTO技術棧公眾號