深度強化學習課程文件
Q-Learning 簡介
並獲得增強的文件體驗
開始使用
Q-Learning 簡介
什麼是 Q-Learning?
Q-Learning 是一種**異策略(off-policy)的基於價值的方法,它使用 TD 方法來訓練其動作價值函式:**
- *異策略*:我們將在本單元末尾討論這個問題。
- *基於價值的方法*:透過訓練一個價值函式或動作價值函式來間接找到最優策略,該函式將告訴我們**每個狀態或每個狀態-動作對的價值。**
- *TD 方法*:**在每一步而不是在劇集結束時更新其動作價值函式。**
**Q-Learning 是我們用來訓練 Q 函式的演算法**,它是一個**動作價值函式**,用於確定處於特定狀態並在該狀態下采取特定動作的價值。
**Q 來自於該狀態下該動作的“質量”(價值)。**
讓我們回顧一下價值和獎勵之間的區別
- 一個*狀態*或一個*狀態-動作對的價值*是智慧體如果從該狀態(或狀態-動作對)開始並按照其策略行動所獲得的預期累積獎勵。
- *獎勵*是智慧體在某個狀態下執行某個動作後**從環境中獲得的反饋**。
在內部,我們的 Q 函式由**一個 Q 表編碼,這是一個表格,其中每個單元格對應一個狀態-動作對的價值。**可以將此 Q 表視為我們 Q 函式的**記憶或備忘錄。**
讓我們透過一個迷宮的例子。
Q 表被初始化。這就是為什麼所有值都為 0。該表格**包含每個狀態和動作對應的狀態-動作值。**對於這個簡單的例子,狀態僅由老鼠的位置定義。因此,我們的 Q 表有 2*3 行,每行對應老鼠的一個可能位置。在更復雜的場景中,狀態可能包含比行動者位置更多的資訊。
在這裡我們看到**初始狀態並向上移動的狀態-動作價值為 0:**
所以:Q 函式使用一個**包含每個狀態-動作對價值**的 Q 表。給定一個狀態和動作,**我們的 Q 函式將在其 Q 表中搜索並輸出價值。**

如果我們回顧一下,*Q-Learning*是**以下強化學習演算法:**
- 訓練一個 *Q 函式*(一個**動作價值函式**),它在內部是一個**包含所有狀態-動作對價值的 Q 表。**
- 給定一個狀態和動作,我們的 Q 函式**將搜尋其 Q 表以獲取相應的值。**
- 當訓練完成時,**我們擁有一個最優的 Q 函式,這意味著我們擁有最優的 Q 表。**
- 如果我們**擁有一個最優的 Q 函式**,我們就**擁有一個最優策略**,因為我們**知道在每個狀態下要採取的最佳行動。**
一開始,**我們的 Q 表是無用的,因為它為每個狀態-動作對提供了任意值**(大多數情況下,我們將 Q 表初始化為 0)。隨著智慧體**探索環境並我們更新 Q 表,它將為我們提供越來越好的最優策略近似。**
現在我們理解了 Q-Learning、Q 函式和 Q 表是什麼,**讓我們深入瞭解 Q-Learning 演算法**。
Q-Learning 演算法
這是 Q-Learning 虛擬碼;讓我們研究每個部分,並**透過一個簡單的例子來了解它是如何工作的,然後再實現它。**不要被它嚇到,它看起來比實際簡單!我們將逐步介紹每個步驟。
步驟 1:初始化 Q 表
我們需要為每個狀態-動作對初始化 Q 表。**大多數情況下,我們將其初始化為 0。**
步驟 2:使用 epsilon-greedy 策略選擇一個動作
epsilon-greedy 策略是一種處理探索/利用權衡的策略。
其思想是,初始 ɛ 值為 1.0 時:
- 以 *1 - ɛ 的機率*:我們進行**利用**(即我們的智慧體選擇具有最高狀態-動作對值的動作)。
- 以 ɛ 的機率:**我們進行探索**(嘗試隨機動作)。
在訓練開始時,**進行探索的機率會非常大,因為 ɛ 值非常高,所以大部分時間我們都會進行探索。**但隨著訓練的進行,我們的**Q 表在估計方面會越來越好,我們逐漸降低 epsilon 值**,因為我們需要的探索越來越少,而利用越來越多。
步驟 3:執行動作 At,獲取獎勵 Rt+1 和下一個狀態 St+1
步驟 4:更新 Q(St, At)
請記住,在 TD 學習中,我們會在**一次互動步驟後更新我們的策略或價值函式**(取決於我們選擇的強化學習方法)。
為了生成我們的 TD 目標,**我們使用了即時獎勵 加上下一個狀態的折扣價值**,透過找到使當前 Q 函式在下一個狀態下最大化的動作來計算。(我們稱之為引導)。
因此,我們的 更新公式如下:
這意味著要更新我們的:
- 我們需要.
- 為了更新給定狀態-動作對的 Q 值,我們使用 TD 目標。
我們如何形成 TD 目標?
- 我們獲得獎勵採取行動後.
- 為了獲得下一個狀態的**最佳狀態-動作對值**,我們使用貪婪策略選擇下一個最佳動作。請注意,這不是 epsilon-greedy 策略,它將始終選擇具有最高狀態-動作值的動作。
然後,當 Q 值更新完成後,我們進入一個新狀態,並**再次使用 epsilon-greedy 策略**選擇我們的動作。
這就是我們說 Q 學習是異策略演算法的原因。
異策略與同策略
區別微妙。
- *異策略*:使用**不同的策略進行行動(推斷)和更新(訓練)。**
例如,在 Q-Learning 中,epsilon-greedy 策略(行動策略)與用於**選擇最佳下一個狀態-動作值以更新我們的 Q 值(更新策略)的貪婪策略**不同。
與我們在訓練部分使用的策略不同
- *同策略*:使用**相同的策略進行行動和更新。**
例如,對於 Sarsa(另一種基於價值的演算法),**epsilon-greedy 策略選擇下一個狀態-動作對,而不是貪婪策略。**
