Q-learning 算法

Q-learning 是一個經(jīng)典的強化學(xué)習算法。

為了便于描述,這里依然定義一個“世界”:


image

令空白格子的獎勵為1.

Q-Table

Q-table 是 Q-learning 的核心。它是一個表格,記錄了每個狀態(tài)下采取不同動作,所獲取的最大長期獎勵期望。通過此,就可以知道每一步的最佳動作是什么。

Q-table 的每一列代表一個動作,每一行表示一個狀態(tài)。則每個格子的值就是此狀態(tài)下采取此動作獲得的最大長期獎勵期望。例如:

U↑ D↓ L← R→
START ? 0 0 ?
(2,1) 0 0 ? ?
(1,2) ? ? 0 0

上表表示,對于狀態(tài) STRAT 向下或左的獎勵期望是0(因為無法移動),其余兩個方向由于未探索,所以獎勵未知。狀態(tài)(2,1)和狀態(tài)(1,2)同理。

如果能求出整個表的所有值,那么這個問題就解決了。為了做到這一點,需要使用 Q-learning 算法。

Q-learning 算法

算法流程可以表述為:

  1. 初始化 Q-table.
  2. 選擇一個動作 A.
  3. 執(zhí)行動作 A.
  4. 獲得獎勵。
  5. 更新 Q. 并循環(huán)執(zhí)行步驟2.

在這個流程中有兩個地方需要注意。

如何選取動作

在一開始,表格中值都為0,自然地我們會想到隨機選取一個動作。但隨著迭代的進行,若一直隨機選擇,就相當于沒有利用已經(jīng)學(xué)習到的東西。為了解決這個問題,可能會想到除第一次外,均采取當前Q值最大的動作。但這樣又可能陷入局部最優(yōu)解,因為可能還有更好的動作沒有被發(fā)現(xiàn)。

這其實是如何平衡「探索」與「利用」的問題。

于是可以采用一種叫做 ε-greedy 的策略。

ε-greedy 策略的本質(zhì)就是:每次有ε概率進行探索,有(1-ε)的概率利用已學(xué)習的數(shù)據(jù)。探索意味著隨機選取一個動作,利用意味著采取當前Q值最高的動作。

除了 ε-greedy ,還有一些效果更好的方法,但是復(fù)雜很多。

一開始往往設(shè)定一個較高的 ε(比如1),因為我們對環(huán)境一無所知,只能隨機選擇。隨著迭代,可以逐步降低 ε,因為我們已經(jīng)越來越準確地了解了環(huán)境。如下圖所示:


image

如何更新 Q

Q(s,a) \leftarrow (1-\alpha)Q(s,a)+\alpha \left [ R(s,a)+\gamma \max_{a'}Q(s',a')-Q(s,a) \right ]
這就是更新 Q 的函數(shù),其中 α 為學(xué)習速率。顯然,α 越大,保留之前學(xué)習的結(jié)果越少。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容