1. Experience Relay 经验回放
1.1. shortcomings of original algorithms
-
Waste of Experience
transition ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st,at,rt,st+1),称从开始到结束所有的transition为经验,原始算法中每次使用一个transition后丢弃。
-
Correlated Updates
原始算法中,相邻transition具有相关性,实验证明这种相关性不利于训练。
1.2. Experience Relay
-
replay buffer:可储存最新的n个transition,n为超参数,通常设置在 1 0 5 − 1 0 6 10^5-10^6 105−106之间。
-
TD with Experience Relay
-
目标函数: L ( w ) = 1 T ∑ t = 1 T δ t 2 2 L(w)=\frac{1}{T}\sum_{t=1}^T\frac{\delta_t^2}{2} L(w)=T1∑t=1T2δt2
-
Stochastic gradient descent (SGD)
每次从replay buffer中随机均匀抽取一个transition ( s 1 , a i , r i , s i + 1 ) (s_1,a_i,r_i,s_{i+1}) (s1,ai,ri,si+1);
计算TD error δ i \delta_i δi;
随机梯度: g i = ∂ δ i 2 / 2 ∂ w = δ i ⋅ ∂ Q ( S i a i ; w ) ∂ w g_i=\frac{\partial \delta_i^2/2}{\partial w}=\delta_i·\frac{\partial Q(S_ia_i;w)}{\partial w} gi=∂w∂δi2/2=δi⋅∂w∂Q(Siai;w);
SDG: w ← w − α ⋅ g i w\leftarrow w-\alpha·g_i w←w−α⋅gi。
-
实际中常常随机抽取多个transition(一个batch),计算多个随机梯度,以平均值更新参数 w w w。
-
打破了序列的相关性,可重复利用过去的经验。
-
1.3. Prioritized Experience Relay 优先经验回放
-
Basic Idea
不是所有transition都有相同的重要性。可以用TD error的值判断重要性,绝对值越大,说明网络越不熟悉该场景,其重要性越大。
-
Importance Sampling
使用非均匀抽样代替均匀抽样:
-
Option 1:抽样概率 p t ∝ ∣ δ t ∣ + ϵ p_t\propto|\delta_t|+\epsilon pt∝∣δt∣+ϵ( ϵ \epsilon ϵ避免概率为0)
-
Option 2:抽样概率 p t ∝ 1 r a n k ( t ) p_t\propto \frac{1}{rank(t)} pt∝rank(t)1
r a n k ( t ) rank(t) rank(t)为 δ t \delta_t δt的序号, δ t \delta_t δt绝对值越大,序号就越小,抽样概率越大。
-
-
Scaling Learning Rate
-
非均匀抽样,不同transiton得到的概率不同,会导致DQN的预测有偏差,应相应调整学习率以抵消偏差。
-
SGD: w ← w − α ⋅ w w\leftarrow w-\alpha·w w←w−α⋅w
-
将学习率 α \alpha α乘以 ( n ⋅ p t ) − β (n\cdot p_t)^{-\beta} (n⋅pt)−β,超参数 β ∈ ( 0 , 1 ) \beta\in(0,1) β∈(0,1),起初较小,逐渐增大到1
对于均匀抽样, p 1 = p 2 ⋅ ⋅ ⋅ = p n = 1 n , n ⋅ t = 1 p_1=p_2···=p_n=\frac{1}{n},n\cdotp_t=1 p1=p2⋅⋅⋅=pn=n1,n⋅t=1;
对于非均匀抽样, p t p_t pt越大,学习率越小。
-
-
Update TD Error
- 为每一条transition计算TD error δ t \delta_t δt
- 对新收集到还未使用的transition, δ t \delta_t δt未知,将其赋最大值,即拥有最高的优先级
- 训练DQN的同时更新 δ t \delta_t δt,权重也随之
2.Target Network & Double DQN
2.1. Bootstrapping 自举
在强化学习中,指用一个估算去更新同类的估算:“using an estimated value in the update step for the same knid of estimated value.”
TD算法中,使用一个transition更新参数 w w w。TD target中使用到了 s t + 1 s_{t+1} st+1,说明为了更新DQN在 t t t时刻的估计,需使用到DQN在 t + 1 t+1 t+1时刻的预测。
2.2. Problem of Overestimation
-
TD算法导致DQN高估行动价值action-value,原因:
-
Maximization:计算TD target时使用了最大化计算 max a Q ( s t + 1 , a ; w ) \max_a Q(s_{t+1},a;w) maxaQ(st+1,a;w),导致高估
-
Bootstrapping:用自己的估计更新自己,高估会一步步叠加(正反馈)
计算TD target时使用到了 q t + 1 = max a Q ( s t + 1 , a ; w ) q_{t+1}=\max_a Q(s_{t+1},a;w) qt+1=maxaQ(st+1,a;w),并使用其更新 Q ( s t , a t ; w ) Q(s_t,a_t;w) Q(st,at;w)。
如果DQN高估行动价值,则 Q ( s t + 1 , a t ; w ) Q(s_{t+1},a_t;w) Q(st+1,at;w)是高估的,maximization导致其进一步高估。
更新参数,导致被更新参数高估 Q ( s t , a t ; w ) Q(s_t,a_t;w) Q(st,at;w)。
-
-
Why is overestimation a shortcoming?
均匀高估不会影响决策,不均匀高估影响决策。由于每个二元组 ( s t , a t ) (s_t,a_t) (st,at)在replay buffer中的概率不同,故高估的程度不同。
-
Solution:target network(解决bootstrapping),double DQN(解决maximization)
2.3. target network
target network: Q ( s , a ; w − ) Q(s,a;w^-) Q(s,a;w−),与DQN网络 Q ( s , a ; w ) Q(s,a;w) Q(s,a;w)结构相同,参数不同。
使用 Q ( s , a ; w ) Q(s,a;w) Q(s,a;w)控制agent并收集经验transitions;
使用 Q ( s , a ; w − ) Q(s,a;w^-) Q(s,a;w−)计算TD target, y t = r t + γ ⋅ max a Q ( s t + 1 , a ; w − ) y_t=r_t+\gamma·\max_a Q(s_{t+1},a;w^-) yt=rt+γ⋅maxaQ(st+1,a;w−)。
- 使用一个transition对
w
w
w进行参数更新的过程:
- 观测得到transition s t , a t , r t , s t + 1 s_t,a_t,r_t,s_{t+1} st,at,rt,st+1
- TD target: y t = r t + γ ⋅ max a Q ( s t + 1 , a ; w − ) y_t=r_t+\gamma·\max_a Q(s_{t+1},a;w^-) yt=rt+γ⋅maxaQ(st+1,a;w−)
- TD error: δ t = Q ( s t , a t ; w ) − y t \delta_t=Q(s_t,a_t;w)-y_t δt=Q(st,at;w)−yt
- SGD: w ← w − α ⋅ δ t ⋅ ∂ Q ( s t , a t ; w ) ∂ w w\leftarrow w-\alpha·\delta_t·\frac{\partial Q(s_t,a_t;w)}{\partial w} w←w−α⋅δt⋅∂w∂Q(st,at;w)
- Periodically update
w
−
w^-
w−
- Option1: w − ← w w^-\leftarrow w w−←w
- Option2: w − ← τ ⋅ w + ( 1 − τ ⋅ w − ) w^-\leftarrow \tau\cdot w+(1-\tau\cdot w^-) w−←τ⋅w+(1−τ⋅w−)
由于使用了另一个网络计算TD error,使用target network可以一定程度减小bootstrapping导致DQN高估的程度,但依然无法解决maximization导致的高估。同时,由于target network的参数依赖于DQN网络,故bootstrapping依然存在。
2.4. double DQN
-
计算TD target的方法:
DQN:
a ∗ = arg max a Q ( s t + 1 , a ; w ) y t = r t + γ ⋅ Q ( s t + 1 , a ∗ ; w ) \begin{aligned} a^*&=\arg\max_a Q(s_{t+1},a;w) \\y_t&=r_t+\gamma\cdot Q(s_{t+1},a^*;w) \end{aligned} a∗yt=argamaxQ(st+1,a;w)=rt+γ⋅Q(st+1,a∗;w)
target network:
a ∗ = arg max a Q ( s t + 1 , a ; w − ) y t = r t + γ ⋅ Q ( s t + 1 , a ∗ ; w − ) \begin{aligned} a^*&=\arg\max_a Q(s_{t+1},a;w^-) \\y_t&=r_t+\gamma\cdot Q(s_{t+1},a^*;w^-) \end{aligned} a∗yt=argamaxQ(st+1,a;w−)=rt+γ⋅Q(st+1,a∗;w−)
double DQN:
a ∗ = arg max a Q ( s t + 1 , a ; w ) y t = r t + γ ⋅ Q ( s t + 1 , a ∗ ; w − ) \begin{aligned} a^*&=\arg\max_a Q(s_{t+1},a;w) \\y_t&=r_t+\gamma\cdot Q(s_{t+1},a^*;w^-) \end{aligned} a∗yt=argamaxQ(st+1,a;w)=rt+γ⋅Q(st+1,a∗;w−)
大幅提升性能,虽然不能彻底消除高估,但是高估不太严重。
-
Why does double DQN work better?
Selection using DQN: a ∗ = arg max a Q ( s t + 1 , a ; w ) a^*=\arg\max_a Q(s_{t+1},a;w) a∗=argmaxaQ(st+1,a;w)
Evaluation using target network: y t = r t + γ ⋅ Q ( s t + 1 , a ∗ ; w − ) y_t=r_t+\gamma\cdot Q(s_{t+1},a^*;w^-) yt=rt+γ⋅Q(st+1,a∗;w−)
Q ( s t + 1 , a ∗ ; w − ) ≤ max a Q ( s t + 1 , a ; w − ) Q(s_{t+1},a^*;w^-)\leq\max_aQ(s_{t+1},a;w^-) Q(st+1,a∗;w−)≤amaxQ(st+1,a;w−)
上式左侧Double DQN选择的 a ∗ a^* a∗实际上不是 Q Q Q值最大的动作,以部分避免高估。
3.Dueling Network
3.1. Advantage Function
-
Definations
Optimal action-value function: Q ∗ ( s , a ) = max π Q π ( s , a ) Q^*(s,a)=\max_\pi Q_\pi(s,a) Q∗(s,a)=maxπQπ(s,a)
Optimal state-value function: V ∗ ( s ) = max π V π ( s ) V^*(s)=\max_\pi V_\pi(s) V∗(s)=maxπVπ(s)
Optimal advantage function(优势函数): A ∗ ( s , a ) = Q ∗ ( s , a ) − V ∗ ( s ) A^*(s,a)=Q^*(s,a)-V^*(s) A∗(s,a)=Q∗(s,a)−V∗(s)
-
Properties of Advantage Function
Theorem 1: V ∗ ( s ) = max a Q ∗ ( s , a ) V^*(s)=\max_a Q^*(s,a) V∗(s)=maxaQ∗(s,a)
A ∗ ( s , a ) = Q ∗ ( s , a ) − V ∗ ( s ) max a A ∗ ( s , a ) = max a Q ∗ ( s , a ) − V ∗ ( s ) = 0 \begin{aligned} A^*(s,a)&=Q^*(s,a)-V^*(s) \\\max_a A^*(s,a)&=\max_a Q^*(s,a)-V^*(s)=0 \end{aligned} A∗(s,a)amaxA∗(s,a)=Q∗(s,a)−V∗(s)=amaxQ∗(s,a)−V∗(s)=0
将进行如下变换:
A ∗ ( s , a ) = Q ∗ ( s , a ) − V ∗ ( s ) Q ∗ ( s , a ) = V ∗ ( s ) + A ∗ ( s , a ) − m a x a A ∗ ( s , a ) \begin{aligned} A^*(s,a)&=Q^*(s,a)-V^*(s) \\Q^*(s,a)&=V^*(s)+A^*(s,a)-max_a A^*(s,a) \end{aligned} A∗(s,a)Q∗(s,a)=Q∗(s,a)−V∗(s)=V∗(s)+A∗(s,a)−maxaA∗(s,a)
Theorem 2: Q ∗ ( s , a ) = V ∗ ( s ) + A ∗ ( s , a ) − m a x a A ∗ ( s , a ) Q^*(s,a)=V^*(s)+A^*(s,a)-max_a A^*(s,a) Q∗(s,a)=V∗(s)+A∗(s,a)−maxaA∗(s,a)
3.2. Dueling Network
-
Approximation Advantage Function A ( s , a ; w A ) A(s,a;w^A) A(s,a;wA)
-
Approximation State-Value Function V ( s ; w V ) V(s;w^V) V(s;wV)
-
Dueling Network
根据Theorem 2,得到对动作价值函数的近似(与DQN相同):
Q ∗ ( s , a ; w A , w V ) = V ∗ ( s ; w V ) + A ∗ ( s , a ; w A ) − m a x a A ∗ ( s , a ; w A ) Q^*(s,a;w^A,w^V)=V^*(s;w^V)+A^*(s,a;w^A)-max_a A^*(s,a;w^A) Q∗(s,a;wA,wV)=V∗(s;wV)+A∗(s,a;wA)−maxaA∗(s,a;wA)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xe0bBddO-1672473344043)(null)]Dueling Network与DQN的输入输出均相同,但是网络结构不同。
-
Training
学习参数 w = ( w A , w V ) w=(w^A,w^V) w=(wA,wV),训练过程与DQN相同,也可以应用其他高级技巧。
3.3. Overcome Non-identifiability
-
Problem of Non-identifiability
Equation 1: Q ∗ ( s , a ) = V ∗ ( s ) + A ∗ ( s , a ) Q^*(s,a)=V^*(s)+A^*(s,a) Q∗(s,a)=V∗(s)+A∗(s,a)
Equation 2: Q ∗ ( s , a ) = V ∗ ( s ) + A ∗ ( s , a ) − m a x a A ∗ ( s , a ) Q^*(s,a)=V^*(s)+A^*(s,a)-max_a A^*(s,a) Q∗(s,a)=V∗(s)+A∗(s,a)−maxaA∗(s,a)
Equation 1中,无法通过学习 Q ∗ Q^* Q∗唯一确定 V ∗ , A ∗ V^*,A^* V∗,A∗,如果 A ∗ A^* A∗增加10, V ∗ V^* V∗减小10,得到的输出 Q ∗ Q^* Q∗不变。若 A , V A,V A,V两个网络存在反向的波动,二者相加后的输出呈现稳定,但是实际上 A , V A,V A,V两个网络训练效果都不好。
Equation 2解决了不唯一性,如果 A ∗ A^* A∗增加10, V ∗ V^* V∗减小10,得到的结果减小10。