Machine Learning Algorithms Study Notes(5)—Reinforcement Learning

 Reinforcement Learning php

對於控制決策問題的解決思路:設計一個回報函數(reward function),若是learning agent(如上面的四足機器人、象棋AI程序)在決定一步後,得到了較好的結果,那麼咱們給agent一些回報(好比回報函數結果爲正),獲得較差的結果,那麼回報函數爲負。好比,四足機器人,若是他向前走了一步(接近目標),那麼回報函數爲正,後退爲負。若是咱們可以對每一步進行評價,獲得相應的回報函數,那麼就好辦了,咱們只須要找到一條回報值最大的路徑(每步的回報之和最大),就認爲是最佳的路徑。html

加強學習在不少領域已經得到成功應用,好比自動直升機,機器人控制,手機網絡路由,市場決策,工業控制,高效網頁索引等。本節的加強學習從馬爾科夫決策過程(MDP,Markov decision processes)開始。算法

Markov decision processes apache

 

馬爾科夫決策過程由一個五元組構成網絡

  • S表示狀態集(states)。(好比,在自動直升機系統中,直升機當前位置座標組成狀態集)
  • A表示一組動做(actions)。(好比,使用控制桿操縱的直升機飛行方向,讓其向前,向後等)
  • 是狀態轉移機率。S中的一個狀態到另外一個狀態的轉變,須要A來參與。表示的是在當前狀態下,通過做用後,會轉移到的其餘狀態的機率分佈狀況(當前狀態執行a後可能跳轉到不少狀態)。
  • 是阻尼係數(discount factor)
  • ,R是回報函數(reward function),回報函數常常寫做S的函數(只與S有關),這樣的話,R從新寫做。

 

MDP的動態過程以下:某個agent的初始狀態爲,而後從A中挑選一個動做執行,執行後,agent按機率隨機轉移到了下一個狀態,。而後再執行一個動做,就轉移到了,接下來再執行…,咱們能夠用下面的圖表示整個過程app

 

 

咱們定義通過上面轉移路徑後,獲得的回報函數之和以下機器學習

 

 

若是R只和S有關,那麼上式能夠寫做異步

咱們的目標是選擇一組最佳的action,使得所有的回報加權和指望最大。分佈式

 

 

從上式能夠發現,在t時刻的回報值被打了的折扣,是一個逐步衰減的過程,越靠後的狀態對回報和影響越小。最大化指望值也就是要將大的儘可能放到前面,小的儘可能放到後面。函數

已經處於某個狀態s時,咱們會以必定策略來選擇下一個動做a執行,而後轉換到另外一個狀態s'。咱們將這個動做的選擇過程稱爲策略(policy),每個policy其實就是一個狀態到動做的映射函數。給定也就給定了,也就是說,知道了就知道了每一個狀態下一步應該執行的動做。

咱們爲了區分不一樣的好壞,並定義在當前狀態下,執行某個策略後,出現的結果的好壞,須要定義值函數(value function)也叫折算累積回報(discounted cumulative reward)

能夠看到,在當前狀態s下,選擇好policy後,值函數是回報加權和指望。這個其實很容易理解,給定也就給定了一條將來的行動方案,這個行動方案會通過一個個的狀態,而到達每一個狀態都會有必定回報值,距離當前狀態越近的其餘狀態對方案的影響越大,權重越高。這和下象棋差很少,在當前棋局下,不一樣的走子方案是,咱們評價每一個方案依靠對將來局勢(,,…)的判斷。通常狀況下,咱們會在頭腦中多考慮幾步,可是咱們會更看重下一步的局勢。

從遞推的角度上考慮,當期狀態s的值函數V,其實能夠看做是當前狀態的回報R(s)和下一狀態的值函數V'之和,也就是將上式變爲:

 

 

 

然而,咱們須要注意的是雖然給定後,在給定狀態s下,a是惟一的,但可能不是多到一的映射。好比你選擇a爲向前投擲一個骰子,那麼下一個狀態可能有6種。再由Bellman等式,從上式獲得

s'表示下一個狀態。

前面的R(s)稱爲當即回報(immediate reward),就是R(當前狀態)。第二項也能夠寫做,是下一狀態值函數的指望值,下一狀態s'符合分佈。

 

能夠想象,當狀態個數有限時,咱們能夠經過上式來求出每個s的V(終結狀態沒有第二項V(s'))。若是列出線性方程組的話,也就是|S|個方程,|S|個未知數,直接求解便可。

固然,咱們求V的目的就是想找到一個當前狀態s下,最優的行動策略,定義最優的V*以下:

 

 

 

就是從可選的策略中挑選一個最優的策略(discounted rewards最大)。

上式的Bellman等式形式以下:

第一項與無關,因此不變。第二項是一個就決定了每一個狀態s的下一步動做a,執行a後,s'按機率分佈的回報機率和的指望。

若是上式還很差理解的話,能夠參考下圖:

定義了最優的V*,咱們再定義最優的策略以下:

選擇最優的,也就肯定了每一個狀態s的下一步最優動做a。

 

根據以上式子,咱們能夠知道

解釋一下就是當前狀態的最優的值函數V*,是由採用最優執行策略的狀況下得出的,採用最優執行方案的回報顯然要比採用其餘的執行策略要好。

這裏須要注意的是,若是咱們可以求得每一個s下最優的a,那麼從全局來看,的映射便可生成,而生成的這個映射是最優映射,稱爲。針對全局的s,肯定了每個s的下一個行動a,不會由於初始狀態s選取的不一樣而不一樣。

 Value iteration and policy iteration

 

本節討論兩種求解有限狀態MDP具體策略的有效算法。這裏,咱們只針對MDP是有限狀態、有限動做的狀況,。

值迭代法

  1. 將每個s的V(s)初始化爲0
  2. 循環直到收斂 {

    對於每個狀態s,對V(s)作更新

     

    }

值迭代策略利用了上節中bellman equation(2)

內循環的實現有兩種策略:

1)同步迭代法

拿初始化後的第一次迭代來講吧,初始狀態全部的V(s)都爲0。而後對全部的s都計算新的V(s)=R(s)+0=R(s)。在計算每個狀態時,獲得新的V(s)後,先存下來,不當即更新。待全部的s的新值V(s)都計算完畢後,再統一更新。

這樣,第一次迭代後,V(s)=R(s)。

 2)異步迭代法

與同步迭代對應的就是異步迭代了,對每個狀態s,獲得新的V(s)後,不存儲,直接更新。這樣,第一次迭代後,大部分V(s)>R(s)。

 

無論使用這兩種的哪種,最終V(s)會收斂到V*(s)。知道了V*後,咱們再使用公式(3)來求出相應的最優策略,固然能夠在求V*的過程當中求出。

 

策略迭代法

值迭代法使V值收斂到V*,而策略迭代法關注,使收斂到。

 

  1. 將隨機指定一個S到A的映射。
  2. 循環直到收斂 {
    1. 對於每個狀態s,對作更新

     

    }

 

(a)步中的V能夠經過以前的Bellman等式求得

        這一步會求出全部狀態s的。

(b)步實際上就是根據(a)步的結果挑選出當前狀態s下,最優的a,而後對作更新。

 

對於值迭代和策略迭代很難說哪一種方法好,哪一種很差。對於規模比較小的MDP來講,策略通常可以更快地收斂。可是對於規模很大(狀態不少)的MDP來講,值迭代比較容易(不用求線性方程組)。

 

Learning a model for an MDP

 

在以前討論的MDP中,咱們是已知狀態轉移機率和回報函數R(s)的。但在不少實際問題中,這些參數不能顯式獲得,咱們須要從數據中估計出這些參數(一般S、A和是已知的)。

假設咱們已知不少條狀態轉移路徑以下:

其中,是i時刻,第j條轉移路徑對應的狀態,是狀態時要執行的動做。每一個轉移路徑中狀態數是有限的,在實際操做過程當中,每一個轉移鏈要麼進入終結狀態,要麼達到規定的步數就會終結。

若是咱們得到了不少上面相似的轉移鏈(至關於有了樣本),那麼咱們就可使用最大似然估計來估計狀態轉移機率。

分子是從s狀態執行動做a後到達s'的次數,分母是在狀態s時,執行a的次數。二者相除就是在s狀態下執行a後,會轉移到s'的機率。

爲了不分母爲0的狀況,咱們須要作平滑。若是分母爲0,則令,也就是說當樣本中沒有出現過在s狀態下執行a的樣例時,咱們認爲轉移機率均分。

上面這種估計方法是從歷史數據中估計,這個公式一樣適用於在線更新。好比咱們新獲得了一些轉移路徑,那麼對上面的公式進行分子分母的修正(加上新獲得的count)便可。修正事後,轉移機率有所改變,按照改變後的機率,可能出現更多的新的轉移路徑,這樣會愈來愈準。

一樣,若是回報函數未知,那麼咱們認爲R(s)爲在s狀態下已經觀測到的回報均值。

當轉移機率和回報函數估計出以後,咱們可使用值迭代或者策略迭代來解決MDP問題。好比,咱們將參數估計和值迭代結合起來(在不知道狀態轉移機率狀況下)的流程以下:

 

  1. 隨機初始化
  2. 循環直到收斂 {
    1. 在樣本上統計中每一個狀態轉移次數,用來更新和R
    2. 使用估計到的參數來更新V(使用上節的值迭代方法)
    3. 根據更新的V來從新得出

}

 

在(b)步中咱們要作值更新,也是一個循環迭代的過程,在上節中,咱們經過將V初始化爲0,而後進行迭代來求解V。嵌套到上面的過程後,若是每次初始化V爲0,而後迭代更新,就會很慢。一個加快速度的方法是每次將V初始化爲上一次大循環中獲得的V。也就是說V的初值銜接了上次的結果。

 

參考文獻

 

[1] Machine Learning Open Class by Andrew Ng in Stanford http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=MachineLearning

[2] Yu Zheng, Licia Capra, Ouri Wolfson, Hai Yang. Urban Computing: concepts, methodologies, and applications. ACM Transaction on Intelligent Systems and Technology. 5(3), 2014

[3] Jerry Lead http://www.cnblogs.com/jerrylead/

[3]《大數據-互聯網大規模數據挖掘與分佈式處理》 Anand Rajaraman,Jeffrey David Ullman著,王斌譯

[4] UFLDL Tutorial http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial

[5] Spark MLlib之樸素貝葉斯分類算法 http://selfup.cn/683.html

[6] MLlib - Dimensionality Reduction http://spark.apache.org/docs/latest/mllib-dimensionality-reduction.html

[7] 機器學習中的數學(5)-強大的矩陣奇異值分解(SVD)及其應用 http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html

[8] 淺談 mllib 中線性迴歸的算法實現 http://www.cnblogs.com/hseagle/p/3664933.html

[9] 最大似然估計 http://zh.wikipedia.org/zh-cn/%E6%9C%80%E5%A4%A7%E4%BC%BC%E7%84%B6%E4%BC%B0%E8%AE%A1

[10] Deep Learning Tutorial http://deeplearning.net/tutorial/

 

雪松

Microsoft MVP

相關文章
相關標籤/搜索