海宏集團(tuán)網(wǎng)站建設(shè)朋友圈網(wǎng)絡(luò)營銷
強(qiáng)化學(xué)習(xí)算法總結(jié) 2
4.動(dòng)態(tài)規(guī)劃
待解決問題分解成若干個(gè)子問題,先求解子問題,然后得到目標(biāo)問題的解
需要知道整個(gè)狀態(tài)轉(zhuǎn)移函數(shù)和價(jià)值函數(shù),狀態(tài)空間離散且有限
- 策略迭代:
- 策略評估:貝爾曼期望方程來得到一個(gè)策略的 V ( s ) V(s) V(s)
- 策略提升:
- 價(jià)值迭代
4.1 策略迭代算法
- 策略評估
V ( S ) = ∑ a π ( a ∣ s ) Q ( s , a ) = ∑ a π ( a ∣ s ) ( r ( a , s ) + γ ∑ s P ( s ′ ∣ s , a ) V π ( S ′ ) ) V(S) = \sum_a \pi(a|s)Q(s,a) = \sum_a \pi(a|s)(r(a,s)+ \gamma\sum_s P(s'|s,a)V^\pi(S')) V(S)=a∑?π(a∣s)Q(s,a)=a∑?π(a∣s)(r(a,s)+γs∑?P(s′∣s,a)Vπ(S′))
知道狀態(tài)轉(zhuǎn)移函數(shù)和未來狀態(tài)價(jià)值就可以估計(jì)當(dāng)前的狀態(tài):我們只需要求解 V ( s ) V(s) V(s)
這里就是利用貝爾曼方程,來不斷地更新 V ( s ) V(s) V(s),
V ( S ) k + 1 = ∑ a π ( a ∣ s ) Q ( s , a ) = ∑ a π ( a ∣ s ) ( r ( a , s ) + γ ∑ s P ( s ′ ∣ s , a ) V k ( S ′ ) ) V(S)^{k+1} = \sum_a \pi(a|s)Q(s,a) = \sum_a \pi(a|s)(r(a,s)+ \gamma\sum_s P(s'|s,a)V^k(S')) V(S)k+1=a∑?π(a∣s)Q(s,a)=a∑?π(a∣s)(r(a,s)+γs∑?P(s′∣s,a)Vk(S′))
-
策略提升
只要當(dāng)前狀態(tài)下的策略的得到的狀態(tài)動(dòng)作函數(shù)比 V ( S ) V(S) V(S)高一些
π ′ ( s ) = a r g m a x a Q π ( s , a ) \pi'(s) = argmax_aQ^\pi(s,a) π′(s)=argmaxa?Qπ(s,a) -
策略迭代
π 0 策略評估 V π 0 ( S )策略提升 π 1 \pi^0 策略評估 V\pi_0(S)策略提升 \pi^1 π0策略評估Vπ0?(S)策略提升π1
- 代碼
- 策略評估
w h i l e max ? > θ d o : m a x = 0 f o r s i n r a n g e ( S ) : v = V ( s ) (所有 Q ( s , a )求和 ) V ( S ) = ( b e l l m a n f u c t i o n ) m a x = m a x ( m a x , V ( s ) ? v ) while \ \max \ >\theta \ do: \\ \ max = 0 \\ \ for \ s \ in \ range(S):\\ \ v = V(s)(所有Q(s,a)求和)\\ \ V(S) = (bellman fuction)\\ \ max = max(max,V(s) - v) while?max?>θ?do:?max=0?for?s?in?range(S):?v=V(s)(所有Q(s,a)求和)?V(S)=(bellmanfuction)?max=max(max,V(s)?v)
? * 策略提升
f o r s i n S : π ( s ) = a r g m a x ( Q ( s , a ) ) for\ s\ in\ S:\\ \pi (s) = argmax(Q(s,a)) for?s?in?S:π(s)=argmax(Q(s,a))
4.2 價(jià)值迭代算法
V k + 1 ( s ) = m a x a { r ( s , a ) + γ ∑ s P V k } V^{k+1}(s) = max_a\{ r(s,a)+\gamma\sum_sPV^k\} Vk+1(s)=maxa?{r(s,a)+γs∑?PVk}
可以理解為只執(zhí)行一輪的策略迭代算法
5 時(shí)序差分算法
在數(shù)據(jù)分布未知的情況下來對模型進(jìn)行更新,通過智能體與環(huán)境的交互進(jìn)行學(xué)習(xí)。無模型的強(qiáng)化學(xué)習(xí)。
- 在線強(qiáng)化學(xué)習(xí):使用當(dāng)前策略下采樣得到的數(shù)據(jù)進(jìn)行學(xué)習(xí)
- 離線強(qiáng)化學(xué)習(xí):使用經(jīng)驗(yàn)回訪池
5.1 時(shí)序差分
V ( S t ) = V ( s t ) + α [ G t ? V ( s t ) ] V(S_t) = V(s_t) +\alpha[G_t - V(s_t)] V(St?)=V(st?)+α[Gt??V(st?)]
G t G_t Gt?表示整個(gè)序列采集結(jié)束之后,得到的回報(bào)。而很多時(shí)候我們是沒有辦法
V ( s t ) + = α [ r t + γ V ( s t + 1 ) ? V ( s t ) ] V(s_t) += \alpha[r_t + \gamma V(s_{t+1}) -V(s_t) ] V(st?)+=α[rt?+γV(st+1?)?V(st?)]
用時(shí)序差分法估計(jì)到了狀態(tài)價(jià)值函數(shù) V ( s ) V(s) V(s)
5.2 SARSA
Q ( s , a ) + = α [ r ( s , a ) + γ Q ( s , a ) ? Q ( s , a ) ] Q(s,a) += \alpha[r(s,a) + \gamma Q(s,a) - Q(s,a)] Q(s,a)+=α[r(s,a)+γQ(s,a)?Q(s,a)]
$$
\begin{equation}
\pi(a|s)=\left{
\begin{aligned}
argmax(Q(s,a))& \ & if \ prob < \ 1- \epsilon \
random & \ & \
\end{aligned}
\right.
\end{equation}
$$
5.3 多步Sarsa
MC方法是無偏估計(jì)但是方差比較大
TD 是有偏估計(jì),因?yàn)槊恳粋€(gè)對下一個(gè)狀態(tài)的價(jià)值都是估計(jì)的
Q ( s t , a t ) + = α [ r t + γ Q ( s t + 1 ) + γ 2 Q ( s t + 2 ) + γ 3 Q ( s t + 3 ) . . . ? Q ( s , a ) ] Q(s_t,a_t)+= \alpha[ r_t + \gamma Q(s_{t+1}) + \gamma^2 Q(s_{t+2})+ \gamma^3 Q(s_{t+3})... -Q(s,a) ] Q(st?,at?)+=α[rt?+γQ(st+1?)+γ2Q(st+2?)+γ3Q(st+3?)...?Q(s,a)]
代碼實(shí)現(xiàn)上,是前幾次不執(zhí)行只是進(jìn)行數(shù)據(jù)的收集,第n次開始進(jìn)行多步Sarsa
5.4 Q-learning
Q ( s , a ) + = α [ r ( s , a ) + γ m a x a Q ( s , a ) ? Q ( s , a ) ] Q(s,a) += \alpha[r(s,a) + \gamma max_aQ(s,a) - Q(s,a)] Q(s,a)+=α[r(s,a)+γmaxa?Q(s,a)?Q(s,a)]
Q-learning的時(shí)序差分算法在算下一個(gè)狀態(tài)的Q的時(shí)候會(huì)取最大的那個(gè)
Sarsa會(huì)先 ? ? g r e e d y \epsilon -greedy ??greedy 選擇s,a然后計(jì)算TD_error,然后估計(jì)Q(s’,a’)(比如放在環(huán)境中跑一下)
Q-learning next_s和a之后,會(huì)找到最大的Q(s’,a’),不依賴于 ? ? g r e e d y \epsilon -greedy ??greedy 的a
-
在線策略算法和離線策略算法
在線策略算法:行為策略(采樣數(shù)據(jù)的策略)和 目標(biāo)策略(用于更新的策略)是同一個(gè)策略
離線策略算法:行為策略和目標(biāo)策略并不是同一個(gè)策略
7 DQN算法
Q網(wǎng)絡(luò)的損失函數(shù)
w ? = a r g m i n w 1 2 N ∑ i = 1 N [ r i + γ m a x i Q w ( s i ′ , a ′ ) ? Q w ( s i , a i ) ] w^* = argmin_w \frac{1}{2N}\sum_{i=1}^N[r_i+\gamma max_i Q_w(s'_i,a') - Q_w(s_i,a_i)] w?=argminw?2N1?i=1∑N?[ri?+γmaxi?Qw?(si′?,a′)?Qw?(si?,ai?)]
-
經(jīng)驗(yàn)回放
制作一個(gè)數(shù)據(jù)回放緩沖區(qū),每次環(huán)境中得到的<s,a,r,s’>都進(jìn)行存放
-
目標(biāo)網(wǎng)絡(luò)
? 采用TD_error作為我們的誤差,但是包含著網(wǎng)絡(luò)的輸出,所以在更新網(wǎng)絡(luò)參數(shù)的時(shí)候,目標(biāo)也在不斷地更新
? 因?yàn)閮?yōu)化目標(biāo)是讓
Q → r + γ m a x Q ( s ′ + a ′ ) Q \rightarrow r+\gamma max Q(s'+a') Q→r+γmaxQ(s′+a′)
?