1. 程式人生 > >強化學習 6 ——價值函式逼近

強化學習 6 ——價值函式逼近

上篇文章[強化學習——時序差分 (TD) 控制演算法 Sarsa 和 Q-Learning](https://blog.csdn.net/november_chopin/article/details/107897225)我們主要介紹了 Sarsa 和 Q-Learning 兩種時序差分控制演算法,在這兩種演算法內部都要維護一張 Q 表格,對於小型的強化學習問題是非常靈活高效的。但是在狀態和可選動作非常多的問題中,這張Q表格就變得異常巨大,甚至超出記憶體,而且查詢效率極其低下,從而限制了時序差分的應用場景。近些年來,隨著神經網路的興起,基於深度學習的強化學習稱為了主流,也就是深度強化學習(DRL)。 ## 一、函式逼近介紹 我們知道限制 Sarsa 和 Q-Learning 的應用場景原因是需要維護一張巨大的 Q 表格,那麼我們能不能用其他的方式來代替 Q表格呢?很自然的,就想到了函式。 $$ \hat{v}(s, w) \approx v_\pi(s) \\ \hat{q}(s,a, w) \approx q_\pi(s, a) \\ \hat{\pi}{a,s,w} \approx \pi(a|s) $$ 也就是說我們可以用一個函式來代替 Q 表格,不斷更新 $q(s,a)$ 的過程就可以轉化為用引數來擬合逼近真實 q 值的過程。這樣學習的過程不是更新 Q 表格,而是更新 引數 w 的過程。 下面是幾種不同的擬合方式: 第一種函式接受當前的 狀態 S 作為輸入,輸出擬合後的價值函式 第二種函式同時接受 狀態 S 和 動作 a 作為輸入,輸出擬合後的動作價值函式 第三種函式接受狀態 S,輸出每個動作對應的動作價值函式 q 常見逼近函式有線性特徵組合方式、神經網路、決策樹、最近鄰等,在這裡我們只討論可微分的擬合函式:線性特徵組合和神經網路兩種方式。 ### 1、知道真實 V 的函式逼近 對於給定的一個狀態 S 我們假定我們知道真實的 $v_\pi(s)$ ,然後我們經過擬合得到 $\hat{v}(s, w)$ ,於是我們就可以使用均方差來計算損失 $$ J(w) = E_\pi[(v_\pi(s) - \hat{v}(s, w))^2] $$ 利用梯度下降去找到區域性最小值: $$ \Delta w = -\frac{1}{2}\alpha \nabla_wJ(w) \\ w_{t+1} = w_t + \Delta w $$ 我們可以提取一些特徵向量來表示當前的 狀態 S,比如對於 gym 的 CartPole 環境,我們可提取的特徵有推車的位置、推車的速度、木杆的角度、木杆的角速度等
$$ x(s) = (x_1(s), x_2(s), \cdots,x_n(s))^T $$ ###### 此時價值函式 就可以用線性特徵組合表示: $$ \hat{v}(s,w) = x(s)^Tw=\sum_{j=1}^nx_j(s)\cdot w_j $$ 此時的損失函式為: $$ J(w) = E_\pi[(v_\pi(s) - x(s)^T w)^2] $$ 因此更新規則為: $$ \Delta w = \alpha(v_\pi(s)-\hat{v}(s,w))\cdot x(s) \\ Update = StepSize\;*\;PredictionError\;*\;FeatureValue $$ ## 二、預測過程中的價值函式逼近 因為我們函式逼近的就是 真實的狀態價值,所以在實際的強化學習問題中是沒有 $v_\pi(s)$ 的,只有獎勵。所以在函式逼近過程的監督資料