Q-Learning詳解

前言:
本文算是個人筆記,如有不足或需要討論的,歡迎交流,郵箱即QQ。
有大佬知道如何搭網絡的(如多少層和每層多少個神經元等參數怎么調),求請教。。

照例頂封面:


new2.jpg

強化學習簡介:
image.png

Q-Learning是強化學習方法的一種。要使用這種方法必須了解Q-table(Q表)。
Q表是 狀態-動作 與 估計的未來獎勵 之間的映射表,如下圖所示。(誰會做個好圖的求教=-=)


image.png

縱坐標為狀態,橫坐標為動作,值為估計的未來獎勵。
每次處于某一確定狀態的時候,從表中查找此狀態下最高未來獎勵值的動作作為接下來的動作,若存在多個相同的值,則隨機選擇其中一個。一直重復,直到終點。

Q表的作用可看出是至關重要的。那么關鍵就在于如何獲取一個可用的Q表。一般來說,我們的RL任務的模型都是未知的,不可以采用動態規劃的方法。兩種基本方法--蒙特卡洛(MC)和時間差分法(TD)。

蒙特卡洛(MC):
找了許多資料都沒找到使用這方法的代碼,所以只能從其定義出發說明是如何工作的。(有錯誤請指正)

  • 1:隨機選取一個狀態S開始游戲
  • 2:直到游戲終或者行動步數到達最大時,將獲得的未來獎勵(以目前表以及游戲每個狀態本身的反饋獎勵獲得)。
  • 3:重復2步驟N次,所獲得獎勵的平均值為目前此狀態S的新的未來獎勵值(注意,可以使用目前平均值為新的值,直接覆蓋舊的值。也可以新值與舊值加權求合)。對于(s,a)的未來獎勵同理。
  • 4:重復1步驟,但要求每個狀態s都能夠被選到。
    很明顯這要的時間相當多,所以這也應該是沒人用他寫代碼的原因吧。

時間差分法(TD):
這個能做到每一步都更新一次,同時可以異步跟新(不用每次都要求所有狀態更新一次來輪轉,選到誰就更新誰,所以也要求每個狀態都能夠選到)。一般說的TD都指的是TD(0) (ps:為啥不叫TD(1)啊),即每次只往后看一步,這是什么意思呢,看了接下來的流程估計就懂了。(使用的都是(s,a)值)

  • 1:隨機選取一個狀態S開始游戲
  • 2:此s狀態下選取a(根據貪婪 或者 ε-貪婪),并在動作a的狀態下獲得s‘,即下一狀態。
  • 3:使用s狀態下的反饋獎勵以及s’的未來獎勵更新s的未來獎勵。(一般這兩者與目前s狀態的未來獎勵加權求和)(ps: 這里就是sarsar與Qlearning的區別,s'是指s中通過策略抵達的下一狀態,但此狀態下也有許多的(s,a)值,該以哪個來更新呢?Qlearning中,選取最大的(s,a)為更新值。sarsar中,對所有(s,a)值求平均,作為更新值。這也是所謂的Qlearning高風險高收益,sarsar比較保守的原因。)
  • 4:重復1步驟,(但要求每個狀態s都能夠被選到。)
#Initialize table with all zeros
Q = np.zeros([env.observation_space.n,env.action_space.n])
# Set learning parameters
lr = .8
y = .95
num_episodes = 2000
#create lists to contain total rewards and steps per episode
#jList = []
rList = []
for i in range(num_episodes):
    #Reset environment and get first new observation
    s = env.reset()
    rAll = 0
    d = False
    j = 0
    #The Q-Table learning algorithm
    while j < 99:
        j+=1
        #Choose an action by greedily (with noise) picking from Q table
        a = np.argmax(Q[s,:] + np.random.randn(1,env.action_space.n)*(1./(i+1)))
        #Get new state and reward from environment
        s1,r,d,_ = env.step(a)
        #Update Q-Table with new knowledge
        Q[s,a] = Q[s,a] + lr*(r + y*np.max(Q[s1,:]) - Q[s,a])
        rAll += r
        s = s1
        if d == True:
            break
    #jList.append(j)
    rList.append(rAll)

這是網上找到的一個代碼,每個episode運行99次動作,s最開始都是同一個地方,在這99次動作中,每次s產生的下個s1狀態作為下一次的s,然后每次進行TD(0)更新。
注意,這里所用的是上面提到的TD(0),若想要TD(n) ,n>1,
(以上面代碼為例)

  • 則應該在每次j下,還要添加n次循環,
  • n次循環的每一次都要用Q表選擇a然后獲得s‘,對每次獲得的(s,a)加權求合,然后以此加權值更新當前的(s,a)。
  • 當然下一狀態應該是第一次選a時所獲得的狀態s’。
    如果還是不懂的話,建議參考David Silver關于TD的那節(沒記錯的話是第五節的課)。或者是看An Introduction to RL - SuttonBook這本書中關于TD的部分。

目前為止,Qlearning所要講的都講完了,應該沒有落下的。接下來就是DQN,將DQN必須要理解Qlearning以及神經網絡的一些基本原理。

如果對你有幫助,請點個感謝,如果有問題,請私信。
照常:


微信圖片_20190513121459.jpg
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,024評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,285評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,548評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,328評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,878評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,098評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,616評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,554評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,725評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,971評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,361評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,613評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,339評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,695評論 2 370