強化學習 Q learning演算法

2021-10-04 11:11:35 字數 2699 閱讀 2799

我們以乙個迷宮尋寶的遊戲為例來看什麼是 q-learning。

在這個遊戲中,agent 從乙個給定的位置開始,即起始狀態

在不穿越迷宮牆壁的前提下,在每個狀態時,都可以選擇上下左右四個方向走一步,或者原地不動

上下左右這四個動作的每乙個都會將 agent 帶到網格的乙個新的單元格,即新的狀態

在迷宮中有乙個網格處有寶箱,這個網格就是目標狀態

此外,在某些網格處還有一些炸彈,

我們的目標是找到一條沒有炸彈的路徑,以最快的速度從起始狀態到達目標狀態。

這個迷宮就是 environment,

將 agent 放在裡面時,它首先需要探索,因為它不知道炸彈是什麼在**,也不知道寶藏是什麼在**,

我們通過給它 rewards 來告訴它炸彈和寶藏的概念,

遇到炸彈就 -10,

遇到寶藏就 +10,

為了讓 agent 找到最短路徑,我們可以給其他狀態的獎勵為 -1,

告訴 agent 它的目標是使獎勵最大化,

然後 agent 就可以開始探索了,過程中它會學習到炸彈是有害的,寶藏是好的,還能找到最短路徑。

q-learning 就是要學習在乙個給定的 state 時,採取了乙個特定的行動後,能得到的獎勵是什麼。

這時可以用乙個**來記錄每組 state 和 action 時的值,

這個表,首先被初始化為 0,

然後每走一步,都相應地更新**,

其中更新的方法是用bellman equation:

其中,s 代表當前的狀態,a 代表當前狀態所採取的行動,

s』 代表這個行動所引起的下乙個狀態,a』 是這個新狀態時採取的行動,

r 代表採取這個行動所得到的獎勵 reward,γ 是 discount 因子,

由公式可以看出 s,a 對的 q 值等於 即時獎勵 + 未來獎勵的 discount。

γ 決定了未來獎勵的重要性有多大,

比如說,我們到了乙個狀態,它雖然離目標狀態遠了一些,但是卻離炸彈遠了一些,那這個狀態的即時獎勵就很小,但是未來獎勵就很多。

演算法是:

初始化 q table 為 0

每一次遍歷,隨機選擇乙個狀態作為起點

在當前狀態 (s) 的所有可選的行動中選擇乙個 (a)

移動到下乙個狀態 (s』)

在新狀態上選擇 q 值最大的那個行動 (a』)

用 bellman equation 更新 q-table

將新狀態設定為當前狀態重複第 2~6 步

如果已經到了目標狀態就結束

下面來將上面的演算法實際計算一下:

用乙個最簡單的例子,兩行兩列,每個格仔代表乙個狀態,有乙個炸彈和寶藏,並設定 alpha = 1:

reward 表如下:

1. 初始的 q-table 的值全是 0

每一行代表乙個狀態,每一列代表每個狀態時可以有 5 種行動,上下左右和原地不動:

首先將 γ 設定為 0.8,

2. 例如我們從狀態 1 開始走,可以向下或者向右

3. 我們先選擇向下

4. 這時到達了狀態 3

5. 在狀態 3 可以向上, 或者向右

6. 用 bellman equation 更新 q-table:

q(1,d) = r(1,d) + γ * [ max( q(3,u) & q(3,r) ) ] = -10 + 0.8 * 0 = -10

r(1,d) = -10是從狀態 1 向下走到了炸彈處,

q(3,u) 和 q(3,r)都是 0,因為初始**都還是 0,

於是更新後的**變成了這樣:

7. 然後將狀態 3 變成當前狀態,

這時假設我們選擇向右,就走到了 4,

在 4 處可以選擇向上或者向左,

於是再根據公式計算 q 值:

q(3,r) = r(3,r) + 0.8 * [ max( q(4,u) & q(4,l) ) ] = 10 + 0.8 * 0 = 10

更新後的**為:

這時我們走到了 4 也就是目標狀態了,就可以結束這條路徑了。

強化學習演算法 Q learning

q learning 演算法的步驟 1 給定引數lamda和獎勵矩陣r 2 令q為0 3 for each episode 3.1 隨機選擇初始的狀態s 3.2 未達到目標狀態,則執行以下幾步 1 在當前狀態s的所有可能行為中選取乙個行為a 2 按照q s,a r s,a lamda max,其中s...

強化學習之Q learning演算法

以前在阿里雲上面搭了乙個wordpress部落格,最近快畢業了,阿里雲真的很貴,所以轉到csdn上寫部落格,主要是為了方便以後查詢。q learning演算法是強化學習的一種演算法,強化學習目前主要應用到遊戲中,主要是目的是訓練乙個知道怎麼做才能得到高分的model。強化學習的介紹很多,李巨集毅在上...

強化學習之Q learning

三要素 狀態 state 動作 action 獎賞 reward 更具具體情況自行進行給定。q更新公式 q是什麼?動作效用函式 action utility function 用於評價在某一狀態下採取某個動作的優劣。如果q訓練好了,之後 時就可以按照q進行選擇動作。詳解q更新函式 是學習速率 是折扣...