深度強化學習課程文件
一個 Q-Learning 示例
加入 Hugging Face 社群
並獲得增強的文件體驗
開始使用
一個 Q-Learning 示例
為了更好地理解 Q-Learning,我們來舉一個簡單的例子
- 你是一隻小迷宮裡的老鼠。你總是從同一個起點開始。
- 目標是吃到右下角的那一大堆乳酪並避開毒藥。畢竟,誰不喜歡乳酪呢?
- 如果我們吃到毒藥、吃到那一大堆乳酪,或者走的步數超過五步,本回合就結束。
- 學習率為 0.1
- 折扣率(gamma)為 0.99
獎勵函式如下:
- +0: 進入沒有乳酪的狀態。
- +1: 進入有小塊乳酪的狀態。
- +10: 進入有大塊乳酪的狀態。
- -10: 進入有毒藥的狀態,因此死亡。
- +0 如果我們走了超過五步。
為了訓練我們的代理有一個最優策略(即一個向右、向右、向下的策略),我們將使用 Q-Learning 演算法。
第 1 步:初始化 Q 表
所以,目前,我們的 Q 表是無用的;我們需要使用 Q-Learning 演算法來訓練我們的 Q 函式。
我們進行 2 個訓練時間步
訓練時間步 1
第 2 步:使用 Epsilon Greedy 策略選擇一個動作
因為 epsilon 很大(= 1.0),我採取一個隨機動作。在這種情況下,我向右走。
第 3 步:執行動作 At,得到 Rt+1 和 St+1
向右走,我得到一小塊乳酪,所以然後我進入了一個新狀態。
第 4 步:更新 Q(St, At)
我們現在可以更新使用我們的公式。
訓練時間步 2
第 2 步:使用 Epsilon Greedy 策略選擇一個動作
我再次採取了一個隨機動作,因為 epsilon=0.99 很大。(注意,我們稍微衰減了 epsilon,因為隨著訓練的進行,我們希望探索越來越少)。
我選擇了動作“向下”。這不是一個好的動作,因為它把我引向了毒藥。
第 3 步:執行動作 At,得到 Rt+1 和 St+1
因為我吃了毒藥,所以我得到,並且我死了。
第 4 步:更新 Q(St, At)
因為我們死了,我們開始一個新回合。但我們在這裡看到的是,透過兩個探索步驟,我的代理變得更聰明瞭。
隨著我們繼續探索和利用環境,並使用 TD 目標更新 Q 值,Q 表將為我們提供越來越好的近似。在訓練結束時,我們將得到最優 Q 函式的估計。
< > 在 GitHub 上更新