強化學習 Q learning 及python實現

2022-05-26 20:12:10 字數 1707 閱讀 3081

q-learning是強化學習中一種經典的無監督學習方法,通過與環境互動來指導學習;

大部分強化學習都是基於馬爾科夫決策(mdp)的。mdp是乙個框架,而q學習是應用了這種框架的乙個具體的學習方法。

q學習的四要素:(agent,狀態 s,動作 a,獎勵 r)

簡而言之,agent從當前狀態選擇乙個動作,轉移至乙個新的狀態,這個過程會獲得乙個即時獎勵 r,agent再據此更新動作值函式q,並將q值儲存在q表中。

這裡關鍵的有乙個即時獎勵矩陣r,和乙個儲存動作值函式值的q表;兩個表都是二維,行表示狀態,列表示動作;

q學習中的q值更新函式(其實基於mdp中的值函式):

α:學習速率; γ:折扣因子 ,表示對未來獎勵的重視程度;

不過我個人而言,常用α=1的情況,因為α的值對於演算法對比和優化的效果差別不大(在迭代次數足夠多的情況下);

一下這個小例子用的是動態規劃的方法迭代計算q,因為模型已知;模型未知的情況常採用蒙特卡洛演算法 &時序差分演算法(td,常用)

簡單的乙個迷宮例子就是這個走迷宮了~從任意狀態開始,走到房間5就算成功了~

python實現q學習走迷宮:

1

#an example for maze using qlearning, two dimension

2import

numpy as np34

#reward matrix r

5 r = np.array([[-1, -1, -1, -1, 0, -1], [-1, -1, -1, 0, -1, 100],

6 [-1, -1, -1, 0, -1, -1], [-1, 0, 0, -1, 0, -1],

7 [0, -1, -1, 0, -1, 100], [-1, 0, -1, -1, 0, 100]])

89 q = np.zeros((6, 6), float)

10 gamma = 0.8 #

discount factor

1112 episode =0

13while episode < 1000:

14 state = np.random.randint(0, 6) #

from a random start state

15for action in range(6):

16if r[state, action] > -1:

17 q[state, action] = r[state, action] + gamma*max(q[action]) #

this time, action is the next state

18 episode = episode + 1

1920

print(q)

強化學習之Q learning

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

強化學習演算法 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演算法

我們以乙個迷宮尋寶的遊戲為例來看什麼是 q learning。在這個遊戲中,agent 從乙個給定的位置開始,即起始狀態。在不穿越迷宮牆壁的前提下,在每個狀態時,都可以選擇上下左右四個方向走一步,或者原地不動,上下左右這四個動作的每乙個都會將 agent 帶到網格的乙個新的單元格,即新的狀態,在迷宮...