上一節中我們介紹了解決問題的動態規劃演算法和蒙特卡洛方法,以及rl的一些需要注意的問題,從這一節開始,我們開始對強化學習的每乙個類族進行比較詳細的介紹。由於本系列的主旨在於「淺淺地談」,因此需要參考原理和公式推導的小夥伴們可以參看別的文獻。本人知識有限,因此博文中難免出現失誤,希望有小夥伴可以指出並不吝賜教。
有很多小夥伴可能會感到疑惑:既然演算法是model-free的,就意味著我們在構建策略選取方案是不依靠乙個能夠準確表達出來的類似於f(x)的模型的,那我們究竟是根據什麼進行action選擇的呢?實際上,這裡的model-free指的是我們不會對環境進行建模。舉個例子,我們在對無人小車進行rl過程時,實際上我們會得到乙個model,但是這個model不會包含關於env的任何資訊(例如model中不會對某處有沒有轉角,或者這條直線路會有多長進行反映)。這個model我們一般稱為策略,一般用π(s,a)表示。策略反映的是agent對於經驗的學習成果。再舉個簡單的例子,同樣是前面遇到了障礙,model告訴小車的是「我看到了前面有障礙所以我要轉彎」,而策略告訴小車的是「我之前碰到過前面有障礙的情況,當時我轉彎了,所以現在我也要轉彎」。(這裡說的可能有點囉嗦,也不知道有沒有說清楚。。。個中意思請大家自己體會一下)。
說了這麼多,下面正式進入演算法介紹。model-free演算法族包括了最經典的q-learning,q-learning的改進版sarsa和dl與rl結合的deep q network(dqn)。接下來我將乙個乙個地進行介紹。
重要的事情說三遍
下面沒有公式和原理推導!
下面沒有公式和原理推導!
下面沒有公式和原理推導!
q-learning通過構造q表來對獲得的經驗進行表述。這個q表的具體含義表述為乙個概率-行為轉移矩陣。簡單來說,如果我們以states作為row index,actions作為column index,那麼我們可以獲得乙個二維的矩陣,這個矩陣裡的值代表在當前的st上,agent能夠以多大的概率採取ak而轉移到st+1上。在初始化構建這個q表的時候可以採用random的方式,然後,在每一次選取action時,用bellman公式來對當前的概率矩陣裡的值進行更新(對bellman公式不太清楚的小夥伴可以移步這裡貝爾曼方程詳解)。要注意,這裡對action的選取並不是完全根據這裡每乙個st的概率進行選取的,也就是說,我們並不是直接選取概率大的action,而是通過前面談過的ε-greedy策略,以一定的ε根據概率轉移矩陣選取action,另外1-ε概率進行的是隨機遊走的策略進行選action的動作。在進行了有限個epoch之後,我們可以得到乙個不再具有超越閾值變化的q表,這時我們的訓練過程就可以結束了。
回想一下我們的訓練過程,存在下面幾個問題:
1.q表的初始值會對最後結果產生影響嗎?舉乙個最簡單的ml的例子,在進行梯度下降的過程中,我們通常通過尋找在當前點上具有最大梯度的方向進行引數更新。但是,如果我們選擇的初始點並不處在全域性最優點附近,那麼在更新時可能會陷入區域性最優不能自拔。對應到q表中,就會產生agent不能對全域性的經驗作出反應,陷入到乙個區域性最安全的策略當中。解決這個問題的乙個比較直觀的嘗試是對於q表中的所有概率進行平均初始化,即在某個st上,所有的ak能夠享受到相同的選取概率,這樣相當於平滑了概率曲線,使得在更新的過程中所有的action能夠享受到均等的機會被更新。但是這樣做又會有什麼問題呢?留個懸念,請大家思考一下~
淺淺地談 強化學習的爬行之旅(一)
入坑強化學習有一段時間了,對於強化學習的學習理念以及思想也有了一定程度的了解。強化學習的突然火爆源於幾年 之前的alpha go戰勝南韓某位圍棋高手事件 名字不說,都懂 能夠進行自我學習自我更新,且不受情緒影響,擁有智 能決策的人工智慧體已經開始影響生活的方方面面,而這種特性的起源正是基於一種能夠進...
強化學習的資料
隨著deepmind和alphago的成功,強化學習 reinforcement learning 日益受到關注。然而,在一些機器學習入門課程中,並沒有專題討論強化學習。希望這個問題能夠成為知乎上對於強化學習嚴肅討論的乙個起點。也非常希望強化學習方面的研究者分享一下這個領域的研究現狀和展望。以下為一...
強化學習的DDPG
鏈結 處理連續動作空間下,引數過多,運算過於複雜的問題。想象一下,乙個機械人每個時間步有7個動作,如腿 胳膊等各個關節。你可以調整的是每個部位對應電機的電壓。先簡單看作每個動作有3個動作狀態,那麼每個時間步就對應有37 2187 3 7 2187 37 218 7個動作空間。如果將k這個數字更細粒度...