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 帶到網格的乙個新的單元格,即新的狀態,在迷宮...