【RL】從on-policy到off-policy

博主的github鏈接,歡迎大家來訪問~:https://github.com/Sh-Zh-7

強化學習經典算法實現地址:https://github.com/Sh-Zh-7/reinforce-learning-impl

1. 什麼是on-policy,什麼是off-policy

其實這個概念我們之前已經提到了,這裏不妨再提一下:

  1.  on-policy就是獲取數據的動作和最終策略的動作是一致的,比如Sarsa。
  2.  off-policy就是獲取數據的動作和最終策略的動作不一致,比如QLearning。

從這種定義我們也可以得知:我們的強化學習流程中涉及到兩個關鍵流程:一個是選擇用來獲取數據的動作,另一個則是我們最終用來選擇動作的策略。

 

2. Behavior policy和Target policy

on-policy其實挺符合我們直覺的,問題是off-policy爲什麼要有兩種策略?

先給個定義好了:

  1. 用來與環境互動產生數據的策略,即在訓練過程中做決策。這種策略叫做behavior policy
  2. 而目標策略在行爲策略產生的數據中不斷學習、優化,即學習訓練完畢後拿去應用的策略。這種策略叫做target policy

強 化學習方面主要有兩個問題,一個叫做exploitation,另一個叫做exploration。我們獲得數據,就是屬於exploration,這是 我們behavior policy所做的事情;我們訓練我們的策略,就是屬於exploitation,是我們target policy所做的事情。

 

3. 數學背景

(1)Coverage

有些人可能會覺得很疑惑,你採用兩個不同的策略,爲什麼可行?答案是,確實不太可行,我們得加一點約束。

首先既然是用來“探索”的behavior policy,它產生的數據能給我們的target policy訓練,那他能採用的動作肯定是target policy的超集把,用數學的語言來描述,就是:

爲了能從行爲策略b(即behavior policy)產生的樣本回合(Episode)中評估(學習)策略 ,我們要求當執行策略時\small \pi中的每個動作都有一定概率發生,也就是時\small \pi(a|s)>0,必有\small b(a|s)>0(逆命題不一定成立)。這種要求稱爲“包含”(Coverage)

(2)Importance sampling

Importance sampling的核心在於採樣。現在你有兩種分佈,你可以在其中一種分佈中採樣x,來得到第二種分佈的f(x)的期望。這一點和我們的on-policy和off-policy很像。

這個做法的一個注意點是:我們的兩個分佈不能相差太多,反例如下圖所示:

 

4. PPO和PPO2算法

引入了importance sampling以後,我們就可以着手研究policy-based中的off-policy算法了,首先,既然我們是從另一種策略中取得數據的,我們研究對象也會發生相應的變化:

我們的PPO和PPO2算法,則是基於以下兩個式子:

 有了這個以後,我們就可以很順利地編寫相關程序了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章