深度強化學習課程文件

蒙特卡洛與時序差分學習

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

蒙特卡洛與時序差分學習

在深入瞭解 Q-學習之前,我們需要討論的最後一件事是兩種學習策略。

請記住,強化學習智慧體**透過與環境互動來學習。**其理念是,**根據經驗和收到的獎勵,智慧體將更新其價值函式或策略。**

蒙特卡洛和時序差分學習是兩種不同的**訓練價值函式或策略函式的策略。**它們都**利用經驗來解決強化學習問題。**

一方面,蒙特卡洛**在學習之前使用整個回合的經驗。**另一方面,時序差分**只使用一個步驟(St,At,Rt+1,St+1S_t, A_t, R_{t+1}, S_{t+1} )來學習。**

我們將**使用基於價值的方法示例**來解釋這兩種方法。

蒙特卡洛:在回合結束時學習

蒙特卡洛等待到回合結束,計算GtG_t(回報),並將其用作**更新 V(St)V(S_t) 的目標。**

因此,它需要**完整的互動回合才能更新價值函式。**

Monte Carlo

如果我們舉一個例子:

Monte Carlo
  • 我們總是**從相同的起點**開始回合。

  • **智慧體使用策略採取行動。**例如,使用 Epsilon Greedy 策略,這是一種在探索(隨機行動)和利用之間交替的策略。

  • 我們獲得**獎勵和下一個狀態。**

  • 如果貓吃了老鼠,或者老鼠移動了 > 10 步,我們就終止回合。

  • 在回合結束時,**我們有一個狀態、行動、獎勵和下一個狀態元組的列表。**例如 [[狀態瓦片 3 底部,向左,+1,狀態瓦片 2 底部],[狀態瓦片 2 底部,向左,+0,狀態瓦片 1 底部]…]

  • **智慧體將對總獎勵GtG_t**求和(以檢視其表現如何)。

  • 然後它將**根據公式更新V(st)V(s_t)。**

    Monte Carlo
  • 然後**用這些新知識開始新遊戲。**

透過執行越來越多的回合,**智慧體將學會玩得越來越好。**

Monte Carlo

例如,如果我們使用蒙特卡洛訓練狀態價值函式

  • 我們初始化價值函式,**使其對每個狀態返回 0 值。**

  • 學習率(lr)為 0.1,折扣率(discount rate)為 1(無折扣)。

  • 我們的老鼠**探索環境並採取隨機行動**

    Monte Carlo
  • 老鼠移動了超過 10 步,因此回合結束。

    Monte Carlo
  • 我們有一個狀態、行動、獎勵、下一個狀態的列表,**我們需要計算回報Gt=0G{t=0}**。Gt=Rt+1+Rt+2+Rt+3...G_t = R_{t+1} + R_{t+2} + R_{t+3} ...(為簡單起見,我們不對獎勵進行折扣)G0=R1+R2+R3G_0 = R_{1} + R_{2} + R_{3}… G0=1+0+0+0+0+0+1+1+0+0 G0=3G_0 = 3

  • 我們現在可以計算**新的**V(S0)V(S_0):

    Monte Carlo V(S0)=V(S0)+lr[G0V(S0)]V(S_0) = V(S_0) + lr * [G_0 — V(S_0)] V(S0)=0+0.1[30]V(S_0) = 0 + 0.1 * [3 – 0] V(S0)=0.3V(S_0) = 0.3
Monte Carlo

時序差分學習:每一步都學習

另一方面,**時序差分只等待一次互動(一個步驟)St+1S_{t+1}**來形成時序差分目標並更新V(St)V(S_t)使用Rt+1R_{t+1}γV(St+1) \gamma * V(S_{t+1}).

**時序差分的核心思想是在每個步驟更新V(St)V(S_t)。**

但是因為我們沒有經歷整個回合,所以我們沒有GtG_t(期望回報)。相反,**我們透過新增Rt+1R_{t+1} 和下一個狀態的折扣值來估計GtG_t。**

這被稱為自舉。之所以這樣稱呼,**是因為時序差分的更新部分基於現有估計值V(St+1)V(S_{t+1}),而不是完整的樣本GtG_t。**

Temporal Difference

這種方法稱為 TD(0) 或**一步時序差分(在任何單個步驟後更新價值函式)。**

Temporal Difference

如果我們使用相同的示例,

Temporal Difference
  • 我們初始化價值函式,使其對每個狀態返回 0 值。

  • 學習率(lr)為 0.1,折扣率(discount rate)為 1(無折扣)。

  • 我們的老鼠開始探索環境並採取隨機行動:**向左走**

  • 它得到一個獎勵Rt+1=1R_{t+1} = 1因為它**吃了一塊乳酪**

    Temporal Difference
Temporal Difference

我們現在可以更新V(S0)V(S_0):

新的V(S0)=V(S0)+lr[R1+γV(S1)V(S0)]V(S_0) = V(S_0) + lr * [R_1 + \gamma * V(S_1) - V(S_0)]

新的V(S0)=0+0.1[1+100]V(S_0) = 0 + 0.1 * [1 + 1 * 0–0]

新的V(S0)=0.1V(S_0) = 0.1

所以我們剛剛更新了狀態 0 的價值函式。

現在我們**繼續與這個環境互動,使用我們更新後的價值函式。**

Temporal Difference

總結一下

  • 使用*蒙特卡洛*,我們從一個完整的 эпизод 更新價值函式,因此我們**使用該 эпизод 的實際準確折扣回報。**

  • 使用*時序差分學習*,我們從一個步驟更新價值函式,並替換GtG_t我們不知道的,用**一個稱為 TD 目標(時序差分目標)的估計回報。**

    Summary
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.