我們以乙個迷宮尋寶的遊戲為例來看什麼是 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更新函式 是學習速率 是折扣...