強化學習基本介紹
強化學習是一種不同於監督學習和無監督學習的在線學習技術,基本模型圖一所示。它把學習看作是一個“試探一評價”的過程,首先學習系統稱為智能體感知環境狀態,采取某一個動作作用於環境,環境接受該動作后狀態發生變化,同時給出一個回報獎勵或懲罰反饋給強化學習系統,強化學系統根據強化信號和環境的當前狀態再選擇下一個動作,選擇的原則是使受到再勵的概率增大。
智能體在和環境交互時,在每一時刻會發生如下事件序列
1)智能體感知t時刻的環境狀態s(t)
2)針對當前的狀態和即時回報r(t),智能體選擇一執行動作a(t)。
3)當智能體所選擇的動作作用於環境時,環境發生變化
環境狀態轉移至下一新的狀態s(t+1)
給出即時回報r(t),又稱為獎賞回報
4)即時回報r(t)反饋給智能體,t<-t+1,。
5)轉向第2步,如果新的狀態為結束狀態,則停止循環。
其中即時回報r(t),由環境狀態s(t)與智能體的輸出a(t)決定。a∈A,A為一組動作集。
基本知識
1.評價函數
智能體的學習目標是最大化未來回報的累積值。評價函數,是對長期回報的一種量度,有三種返回表達式。
1)有限范圍模型它是在有限的階段內對回報的累積。為采樣時刻,為智能體從時刻起到結束運行的總步數,可以不預先確定
2)折扣回報無限范圍模型它是在無限的階段內對回報的累積。
γ是折扣因子,通常0≤γ<1。通過調節,可以控制學習系統對它自己行動的短期和長期結果考慮的程度。在極端情況,當γ=0時系統是短視的,它只考慮行動的當前結果。當γ接近1時,未來的回報在采取最優行動時變得更為重要.
3)平均回報模型一采用第三種標准,累計未來回報的平均值,標准為
上面三種回報表達式,使用最多的是折扣回報指標。
馬爾可夫決策過程(MDP)
大家應該還記得馬爾科夫鏈(Markov Chain),了解機器學習的也都知道隱馬爾可夫模型(Hidden Markov Model,HMM)。它們具有的一個共同性質就是馬爾可夫性(無后效性),也就是指系統的下個狀態只與當前狀態信息有關,而與更早之前的狀態無關。
馬爾可夫決策過程(Markov Decision Process, MDP)也具有馬爾可夫性,與上面不同的是MDP考慮了動作,即系統下個狀態不僅和當前的狀態有關,也和當前采取的動作有關。還是舉下棋的例子,當我們在某個局面(狀態s)走了一步(動作a),這時對手的選擇(導致下個狀態s’)我們是不能確定的,但是他的選擇只和s和a有關,而不用考慮更早之前的狀態和動作,即s’是根據s和a隨機生成的。
我們用一個二維表格表示一下,各種馬爾可夫子模型的關系就很清楚了:
一個馬爾可夫決策過程由一個四元組構成M = (S, A, Psa, )
- S: 表示狀態集(states),有s∈S,si表示第i步的狀態。
- A:表示一組動作(actions),有a∈A,ai表示第i步的動作。
- sa: 表示狀態轉移概率。s 表示的是在當前s ∈ S狀態下,經過a ∈ A作用后,會轉移到的其他狀態的概率分布情況。比如,在狀態s下執行動作a,轉移到s'的概率可以表示為p(s'|s,a)。
- R: S×A⟼ℝ ,R是回報函數(reward function)。有些回報函數狀態S的函數,可以簡化為R: S⟼ℝ。如果一組(s,a)轉移到了下個狀態s',那么回報函數可記為r(s'|s, a)。如果(s,a)對應的下個狀態s'是唯一的,那么回報函數也可以記為r(s,a)。
MDP 的動態過程如下:某個智能體(agent)的初始狀態為s0,然后從 A 中挑選一個動作a0執行,執行后,agent 按Psa概率隨機轉移到了下一個s1狀態,s1∈ Ps0a0。然后再執行一個動作a1,就轉移到了s2,接下來再執行a2…,我們可以用下面的圖表示狀態轉移的過程。
如果回報r是根據狀態s和動作a得到的,則MDP還可以表示成下圖:
馬爾科夫決策問題的目的是尋求一個最優策略,即使評價函數最大化的一系列動作。對於每一時刻的狀態s(t),智能體均會通過最優策略π選取適當的動作。
而增強學習的目的就是求解馬爾可夫決策過程(MDP)的最優策略。
那么如何求解最優策略呢?基本的解法有三種:
1.動態規划法(dynamic programming methods)
2.蒙特卡羅方法(Monte Carlo methods)
3.時間差分法(temporal difference)。
動態規划法是其中最基本的算法。
Q-learning基本介紹
Q一學習是強化學習的主要算法之一,是一種無模型的學習方法,它提供智能系統在馬爾可夫環境中利用經歷的動作序列選擇最優動作的一種學習能力。Q-學習基於的一個關鍵假設是智能體和環境的交互可看作為一個Markov決策過程(MDP),即智能體當前所處的狀態和所選擇的動作,決定一個固定的狀態轉移概率分布、下一個狀態、並得到一個即時回報。Q-學習的目標是尋找一個策略可以最大化將來獲得的報酬。
Q-Learning是一項無模型的增強學習技術,它可以在MDP問題中尋找一個最優的動作選擇策略。它通過一個動作-價值函數來進行學習,並且最終能夠根據當前狀態及最優策略給出期望的動作。它的一個優點就是它不需要知道某個環境的模型也可以對動作進行期望值比較,這就是為什么它被稱作無模型的。
Q--learning中,每個Q(s,a)對應一個相應的Q值,在學習過程中根據Q值,選擇動作。Q值的定義是如果執行當前相關的動作並且按照某一個策略執行下去,將得到的回報的總和。最優Q值可表示為Q+,其定義是執行相關的動作並按照最優策略執行下去,將得到的回報的總和,其定義如下:
其中:s表示狀態集,A表示動作集,T(s,a,s’)表示在狀態s下執行動作a,轉換到狀態s’的概率,r(s,a)表示在狀態s下執行動作a將得到的回報,表示折扣因子,決定時間的遠近對回報的影響程度。
智能體的每一次學習過程可以看作是從一個隨機狀態開始,采用一個策略來選擇動作,如ε貪婪策略或Boltzamann分布策略。采用隨機策略是為了保證智能體能夠搜索所有可能的動作,對每個Q(s,a)進行更新。智能體在執行完所選的動作后,觀察新的狀態和回報,然后根據新狀態的最大Q值和回報來更新上一個狀態和動作的Q值。智能體將不斷根據新的狀態選擇動作,直至到達一個終止狀態。下面給出Q—learning算法的描述:
每次更新我們都用到了 Q 現實和 Q 估計, 而且 Q-learning 的迷人之處就是 在 Q(s1, a2) 現實 中, 也包含了一個 Q(s2) 的最大估計值, 將對下一步的衰減的最大估計和當前所得到的獎勵當成這一步的現實, 很奇妙吧. 最后我們來說說這套算法中一些參數的意義. ε greedy 是用在決策上的一種策略, 比如 ε= 0.9 時, 就說明有90% 的情況我會按照 Q 表的最優值選擇行為, 10% 的時間使用隨機選行為. α是學習率, 來決定這次的誤差有多少是要被學習的, α是一個小於1 的數. γ是對未來 reward 的衰減值. 我們可以這樣想象.
Q-learning 是一個 off-policy 的算法, 因為里面的 max action 讓 Q table 的更新可以不基於正在經歷的經驗(可以是現在學習着很久以前的經驗,甚至是學習他人的經驗).
On-policy 與 off-policy 本質區別在於:更新Q值時所使用的方法是沿用既定的策略(on-policy)還是使用新策略(off-policy)
以后要講的Sarsa算法是on-policy的。也就是說,Sarsa算法在更新Q表的時候所遵循的策略與當前策略一致。
實例:(Flappy Bird Q-learning)
問題分析
讓小鳥學習怎么飛是一個強化學習(reinforcement learning)的過程,強化學習中有狀態(state)、動作(action)、獎賞(reward)這三個要素。智能體(Agent,在這里就是指我們聰明的小鳥)需要根據當前狀態來采取動作,獲得相應的獎賞之后,再去改進這些動作,使得下次再到相同狀態時,智能體能做出更優的動作。
狀態的選擇 在這個問題中,狀態的提取方式可以有很多種:比如說取整個游戲畫面做圖像處理啊,或是根據小鳥的高度和管子的距離啊。在這里選用的是跟SarvagyaVaish項目相同的狀態提取方式,即取小鳥到下一根下側管子的水平距離和垂直距離差作為小鳥的狀態:
(圖片來自Flappy Bird RL by SarvagyaVaish)
記這個狀態為,
為水平距離,
為垂直距離。
動作的選擇 小鳥只有兩種動作可選:1.向上飛一下,2.什么都不做。
獎賞的選擇 這里采用的方式是:小鳥活着時,每一幀給予1的獎賞;若死亡,則給予-1000的獎賞;若成功經過一個水管,則給予50的獎賞。
關於Q
提到Q-learning,我們需要先了解Q的含義。
Q為動作效用函數(action-utility function),用於評價在特定狀態下采取某個動作的優劣,可以將之理解為智能體(Agent,我們聰明的小鳥)的大腦。我們可以把Q當做是一張表。表中的每一行是一個狀態,每一列(這個問題中共有兩列)表示一個動作(飛與不飛)。
例如:
這張表一共 行,表示
個狀態,每個狀態所對應的動作都有一個效用值。訓練之后的小鳥在某個位置處飛與不飛的決策就是通過這張表確定的。小鳥會先去根據當前所在位置查找到對應的行,然后再比較兩列的值(飛與不飛)的大小,選擇值較大的動作作為當前幀的動作。
訓練
那么這個Q是怎么訓練得來的呢,貼一段偽代碼。
Initialize Q arbitrarily //隨機初始化Q值 Repeat (for each episode): //每一次游戲,從小鳥出生到死亡是一個episode Initialize S //小鳥剛開始飛,S為初始位置的狀態 Repeat (for each step of episode): 根據當前Q和位置S,使用一種策略,得到動作A //這個策略可以是ε-greedy等 做了動作A,小鳥到達新的位置S',並獲得獎勵R //獎勵可以是1,50或者-1000 Q(S,A) ← (1-α)*Q(S,A) + α*[R + γ*maxQ(S',a)] //在Q中更新S S ← S' until S is terminal //即到小鳥死亡為止
其中有兩個值得注意的地方
1.“根據當前Q和位置S,使用一種策略,得到動作A,這個策略可以是ε-greedy等。”
這里便是題主所疑惑的問題,如何在探索與經驗之間平衡?假如我們的小鳥在訓練過程中,每次都采取當前狀態效用值最大的動作,那會不會有更好的選擇一直沒有被探索到?小鳥一直會被桎梏在以往的經驗之中。而假若小鳥在這里每次隨機選取一個動作,會不會因為探索了太多無用的狀態而導致收斂緩慢?
於是就有人提出了ε-greedy方法,即每個狀態有ε的概率進行探索(即隨機選取飛或不飛),而剩下的1-ε的概率則進行開發(選取當前狀態下效用值較大的那個動作)。ε一般取值較小,0.01即可。當然除了ε-greedy方法還有一些效果更好的方法,不過可能復雜很多。
以此也可以看出,Q-learning並非每次迭代都沿當前Q值最高的路徑前進。
2.
這個就是Q-learning的訓練公式了。其中α為學習速率(learning rate),γ為折扣因子(discount factor)。根據公式可以看出,學習速率α越大,保留之前訓練的效果就越少。折扣因子γ越大,所起到的作用就越大。但
指什么呢?
小鳥在對狀態進行更新時,會考慮到眼前利益(R),和記憶中的利益()。
指的便是記憶中的利益。它是指小鳥記憶里下一個狀態
的動作中效用值的最大值。如果小鳥之前在下一個狀態
的某個動作上吃過甜頭(選擇了某個動作之后獲得了50的獎賞),那么它就更希望提早地得知這個消息,以便下回在狀態
可以通過選擇正確的動作繼續進入這個吃甜頭的狀態
。
可以看出,γ越大,小鳥就會越重視以往經驗,越小,小鳥只重視眼前利益(R)。
根據上面的偽代碼,就可以寫出Q-learning的代碼了。
成果
訓練后的小鳥一直掛在那里可以飛到幾千分~
參考文獻:
https://www.cnblogs.com/jinxulin/p/3517377.html
http://blog.csdn.net/duanyajun987/article/details/78614902?locationNum=2&fps=1
https://zhuanlan.zhihu.com/p/24808797
https://www.zhihu.com/question/26408259/answer/123230350