本章是算法與方法的第四章,是TD算法的拓展,本質上是將狀態值與行為值的表征方式,從離散的表格形式,拓展到了連續的函數形式。

表格形式的優點是直觀,便于分析,缺點是數據量較大或者連續性狀態或者行為空間時,不能很好的處理(受限于存儲和泛化能力)。

而函數形式的優點很明顯,比如有10000個點,表格形式需要存儲10000個數據,而用函數形式,僅需保存幾個參數值,存儲壓力較小,且有泛化能力(可以生成新的樣本點)。下面是一個例子,w是參數向量(parameter?vector),因為是線性函數,所以向量維度為2(僅需保存這兩個數),φ叫做特征向量(feature?vector,專門的叫法)。

需要對應狀態值,我們僅需將狀態傳入函數,即可獲得結果,而不是用查表格的形式。

更新狀態值的方式也不同,函數法是更新函數的參數向量,這個簡介提升了泛化能力,因為為了修改當前值,也會間接影響相鄰節點的情況。

但是函數法的缺點是,無法表征的那么精確(本質上是個擬合問題,不一定能找到真實的曲線),所以叫函數近似法。可以提升函數的階數,從而增加函數的擬合能力。這個高階曲線,如果將w看做自變量,那么本質上還是線性函數。

后面對值函數方法進行了一個總結,值函數的目的是用一個參數化的方程對狀態值與行為值進行一個估計。優點是存儲壓力小,泛化能力強,難點是如何找到這個函數。

我們在這里用兩個函數分別代表真實的狀態值和估計出來的狀態值,那么問題就變成了一個優化問題,找尋一個最優參數w,使得兩者之間的意義是最小的,這樣估計值就能盡可能的近似真實值。

這里定義了對應的目標函數,轉換成了對目標函數求最小值,并找尋出對應的參數w。

那么這個隨機變量S的分布是什么呢?第一種情況就是假設S服從均勻分布,這種方法就是簡單,但缺點是真實的狀態S不是服從均勻分布,因為各狀態之間的重要性是不同的。

第二種情況是假設S服從一個穩定分布,這個穩定分布是馬爾科夫過程無限執行下去后,整個系統自動收斂于一個固定的狀態概率分布。

后面對穩定分布進一步進行了介紹,本質上還是Markov?Process 的內容,無限執行下去,各狀態之間的跳轉概率就會穩定下來。

從線性代數的角度上看,就是計算這個狀態轉移矩陣的特征向量(特征值為1)

定義完成目標函數(估計值與真實值差異平方的期望)后,下一步就是對這個目標函數進行優化,用到的方法就是梯度下降法。這里的梯度求導,涉及到了這個期望的計算。

進一步,我們用隨機梯度下降代替真實的梯度,從而簡化計算。但是,目前仍有一些問題:隨機梯度下降的樣本采樣,?也應滿足穩定分布,但是這個采樣是隨機的。真實的狀態值是未知的,也無法直接計算,只能用一個近似來使算法繼續執行。

這個真實狀態值的近似方法有兩個,蒙特卡羅方法和時序差分方法(跟前面幾章的內容對上了)

課程中主要介紹了基于時序差分的估計方法,缺點是僅能對狀態值進行估計(還有一個行為值需要處理)

還有一個亟待回答的問題,就是這個值函數如何設計。常用的方法有兩大類,線性方程和深度學習。

第一種方法的計算過程如下,這種方法叫做時序差分線性(TD-Linear)法。

時序查分線性法的優點是線性模型容易理解,容易將線性函數表征轉化為表格類型的表征,缺點是特征向量不好選擇。

轉化的方式就是找尋一個特殊的特征向量,其本質上是一個One-Hot編碼。

通過這個特殊的特征向量,就能把時序查分線性方法,轉變成一個熟悉的時序查分表格方法。

這里對時序差分方法進行了一個總結,目標函數的目的是找尋一個值函數,能盡可能近似真實的狀態值。用梯度下降法求解這個目標函數的最優解,因為真實的狀態值不知道,所以用TD算法來近似。

前面介紹了對狀態值的近似,找尋最優策略還需要行為值,行為值的近似一般用Saras算法。

Saras做近似的偽代碼如下

類似于Saras算法,Q-Learning算法也能拓展一下用于值函數的近似。

用Q-Learning算法做值函數近似的偽代碼如下

而Deep?Q-Learning或者DQN,是利用神經網絡來做一個非線性函數的近似,這也是深度學習在強化學習中比較成功的應用。

Deep?Q-Learning的目的是使目標函數或者損失最小化

如何解決這個優化問題呢,用的是梯度下降。但是這個梯度下降不好計算,在這里引入了一個假設 ,w針對y是個固定值(至少是局部或者臨時的)

為了解決這個優化問題,這里引入了兩個網絡-主網絡(main?network)和目標網絡(target?network)。?將目標函數中相加的兩部分人為劃分為主網絡和目標網絡,在求梯度的時候,固定住目標網絡的參數,以簡化梯度的計算。

雙網絡的模式本質上是計算梯度的一個技巧(為啥有用沒看明白,這個假設是否成立,是否對真實結果有影響?)

另一個重要的概念叫做經驗回放(Experience?Replay),指的是采樣到的樣本不是直接用,而是先緩存到一個buffer里面。訓練網絡時,再從這個緩存buffer里面隨機均勻采樣,生成一個mini-batch用于訓練網絡。

這里采用經驗回放的目的,是因為沒有任何的先驗知識,所以狀態-行為對的分布被假設為均勻分布。

但是我們直接采樣是依據某種策略產生的序列生成的,這個序列隱含了樣本之間的相關性,所以用經驗回放策略先進行緩存,再隨機均勻采樣生成mini-batch,從而消除樣本之間的相關性。

這里又討論了Q-Learning和Deep?Q-Learning之間的差異,為什么有的需要經驗回放

后面做了實驗,Deep?Q-Learning僅用了淺層的網絡,就能達到很好的效果。