深度强化学习笔记

深度强化学习基础

三种基本的机器学习方法。

  • 监督学习:是从外部监督者提供的带标注训练集中进行学习。 (任务驱动型)
  • 非监督学习:是一个典型的寻找未标注数据中隐含结构的过程。 (数据驱动型)
  • 强化学习 更偏重于智能体与环境的交互, 这带来了一个独有的挑战 ——“试错(exploration)”与“开发(exploitation)”之间的折中权衡,智能体必须开发已有的经验来获取收益,同时也要进行试探,使得未来可以获得更好的动作选择空间。 (从错误中学习)

强化学习主要有以下几个特点:

  • 试错学习:强化学习一般没有直接的指导信息,Agent 要以不断与 Environment 进行交互,通过试错的方式来获得最佳策略(Policy)。
  • 延迟回报:强化学习的指导信息很少,而且往往是在事后(最后一个State)才给出的。比如 围棋中只有到了最后才能知道胜负。

基本概念

大写字母为观测量,小写字母表示观测量的值

  • Random Variable (X)
    随机事件造成的结果。用大写字母表示随机变量,小写字母表示观测值

  • Probability Density Function
    概率密度函数,随机变量在某个确定的取值点附近的可能性

  • state、action、agent
    现在的状态state,动作action,动作主体agent,

  • policy (π)
    根据观测到状态做出决策来决定agent运动,是一个概率密度函数
    Policy function π: π ( a ∣ s ) = P ( A = a ∣ S = s ) π(a|s)=P(A=a|S=s) π(as)=P(A=aS=s)

  • reward (R)
    强化学习的目标是奖励总和尽量高

  • state transition
    old state ——action——> new state
    状态转移是随机的,随机性来源于环境
    可以用一个条件概率密度函数表示: p ( s ′ ∣ s , a ) = P ( S ′ = s ′ ∣ S = s , A = a ) p(s'|s,a)=P(S'=s'|S=s,A=a) p(ss,a)=P(S=sS=s,A=a) 观测当前状态s以及动作a输出状态变成s’的概率

1.State s_t
2.Action a_t
3.Reward r_t
Agent
Environment

整个轨迹(state,action,reward)trajectory:s1,a1,r1,s2,a2,r2,……,sT,aT,rT

  • return
    回报/未来的累计奖励: U t = R t + R t + 1 + R t + 2 + R t + 3 + … … U_t=R_t+R_{t+1}+R_{t+2}+R_{t+3}+…… Ut=Rt+Rt+1+Rt+2+Rt+3+……
    Ut是随机变量,依赖于未来的状态和动作,在t时刻不能预知Ut的值

  • Discounted return
    折扣率γ
    U t = R t + γ R t + 1 + γ 2 R t + 2 + γ 3 R t + 3 + … … U_t=R_t+γR_{t+1}+γ^2R_{t+2}+γ^3R_{t+3}+…… Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+……,因此其值与未来的action和state都有关但是不能预知,可以通过期望预测也就是Qπ

  • Action-value function
    动作价值函数: Q π ( s t ∣ a t ) = E [ U t ∣ S t = s t ∣ A t = a t ) Q_π(s_t|a_t)=E[U_t|S_t=s_t|A_t=a_t) Qπ(stat)=E[UtSt=stAt=at),对动作和状态求期望,可以判断处在状态s时动作a好不好。不同的policy π会使Qπ的值不同
    最优动作价值函数:使得期望最大的policy π, Q ∗ ( s t ∣ a t ) = m a x π Q π ( s t ∣ a t ) Q^*(s_t|a_t)=max_πQ_π(s_t|a_t) Q(stat)=maxπQπ(stat),这样Q*也就与π无关了。选出的是Q值最高下的action

  • State-value function
    状态价值函数: V π ( s t ) = E A [ Q π ( s t ∣ A ) ) = ∑ a π ( a ∣ s t ) ⋅ Q π ( s t , a ) V_π(s_t)=E_A[Q_π(s_t|A))=\sum_aπ(a|s_t)·Q_π(s_t,a) Vπ(st)=EA[Qπ(stA))=aπ(ast)Qπ(st,a),把A当变量对A求期望,判断当前局势是好是坏
    还可以评价π函数好坏,π函数越好,Vπ的期望就越大

倒立摆示例

import gym  
env = gym.make('CartPole-v1', render_mode = "human")  
state = env.reset()  
for t in range(100):  
    env.render()  
    print(state)  
    action = env.action_space.sample()  
    state, reward, done, info, _ = env.step(action)  
    action = env.action_space.sample()  
    if done:  
        print('Finished')  
        break  
env.close()

注意新版gym改动较大,CartPole-v0已弃用,必须设置mode,以及step返回参数由四个变为五个等版本问题

价值学习

  • Deep Q-Network (DQN)
    价值学习目的是学习一个函数来近似Q*(s,a),DQN是一个神经网络函数,神经网络Q(s,a;w)来接近Q*(s,a)

state→卷积层→特征向量→全连接层→输出向量

  • Temporal Different (TD) Learning
    模型预测q=Q(w)和真实值y之前有损失,损失L= 1 2 ( q − y ) 2 \frac{1}{2}(q-y)^2 21(qy)2,求导化简后得到梯度 ∂ L ∂ w = ( q − y ) ∂ Q ( w ) ∂ w \frac{\partial L}{\partial w}=(q-y)\frac{\partial Q(w)}{\partial w} wL=(qy)wQ(w),就可以利用梯度下降来更新模型参数了 w t + 1 = w t − α ∂ L ∂ w ∣ w = w t w_{t+1}=w_t-α\frac{\partial L}{\partial w}|_{w=w_t} wt+1=wtαwLw=wt
    • TD target
      模型最初给一个预测,在运行一段后有一个实际的值y,再此值基础上估计后半截的预测值Q(w),实际值再加上后半截的预测值就是TD target,TD error是L= 1 2 ( Q ( w ) − y ) 2 \frac{1}{2}(Q(w)-y)^2 21(Q(w)y)2,TD算法尽量让TD error接近0。预测-TD traget=TD error
    • TD算法中需要Q(st,at;w)≈rt+Q(st+1,at+1;w),左边右边各一项是预测值,右边还有一项观测的实际值。 U t = R t + γ U t + 1 U_t=R_t+γU_{t+1} Ut=Rt+γUt+1也同理可以利用TD算法

利用TD算法训练DQN
y t = r t + γ m a x a Q ( s t + 1 , a ; w t ) , L t = 1 2 ( Q ( s t , a t ; w ) − y t ) 2 , w t + 1 = w t − α ∂ L t ∂ w ∣ w = w t y_t=r_t+γmax_aQ(s_{t+1},a;w_t), L_t=\frac{1}{2}(Q(s_t,a_t;w)-y_t)^2 , w_{t+1}=w_t-α\frac{\partial L_t}{\partial w}|_{w=w_t} yt=rt+γmaxaQ(st+1,a;wt)Lt=21(Q(st,at;w)yt)2wt+1=wtαwLtw=wt

整体过程:(1)观测到当前状态 S t = s t S_t=s_t St=st和动作 A t = a t A_t=a_t At=at
→(2)预测 q t = Q ( s t , a t ; w ) q_t=Q(s_t,a_t;w) qt=Q(st,at;w)
→(3)求导得 d t = ∂ Q ( s t , a t ; w ) ∂ w d_t=\frac{\partial Q(s_t,a_t;w)}{\partial w} dt=wQ(st,at;w)→(4)获得st+1和rt→(5)求TD target y t = r t + γ m a x a Q ( s t + 1 , a ; w t ) y_t=r_t+γmax_aQ(s_{t+1},a;w_t) yt=rt+γmaxaQ(st+1,a;wt)→(6)梯度下降 w t + 1 = w t − α ( q t − y t ) d t w_{t+1}=w_t-α(q_t-y_t)d_t wt+1=wtα(qtyt)dt

策略学习

利用一个神经网络来近似策略函数——policy network:π(a|s;θ),θ是神经网络的参数

Conv
Dense
Softmax
state
feature
三维向量
输出一个概率分布

π概率密度函数,因此所有的可能概率和为1。激活函数Softmax保证输出都是正数且加和为1

用神经网络替换π函数: V ( s ; θ ) = ∑ a π ( a ∣ s ; θ ) ⋅ Q π ( s , a ) V(s;θ)=\sum_aπ(a|s;θ)·Q_π(s,a) V(s;θ)=aπ(as;θ)Qπ(s,a)。V可以评价状态s和策略网络的好坏,越好V值越大,通过改进θ使得V值越大→定义 J ( θ ) = E S [ V ( S ; θ ) ] J(θ)=E_S[V(S;θ)] J(θ)=ES[V(S;θ)]

  • policy gradient
    梯度 ∂ V ( s ; θ ) ∂ θ \frac{\partial V(s;θ)}{\partial θ} θV(s;θ),梯度上升 θ = θ + β ⋅ ∂ V ( s ; θ ) ∂ θ θ=θ+β·\frac{\partial V(s;θ)}{\partial θ} θ=θ+βθV(s;θ)
    简化梯度(假设Qπ不依赖于θ)→ F o r m   1 : ∂ V ( s ; θ ) ∂ θ = ∑ a ∂ π ( a ∣ s ; θ ) ∂ θ ⋅ Q π ( s , a ) Form\ 1:\frac{\partial V(s;θ)}{\partial θ}=\sum_a\frac{\partial π(a|s;θ)}{\partial θ}·Q_π(s,a) Form 1:θV(s;θ)=aθπ(as;θ)Qπ(s,a)适用于离散,利用蒙特卡洛近似→ F o r m   2 : = ∑ a π ( a ∣ s ; θ ) ⋅ ∂ l o g π ( a ∣ s ; θ ) ∂ θ ⋅ Q π ( s , a ) = E A [ ∂ l o g π ( A ∣ s ; θ ) ∂ θ ⋅ Q π ( s , A ) ] Form\ 2:=\sum_aπ(a|s;θ)·\frac{\partial log π(a|s;θ)}{\partial θ}·Q_π(s,a)=E_A[\frac{\partial log π(A|s;θ)}{\partial θ}·Q_π(s,A)] Form 2:=aπ(as;θ)θlogπ(as;θ)Qπ(s,a)=EA[θlogπ(As;θ)Qπ(s,A)]

使用Form 1:f(a,θ)= ∂ π ( a ∣ s ; θ ) ∂ θ ⋅ Q π ( s , a ) \frac{\partial π(a|s;θ)}{\partial θ}·Q_π(s,a) θπ(as;θ)Qπ(s,a) 对f(a,θ)所有可能的a求和

对于连续的情况使用Form 2,神经网络无法积分,利用蒙特卡洛近似:随机抽一个 a ^ \hat a a^,然后计算 g ( a ^ , θ ) = ∂ l o g π ( A ∣ s ; θ ) ∂ θ ⋅ Q π ( s , A ) g(\hat a,θ)=\frac{\partial log π(A|s;θ)}{\partial θ}·Q_π(s,A) g(a^,θ)=θlogπ(As;θ)Qπ(s,A)

整体过程:(1)观测到st,根据π(·|s;θ))随机抽样at
→(2)计算 q t ≈ Q π ( s t , a t ) q_t≈Q_π(s_t,a_t) qtQπ(st,at)
→(3)对策略网络求导 d θ , t = ∂ π ( a ∣ s ; θ ) ∂ θ ∣ θ = θ t d_{θ,t}=\frac{\partial π(a|s;θ)}{\partial θ}|θ=θ_t dθ,t=θπ(as;θ)θ=θt→(4)近似算策略梯度 g ( a t , θ t ) = q t ⋅ d θ , t g(a_t,θ_t)=q_t·d_{θ,t} g(at,θt)=qtdθ,t
→(5)更新θ: θ t + 1 = θ t + β ⋅ g ( a t , θ t ) θ_{t+1}=θ_t+β·g(a_t,θ_t) θt+1=θt+βg(at,θt)

Qπ无法计算,所以需要近似来求qt

  • reinforce:用策略网络控制先运行完整个游戏,然后记录轨迹s1,a1,r1,s2,a2,r2,……,sT,aT,rT ,利用 u t = ∑ k = t T γ k − t r k u_t=\sum^T_{k=t}γ^{k-t}r_k ut=k=tTγktrk求所有奖励的加权求和,因为 Q π ( s t , a t ) = E [ U t ] Q_π(s_t,a_t)=E[U_t] Qπ(st,at)=E[Ut],利用Ut的观测值ut来近似qt。需要先玩完一遍更新策略网络后才能计算
  • actor-critic:利用一个神经网络来求近似

Actor-Critic Methods

actor——用策略网络π(a|s;θ)来近似策略函数π(a|s),决策由策略网络做。
critic——用价值网络q(s,a;w)来近似价值函数Qπ(s,a),不做决策但是可以判断决策好坏

价值网络

Conv
Dense
Dense
concatenate
feature
feature
q
state
action
  • V ( s ; θ , w ) = ∑ a π ( a ∣ s ; θ ) ⋅ q ( s , a ; w ) V(s;θ,w)=\sum_aπ(a|s;θ)·q(s,a;w) V(s;θ,w)=aπ(as;θ)q(s,a;w)
    更新θ来让V的值增加,学习π时监督由q完成;学习q是为了让q的值更接近真实值
    更新:state→根据π(·|stt)随机抽样at→根据at有st+1和rt→TD算法更新价值网络的w→policy gradient更新策略网络的θ
    • 利用TD更新q:计算 q ( s t , a t ; w t ) q(s_t,a_t;w_t) q(st,at;wt) q ( s t + 1 , a t + 1 ; w t + 1 ) q(s_{t+1},a_{t+1};w_{t+1}) q(st+1,at+1;wt+1) → TD target y t = r t + γ q ( s t + 1 , a t + 1 ; w t + 1 ) y_t=r_t+γq(s_{t+1},a_{t+1};w_{t+1}) yt=rt+γq(st+1,at+1;wt+1) → Loss L t = 1 2 ( Q ( s t , a t ; w ) − y t ) 2 L_t=\frac{1}{2}(Q(s_t,a_t;w)-y_t)^2 Lt=21(Q(st,at;w)yt)2 → 梯度下降 w t + 1 = w t − α ∂ L t ∂ w ∣ w = w t w_{t+1}=w_t-α\frac{\partial L_t}{\partial w}|_{w=w_t} wt+1=wtαwLtw=wt
    • 策略梯度更新π:根据π(·|stt)随机抽样a → θ t + 1 = θ t + β ⋅ g ( a t , θ t ) θ_{t+1}=θ_t+β·g(a_t,θ_t) θt+1=θt+βg(at,θt)

整体过程:(1)观测到st,根据π(·|stt)随机抽样at
→(2)执行at后得到st+1和rt
→(3)随机抽样 a ^ t + 1 \hat a_{t+1} a^t+1~ π ( ⋅ ∣ s t + 1 ; θ t ) π(·|s_{t+1};θ_t) π(st+1;θt) 这个 a ^ t + 1 \hat a_{t+1} a^t+1只是为了计算q不是真实做出的动作
→(4) q t = q ( s t , a t ; w t ) q_t=q(s_t,a_t;w_t) qt=q(st,at;wt) q t + 1 = q ( s t + 1 , a t + 1 ; w t ) q_{t+1}=q(s_{t+1},a_{t+1};w_t) qt+1=q(st+1,at+1;wt)
→(5)TD error δ t = q t − ( r t + γ ⋅ q t + 1 ) δ_t=q_t-(r_t+γ·q_{t+1}) δt=qt(rt+γqt+1)
→(6)价值网络求导 d w , t = ∂ q ( s t , a t ; w ) ∂ w ∣ w = w t d_{w,t}=\frac{\partial q(s_t,a_t;w)}{\partial w}|w=w_t dw,t=wq(st,at;w)w=wt→(7)更新 w t + 1 = w t − α ⋅ δ t ⋅ d w , t w_{t+1}=w_t-α·δ_t·d_{w,t} wt+1=wtαδtdw,t
→(8)策略网络求导 d θ , t = ∂ l o g π ( a t ∣ s t ; θ ) ∂ θ ∣ θ = θ t d_{θ,t}=\frac{\partial logπ(a_t|s_t;θ)}{\partial θ}|θ=θ_t dθ,t=θlogπ(atst;θ)θ=θt→(9)更新θ: θ t + 1 = θ t + β ⋅ q t ⋅ d θ , t θ_{t+1}=θ_t+β·q_t·d_{θ,t} θt+1=θt+βqtdθ,t 也可以用 θ t + 1 = θ t + β ⋅ δ t ⋅ d θ , t θ_{t+1}=θ_t+β·δ_t·d_{θ,t} θt+1=θt+βδtdθ,t (Policy Gradient with Baseline)

TD-Learning

Sarsa

学习Qπ用的

折扣回报 U t = R t + γ R t + 1 + γ 2 R t + 2 + γ 3 R t + 3 + … … → U t = R t + γ U t + 1 U_t=R_t+γR_{t+1}+γ^2R_{t+2}+γ^3R_{t+3}+……→U_t=R_t+γU_{t+1} Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+……Ut=Rt+γUt+1
Q π ( s t ∣ a t ) = E [ R t + γ Q π ( S t + 1 ∣ A t + 1 ) ) Q_π(s_t|a_t)=E[R_t+γQ_π(S_{t+1}|A_{t+1})) Qπ(stat)=E[Rt+γQπ(St+1At+1)) 做蒙特卡洛近似

  • 表格形式Sarsa
    观测到一个transition ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st,at,rt,st+1) a t + 1 a_{t+1} at+1~ π ( ⋅ ∣ s t + 1 ; θ t ) π(·|s_{t+1};θ_t) π(st+1;θt) → TD target y t = r t + γ Q π ( S t + 1 ∣ A t + 1 ) y_t=r_t+γQ_π(S_{t+1}|A_{t+1}) yt=rt+γQπ(St+1At+1),查表格得到Qπ → TD error δ t = Q π ( s t ∣ a t ) − y t δ_t=Q_π(s_t|a_t)-y_t δt=Qπ(stat)yt → 更新 Q π ( s t ∣ a t ) ← Q π ( s t ∣ a t ) − α ⋅ δ t Q_π(s_t|a_t) ← Q_π(s_t|a_t)-α·δ_t Qπ(stat)Qπ(stat)αδt

Q-Learning

学习 Q* 用的

与Sarsa类似,TD target: y t = r t + γ ⋅ max ⁡ a Q ∗ ( s t + 1 ∣ a ) y_t=r_t+γ·\max_a Q^*(s_{t+1}|a) yt=rt+γmaxaQ(st+1a)

多智能体强化学习(MARL)

  • n agents
    有四种关系:Fully cooperative、Fully competitive、Mixed cooperative & competitive、Self-interested

  • state——S

  • Ai——i-th agents’ action

  • 状态转移函数
    p ( s ′ ∣ a 1 , ⋅ ⋅ ⋅ , a n ) = P ( S ′ = s ′ ∣ S = s , A 1 = a 1 , ⋅ ⋅ ⋅ , A n = a n ) p(s'|a^1,···,a^n)=P(S'=s'|S=s,A^1=a^1,···,A^n=a^n) p(sa1,⋅⋅⋅,an)=P(S=sS=s,A1=a1,⋅⋅⋅,An=an) ,每一个agent的动作都会影响下一个状态S’。是一个概率密度函数

  • rewards
    Ri——i-th agents’ reward。合作R相等,竞争 R 1 ∝ − R 2 R^1∝-R^2 R1R2

  • returns R t i R^i_t Rti
    Return: U t i = R t i + R t + 1 i + R t + 2 i + R t + 3 i + ⋅ ⋅ ⋅ U^i_t=R^i_t+R^i_{t+1}+R^i_{t+2}+R^i_{t+3}+··· Uti=Rti+Rt+1i+Rt+2i+Rt+3i+⋅⋅⋅
    Discounted return: U t i = R t i + γ R t + 1 i + γ 2 R t + 2 i + γ 3 R t + 3 i + ⋅ ⋅ ⋅ U^i_t=R^i_t+γR^i_{t+1}+γ^2R^i_{t+2}+γ^3R^i_{t+3}+··· Uti=Rti+γRt+1i+γ2Rt+2i+γ3Rt+3i+⋅⋅⋅ ,因此依赖于t时刻开始所有的state和action

  • Policy Network: π ( a i ∣ s ; θ i ) π(a^i|s;θ^i) π(ais;θi)

  • State-value Function
    V i ( s t ; θ 1 , ⋅ ⋅ ⋅ , θ n ) = E [ U t i ∣ S t = s t ] V^i(s_t;θ^1,···,θ^n)=E[U^i_t|S_t=s_t] Vi(st;θ1,⋅⋅⋅,θn)=E[UtiSt=st]

Convergence
Nash Equilibrium:其它所有agent不改变策略,一个agent单独改变策略无法提高回报。Multi-Agent下每个agent以最优方式运行,形成Nash均衡就算收敛

Multi-Agent通信方式

Centralized & Decentralized

Partial observation:局部观测oi≠s
Full observation:o1=···=on=s

  • Fully decentralized
    agent之间独立, π ( a i ∣ o i ; θ i ) π(a^i|o^i;θ^i) π(aioi;θi)(actor), q ( o i , a i ; w i ) q(o^i,a^i;w^i) q(oi,ai;wi)(critic),利用single-agent来算

  • Fully centralized
    central controller掌握所有agent信息并控制,agent自己无策略网络不做决策。中央训练出n个网络 π ( a i ∣ o 1 , ⋅ ⋅ ⋅ , o n ; θ i ) π(a^i|o^1,···,o^n;θ^i) π(aio1,⋅⋅⋅,on;θi) ,每个策略网络结构可能相同,但参数不一定相同,运行时agent将 o i o^i oi传给中央,中央再传决策给agent
    a= [ a 1 , a 2 , ⋅ ⋅ ⋅ , a n ] [a^1,a^2,···,a^n] [a1,a2,⋅⋅⋅,an],o= [ o 1 , o 2 , ⋅ ⋅ ⋅ , o n ] [o^1,o^2,···,o^n] [o1,o2,⋅⋅⋅,on] π ( a i ∣ o ; θ i ) π(a^i|o;θ^i) π(aio;θi)(actor), q ( o i , a ; w i ) q(o^i,a;w^i) q(oi,a;wi)(critic)

  • Centralized training with decentralized execution
    central controller只在训练时起作用,训练结束后agent自己决策

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值