我們在之前接觸過了監督學習和無監督學習,強化學習可以看作是不同於二者的另一類演算法,強化學習讓計算機從什麼都不懂的時刻開始,通過不斷地嘗試,從錯誤中學習,找到一種規律,能夠掌握達到目的的方法。
強化學習的思想就類似於我們去訓練乙隻狗,一開始它聽不懂任何我們下達的指示,但是我們可以在每次說出指令並且它做出正確動作的時候,都給它一定的獎勵,否則沒有獎勵,讓它知道對錯,最終每次都能夠直接作出可以得到獎勵的動作(正確的反應)。
與訓練動物不同的是,我們所要訓練的是計算機並不是乙個活體,但是我們要知道電腦也是「腦」我們總會有方法來找到訓練計算機的方式。
根據我們上面的介紹,很容易可以知道強化學習的核心就在於通過「行為」得到「獎勵」,所以我們需要乙個裁判,對計算機的行為進行打分。
這裡與之前我們了解到的監督學習不同之處在於,監督學習中,我們事先知道「行為」以及對應的「獎勵」是什麼,但是強化學習中,要通過一次次在環境中的嘗試, 獲取這些「行為」和「獎勵」, 然後再學習通過哪些「行為」能夠對應哪些「獎勵」, 通過學習到的這些規律,盡可能地選擇帶來高分的「行為」。
q-learning的決策
q-learning是一種通過**來學習的強化學習演算法
先舉乙個小例子:
假設小明處於寫作業的狀態,並且曾經沒有過沒寫完作業就打遊戲的情況。現在小明有兩個選擇(1、繼續寫作業,2、打遊戲),由於之前沒有嘗試過沒寫完作業就打遊戲的後果,所以小明選擇打遊戲、繼續打遊戲、接著打遊戲。最終當父母回來發現小明沒有寫完作業就在打遊戲,小明獲得了一次接受男女混合雙打的獎勵。這給小明留下了深刻的印象,也明白了這不是乙個好的做法。對於這個小的例子,我們的q-learning會怎麼做呢?
首先我們定義兩個內容:當前的狀態s,可以進行的行為a,則有如下的表示形式: a1
a2s1-22
很顯然對於狀態s1小明應該選擇a2作為要選擇的行為,然後狀態更新為s2。 a1
a2s2-43
接著還會有狀態s3、s4等等,每次我們都重複上面的過程,這就是q-learning演算法的決策過程。
q-learning的更新
q-learning的更新策略使用了貝爾曼方程(也叫動態規劃方程)作為方法來進行演算法的更新,下面來了解一下貝爾曼方程:
q (s
t,at
)←q(
st,a
t)+α
[rt+
1+λm
axaq
(st+
1,a)
−q(s
t,at
)]q(s_t,a_t)\leftarrow q(s_t,a_t)+\alpha[r_+\lambda \undersetq(s_,a)-q(s_t,a_t)]
q(st,
at)
←q(s
t,a
t)+
α[rt
+1+
λamax
q(s
t+1
,a)−
q(st
,at
)]
式子中的各項意義如下:
我們換一種更通俗的方式來理解一下這個方程:
新 q(
st,a
t)=舊
q(st
,at)
+α∗差
距新q(s_t,a_t)=舊q(s_t,a_t)+\alpha*差距
新q(st
,at
)=舊q
(st
,at
)+α∗
差距這裡:差距=現實-估計
現實:r+λ
maxa
q(st
+1)r+\lambda \undersetq(s_)
r+λamax
q(s
t+1
) 估計:q(s
t,at
)q(s_t,a_t)
q(st,
at)
每次我們就是通過這樣的方式來對q-learning演算法中的q表來進行更新。
q-learning演算法步驟
初始化q table為0
每一次遍歷,隨機選擇乙個狀態作為起點
在當前狀態 (s) 的所有可選的行動中選擇乙個 (a)
移動到下乙個狀態 (s』)
在新狀態上選擇 q 值最大的那個行動 (a』)
用 bellman equation 更新 q-table
將新狀態設定為當前狀態重複第 2~6 步
如果已經到了目標狀態就結束
強化學習之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 帶到網格的乙個新的單元格,即新的狀態,在迷宮...