深度強化學習課程文件

Q-Learning 簡介

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

Q-Learning 簡介

什麼是 Q-Learning?

Q-Learning 是一種**異策略(off-policy)的基於價值的方法,它使用 TD 方法來訓練其動作價值函式:**

  • *異策略*:我們將在本單元末尾討論這個問題。
  • *基於價值的方法*:透過訓練一個價值函式或動作價值函式來間接找到最優策略,該函式將告訴我們**每個狀態或每個狀態-動作對的價值。**
  • *TD 方法*:**在每一步而不是在劇集結束時更新其動作價值函式。**

**Q-Learning 是我們用來訓練 Q 函式的演算法**,它是一個**動作價值函式**,用於確定處於特定狀態並在該狀態下采取特定動作的價值。

Q-function
給定一個狀態和動作,我們的 Q 函式輸出一個狀態-動作值(也稱為 Q 值)

**Q 來自於該狀態下該動作的“質量”(價值)。**

讓我們回顧一下價值和獎勵之間的區別

  • 一個*狀態*或一個*狀態-動作對的價值*是智慧體如果從該狀態(或狀態-動作對)開始並按照其策略行動所獲得的預期累積獎勵。
  • *獎勵*是智慧體在某個狀態下執行某個動作後**從環境中獲得的反饋**。

在內部,我們的 Q 函式由**一個 Q 表編碼,這是一個表格,其中每個單元格對應一個狀態-動作對的價值。**可以將此 Q 表視為我們 Q 函式的**記憶或備忘錄。**

讓我們透過一個迷宮的例子。

Maze example

Q 表被初始化。這就是為什麼所有值都為 0。該表格**包含每個狀態和動作對應的狀態-動作值。**對於這個簡單的例子,狀態僅由老鼠的位置定義。因此,我們的 Q 表有 2*3 行,每行對應老鼠的一個可能位置。在更復雜的場景中,狀態可能包含比行動者位置更多的資訊。

Maze example

在這裡我們看到**初始狀態並向上移動的狀態-動作價值為 0:**

Maze example

所以:Q 函式使用一個**包含每個狀態-動作對價值**的 Q 表。給定一個狀態和動作,**我們的 Q 函式將在其 Q 表中搜索並輸出價值。**

Q-function

如果我們回顧一下,*Q-Learning*是**以下強化學習演算法:**

  • 訓練一個 *Q 函式*(一個**動作價值函式**),它在內部是一個**包含所有狀態-動作對價值的 Q 表。**
  • 給定一個狀態和動作,我們的 Q 函式**將搜尋其 Q 表以獲取相應的值。**
  • 當訓練完成時,**我們擁有一個最優的 Q 函式,這意味著我們擁有最優的 Q 表。**
  • 如果我們**擁有一個最優的 Q 函式**,我們就**擁有一個最優策略**,因為我們**知道在每個狀態下要採取的最佳行動。**
Link value policy

一開始,**我們的 Q 表是無用的,因為它為每個狀態-動作對提供了任意值**(大多數情況下,我們將 Q 表初始化為 0)。隨著智慧體**探索環境並我們更新 Q 表,它將為我們提供越來越好的最優策略近似。**

Q-learning
我們在這裡看到,透過訓練,我們的 Q 表變得更好了,因為有了它,我們就可以知道每個狀態-動作對的價值。

現在我們理解了 Q-Learning、Q 函式和 Q 表是什麼,**讓我們深入瞭解 Q-Learning 演算法**。

Q-Learning 演算法

這是 Q-Learning 虛擬碼;讓我們研究每個部分,並**透過一個簡單的例子來了解它是如何工作的,然後再實現它。**不要被它嚇到,它看起來比實際簡單!我們將逐步介紹每個步驟。

Q-learning

步驟 1:初始化 Q 表

Q-learning

我們需要為每個狀態-動作對初始化 Q 表。**大多數情況下,我們將其初始化為 0。**

步驟 2:使用 epsilon-greedy 策略選擇一個動作

Q-learning

epsilon-greedy 策略是一種處理探索/利用權衡的策略。

其思想是,初始 ɛ 值為 1.0 時:

  • 以 *1 - ɛ 的機率*:我們進行**利用**(即我們的智慧體選擇具有最高狀態-動作對值的動作)。
  • 以 ɛ 的機率:**我們進行探索**(嘗試隨機動作)。

在訓練開始時,**進行探索的機率會非常大,因為 ɛ 值非常高,所以大部分時間我們都會進行探索。**但隨著訓練的進行,我們的**Q 表在估計方面會越來越好,我們逐漸降低 epsilon 值**,因為我們需要的探索越來越少,而利用越來越多。

Q-learning

步驟 3:執行動作 At,獲取獎勵 Rt+1 和下一個狀態 St+1

Q-learning

步驟 4:更新 Q(St, At)

請記住,在 TD 學習中,我們會在**一次互動步驟後更新我們的策略或價值函式**(取決於我們選擇的強化學習方法)。

為了生成我們的 TD 目標,**我們使用了即時獎勵Rt+1R_{t+1} 加上下一個狀態的折扣價值**,透過找到使當前 Q 函式在下一個狀態下最大化的動作來計算。(我們稱之為引導)。

Q-learning

因此,我們的Q(St,At)Q(S_t, A_t) 更新公式如下:

Q-learning

這意味著要更新我們的Q(St,At)Q(S_t, A_t):

  • 我們需要St,At,Rt+1,St+1S_t, A_t, R_{t+1}, S_{t+1}.
  • 為了更新給定狀態-動作對的 Q 值,我們使用 TD 目標。

我們如何形成 TD 目標?

  1. 我們獲得獎勵Rt+1R_{t+1}採取行動後AtA_t.
  2. 為了獲得下一個狀態的**最佳狀態-動作對值**,我們使用貪婪策略選擇下一個最佳動作。請注意,這不是 epsilon-greedy 策略,它將始終選擇具有最高狀態-動作值的動作。

然後,當 Q 值更新完成後,我們進入一個新狀態,並**再次使用 epsilon-greedy 策略**選擇我們的動作。

這就是我們說 Q 學習是異策略演算法的原因。

異策略與同策略

區別微妙。

  • *異策略*:使用**不同的策略進行行動(推斷)和更新(訓練)。**

例如,在 Q-Learning 中,epsilon-greedy 策略(行動策略)與用於**選擇最佳下一個狀態-動作值以更新我們的 Q 值(更新策略)的貪婪策略**不同。

Off-on policy
行動策略

與我們在訓練部分使用的策略不同

Off-on policy
更新策略
  • *同策略*:使用**相同的策略進行行動和更新。**

例如,對於 Sarsa(另一種基於價值的演算法),**epsilon-greedy 策略選擇下一個狀態-動作對,而不是貪婪策略。**

Off-on policy
Sarsa
Off-on policy
< > 在 GitHub 上更新

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