強化學習實戰二

2021-10-04 14:16:19 字數 1995 閱讀 2794

這篇部落格主要講解強化學習中兩種典型的問題:離散動作與連續動作,通過前面的學習我們知道離散動作問題可以用 q-learning演算法 解決,而連續動作問題可以用 policy gradients演算法 解決。

這篇部落格使用的專案環境:

mountaincar v0

mountaincarcontinuous v0

問題描述:將動力不足的汽車推到山頂

根據 gym環境原始碼 對環境進行分析,我們知道該專案中observation是 汽車所處位置 與 速度,state與observation是相同的,而action是離散的3個值(分別表示將汽車向左推、不推、向右推)。

語法1

gym environment 的 spaces 兩種型別:box 與 discrete。

box型別是乙個有邊界的連續陣列(維度可指定),常用的形式是 spaces.box(low, high),其中low / high 表示上下界,而box的維度取決於low / high定義的維度,比如下面這個observation_space是乙個3維陣列,每個維度的區間分別是[-1.0, 1.0],[-2.0, 2.0],[0, 3.0]。

self.observation_space = spaces.box(np.array([-

1.0,

-2.0

,0.0])

, np.array(

[1.0,-

2.0,

3.0]

), dtype=np.float32)

#

語法2

observation 是 state 的函式,二者有時相同,有時不同,在此例中,二者是一樣的(y=x),在 pendulum-v0中,observation 與 state 是不一樣的 。

該專案中最重要的就是對 reward 的理解,我們來看看環境中對 reward 的定義。

根據 gym環境原始碼 對 reward 進行分析,我們發現 reward 除了最終狀態其餘每一步都是 -1.0 。

強化學習不是應該對好的action進行獎勵,對不好的action進行懲罰嗎?為什麼這裡reward一直都是-1.0呢? 這就是 累積獎勵 的理解!演算法得根據當前episode持續多長時間來累積獎勵,其實就是希望少的步數達到結束條件。

問題描述:動力不足的汽車必須爬一維山才能達到目標。 與mountaincar v0不同,動作(施加的引擎力)允許為連續值。(注:mountaincar v0中action為施加的力的方向,而該專案中action為施加的力的大小)

根據 gym環境原始碼 對環境進行分析,我們知道該專案中observation是 汽車所處位置 與 速度,state與observation是相同的,而這裡action不再是離散值,而是連續的值(正號表示將車向右推,負號表示將車向左推)。

reward-= math.

pow(action[0]

,2)*

0.1

該項目的獎勵是到達右側山丘目標的100,減去從開始到目標的所有操作的平方和。(其實與前面的 reward = -1 是一樣的原理。這個獎勵功能提出了乙個探索挑戰,因為如果agent沒有足夠快地到達目標,它就會發現最好不要移動,並且不再尋找目標。)

注:其他專案中 reward 的作用可能是對好的action進行獎勵,對壞的action進行懲罰,這裡 reward 的作用是盡快地達到目標,因此傾向於採用**式策略。

強化學習實戰1

利用gym建立如圖所示的迷宮 如下 注意這不是乙個完整的rl agent,因為現在只寫好了影象渲染引擎render agent是乙個類 import gym from gym.envs.classic control import rendering class grid gym.env def i...

強化學習 強化學習基礎

為了應對車載網路中通訊環境快速變化的難題,可以使用強化學習進行解決,這裡對強化學習的基礎進行整理。主要的應用場景為車載網路中資源分配問題。本文源自莫煩python 強化學習章節,有需要請查閱原文 20200413補充了一些內容,來自這篇部落格,是李巨集毅的深度強化學習的筆記。強化學習的主要構成有 a...

深度強化學習 二

強化學習和深度學習有什麼關係?深度學習參與的強化學習與傳統的強化學習有何不同?為什麼要引入深度學習?強化學習的過程中,處理的是狀態,實際上,很多時候狀態是連續的 複雜的 高階的。因此,求助於深度學習。深度學習善於處理高維資料,並快速地從中抽取模式。比如在影象處理中,用畫素的集合體來表示完整的影象。這...