自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

幾行代碼實(shí)現(xiàn)強(qiáng)化學(xué)習(xí)

人工智能 機(jī)器學(xué)習(xí)
本文的目的是讓您快速使用一些簡(jiǎn)潔的程序包,以便您可以輕松地開始學(xué)習(xí)強(qiáng)化學(xué)習(xí)。有關(guān)如何實(shí)施SOTA深度強(qiáng)化學(xué)習(xí)算法的深入教程,請(qǐng)參閱此內(nèi)容。

在過去的一年中,強(qiáng)化學(xué)習(xí)已經(jīng)取得了重大進(jìn)步,最新技術(shù)每?jī)蓚€(gè)月發(fā)布一次。 我們已經(jīng)看到AlphaGo擊敗了世界冠軍圍棋選手Ke Jie,Multi-Agents玩了捉迷藏,甚至AlphaStar在星際爭(zhēng)霸中也擁有自己的實(shí)力。

實(shí)施這些算法可能會(huì)非常具有挑戰(zhàn)性,因?yàn)樗枰獙?duì)深度學(xué)習(xí)和強(qiáng)化學(xué)習(xí)都有很好的理解。 本文的目的是讓您快速使用一些簡(jiǎn)潔的程序包,以便您可以輕松地開始學(xué)習(xí)強(qiáng)化學(xué)習(xí)。

有關(guān)如何實(shí)施SOTA深度強(qiáng)化學(xué)習(xí)算法的深入教程,請(qǐng)參閱此內(nèi)容。 強(qiáng)烈推薦您仔細(xì)閱讀!

強(qiáng)化學(xué)習(xí)

一、環(huán)境

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

1. Gym

Gym是用于開發(fā)和比較強(qiáng)化學(xué)習(xí)算法的工具包。 它通常用于實(shí)驗(yàn)和研究目的,因?yàn)樗峁┝艘粋€(gè)易于使用的界面來處理環(huán)境。

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

  1. pip install gym 

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

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

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

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

要渲染游戲,請(qǐng)運(yùn)行以下代碼:

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

我們可以看到,如果我們選擇采取隨機(jī)行動(dòng),則小車車一直在失敗。 最終,目標(biāo)將是運(yùn)行強(qiáng)化學(xué)習(xí)算法,該算法將學(xué)習(xí)如何解決此問題。

有關(guān)Gym中環(huán)境的完整列表,請(qǐng)參閱此。

注意:如果您在運(yùn)行atari(阿塔利)游戲時(shí)遇到問題,請(qǐng)參見內(nèi)容:https://github.com/openai/gym/issues/1726。

2. Retro

創(chuàng)建有趣的環(huán)境的另一個(gè)選項(xiàng)是使用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'

同樣,要渲染游戲,請(qǐng)運(yùn)行以下代碼:

  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 
幾行代碼實(shí)現(xiàn)強(qiáng)化學(xué)習(xí)

要安裝ROMS,您需要找到相應(yīng)的.sha文件,然后運(yùn)行:

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

注意:有關(guān)易于使用的環(huán)境的完整列表,請(qǐng)運(yùn)行:

  1. retro.data.list_games() 

3. Procgen

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

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

渲染游戲非常簡(jiǎ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]]

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

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

二、強(qiáng)化學(xué)習(xí)

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

請(qǐng)注意,我不會(huì)在此帖子中解釋RL算法的實(shí)際工作方式,因?yàn)檫@本身就需要一個(gè)全新的帖子。 有關(guān)最新算法(例如PPO,SAC和TD3)的概述,請(qǐng)參見內(nèi)容:

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

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

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

SB之所以經(jīng)常使用,是因?yàn)樗梢暂p松,快速地應(yīng)用最新的強(qiáng)化學(xué)習(xí)算法。 此外,創(chuàng)建和訓(xùn)練RL模型只需要幾行代碼。

安裝可以簡(jiǎn)單地通過以下方式完成:pip install stable-baselines。 然后,為了創(chuàng)建和學(xué)習(xí)RL模型(例如PPO2),我們運(yùn)行以下代碼行:

  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:要訓(xùn)練的樣本總數(shù)
  • MlpPolicy:實(shí)現(xiàn)actor-critic的Policy對(duì)象。 在這種情況下,將使用2層64層的多層感知器。還有視覺信息策略,例如CnnPolicy甚至CnnLstmPolicy

為了將此模型應(yīng)用于CartPole示例,我們需要將環(huán)境包裝在Dummy中,以使其可供SB使用。 然后,在CartPole環(huán)境中訓(xù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步就設(shè)法找到一種保持極點(diǎn)穩(wěn)定的方法。 這只需要幾行代碼和幾分鐘的處理!

如果要將其應(yīng)用于Procgen或Retro,請(qǐng)確保選擇一個(gè)允許基于卷積的網(wǎng)絡(luò)的策略,因?yàn)橛^察空間很可能是環(huán)境當(dāng)前狀態(tài)的圖像。

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

注意:《穩(wěn)定基準(zhǔn)》的作者警告初學(xué)者在產(chǎn)品中使用該軟件包之前,對(duì)強(qiáng)化學(xué)習(xí)要有很好的了解。 強(qiáng)化學(xué)習(xí)有許多關(guān)鍵組成部分,如果其中任何一個(gè)出現(xiàn)錯(cuò)誤,該算法將失敗,并且可能會(huì)留下很少的解釋。

2. 其他軟件包

還有其他一些常用于應(yīng)用RL算法的軟件包:

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

三、結(jié)論

強(qiáng)化學(xué)習(xí)可能是一個(gè)棘手的課題,因?yàn)楹茈y調(diào)試代碼中是否以及何時(shí)出現(xiàn)問題。 希望這篇文章可以幫助您開始進(jìn)行強(qiáng)化學(xué)習(xí)。

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2023-03-23 16:30:53

PyTorchDDPG算法

2023-01-24 17:03:13

強(qiáng)化學(xué)習(xí)算法機(jī)器人人工智能

2023-06-25 11:30:47

可視化

2023-03-09 08:00:00

強(qiáng)化學(xué)習(xí)機(jī)器學(xué)習(xí)圍棋

2019-08-12 08:43:53

GitHub代碼開發(fā)者

2023-11-07 07:13:31

推薦系統(tǒng)多任務(wù)學(xué)習(xí)

2021-09-17 15:54:41

深度學(xué)習(xí)機(jī)器學(xué)習(xí)人工智能

2022-11-02 14:02:02

強(qiáng)化學(xué)習(xí)訓(xùn)練

2024-04-03 07:56:50

推薦系統(tǒng)多任務(wù)推薦

2020-11-12 19:31:41

強(qiáng)化學(xué)習(xí)人工智能機(jī)器學(xué)習(xí)

2021-06-11 09:28:04

人工智能機(jī)器學(xué)習(xí)技術(shù)

2024-12-09 08:45:00

模型AI

2020-04-01 12:18:11

人工智能強(qiáng)化學(xué)習(xí)開源

2019-09-29 10:42:02

人工智能機(jī)器學(xué)習(xí)技術(shù)

2020-01-23 15:33:07

AI 數(shù)據(jù)人工智能

2024-08-28 13:53:42

多代理強(qiáng)化學(xué)習(xí)機(jī)器人

2023-07-20 15:18:42

2023-08-28 06:52:29

2023-04-23 10:12:14

算法強(qiáng)化學(xué)習(xí)

2024-05-30 16:37:29

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)