强化学习笔记

Reinforcement Learning
基础概念:

  • 状态(s):State
  • 动作(a): Action
  • 策略(π): Policy ------一种函数,从当前状态选择一种动作
  • 奖励®: Reward
  • 状态更新:state transition ------从当前状态,采取相应动作,按照一定的状态更新得到下一个状态,这里的状态是整个环境的状态,而不仅仅是Agent
a
R
S
Agent
Environment

如上图所示,Agent 采取动作a,从环境处得到下一个状态S和奖励R

  • 回报(Return):cumulative future reward–未来累计奖励
     Ut= Rt + γRt+1 +γ²Rt+2+…;其中γ是自己定义的一个变量在[0,1]之间;同时Ut是随机变量

  • Action-Value Function : Q(s,a)
     Qπ(s,a) = E[U(t)|S(t) = t,A(t) = a] ----表示在采用策略π时,在当前状态s下,给动作a的打分。

  • Optimal Action-Value Function:Q*(s,a)
     Q*(s,a) = maxπ[Qπ(s,a)] —当前状态s下,给动作a的打分,和上面相比较,这里不依赖与策略函数π

  • State-Value Function : Vπ(s)
     离散:Vπ(s) = EA[Qπ(s,A)] = ∑aπ(a|st)Qπ(s,a)
     连续:Vπ(s) = EA[Qπ(s,A)] =∫ π(a|st)Qπ(s,a)da —可以指出当前状态的好坏。
       Eπ[Vπ(s)] 越大,说明策略π越好

如何用?

  1. 假设我们有π(a|s),则我们可以根据当前的状态st利用策略π计算出所有动作的概率,作简单随机抽样,选择动作。----策略学习
  2. 假设我们有Q*(s,a),则我们可以根据当前状态,对所有动作做出评价,选择评价最高的作为本次采取的动作。----价值学习

Deep-Q-Network : DQN

原理:使用神经网络近似Q*(s,a) : Q(s,a,w) ≈ Q*(s,a)

问题:如何训练DQN?–Temporal Difference(TD) Learning
 Ut = Rt +γ·Ut+1 ----根据Ut定义得到
  用 Q(st,at,w) 估计 E[Ut];
  用 Q(st+1,at+1,w) 估计 E[Ut+1]
    故 Q(st,at,w) ≈ E[Rt + γ·Q(st+1,at+1,w)]
      Prediction : Q(st,at,w)
      TD target : yt = rt + γ·Q(st+1,at+1,w) = rt + γ·maxa{Q(st+1,at+1,w)}
      Loss : Lt = 1/2 ·[Q(st,at,w)-yt
      Update : wt+1 = wt - α ·(∂Lt/∂w) -----α是学习率

TD error的一个形象解释列子:
 现在你要从北京去上海,在北京时,你现在有一个软件给出了你需要20h才能到达上海,现在你出发了。走了5h到了西安,你的软件又给出现在还需要13h才能到达上海。
 思考1:那么现在想一想,基于这次的数据,你从北京到上海需要18h,相比于20h,现在的18h更可信,为什么呢?因为这18h中,有5h是你实际花费的时间。故我们的目标是使得前后两次预测的结果一致。我们可以根据20h和18h来更新软件
 思考2:根据前后两次预测值20h,13h,我们可以计算出北京到西安的软件预测时间是8h,但是我们实际上只花费了5h,所以我们可以根据预测值8h和实际值5h来更新软件,
  虽然上述思考是两者不同的方式,但其实结论是一致的。

Policy-Based Reinforcement Learning
原理:使用神经网络代替策略函数:π(a|st;θ) 代替 π(a|st)
 离散:Vπ(s) = EA[Qπ(s,A)] = ∑aπ(a|st)Qπ(s,a)
 连续:Vπ(s) = EA[Qπ(s,A)] =∫ π(a|st)Qπ(s,a)da —可以指出当前状态的好坏。

    V(st,θ) = ∑aπ(a|st;θ)Qπ(s,a)

目标:通过学习θ,使得J(θ) = Es[V(s;θ)]最大化
更新策略:θ = θ + β·(∂V(s;θ)/∂θ)
 ∂V(s;θ)/∂θ = ∂(∑aπ(a|s;θ)Qπ(s,a))/∂θ = ∑a[ ∂(π(a|s;θ))/∂θ ·Qπ(s,a) ]
  上式 = ∑a[ π(a|s;θ) * ∂(logπ(a|s;θ))/∂θ ·Qπ(s,a)]
  上式 =EA[∂(logπ(A|s;θ))/∂θ ·Qπ(s,A)]
    令g(a’,θ) = ∂(logπ(a’|s;θ))/∂θ ·Qπ(s,a’);
    显然:EA[g(A,θ)] = ∂V(s;θ)/∂θ,又因为a’根据概率密度π(a|s;θ)随机抽样得到,故g(a’,θ)是∂V(s;θ)/∂θ的无偏估计,可以用g(a’,θ)来代替。

算法流程:
  ①得到: st;
  ②利用π(.|st,θ)得到at;
  ③计算: qt
  ④计算: dθ,t=∂(logπ(a’|s;θ))/∂θ;
  ⑤计算: g(a,θ) = qt·dθ,t;
  ⑥更新: θt+1t + β·g(a,θ)

待解决问题–第三步计算qt
  方法一:Reinforcement: 利用神经网络完成一局,记录轨迹,计算qt = Ut
  方法二:利用另一个神经网络来近似Qπ,计算qt = Qπ;见下;

Actor-Critic Methods
  Vπ(s) = EA[Qπ(s,A)] = ∑aπ(a|s)Qπ(s,a);其中π(a|s)和Qπ(s,a)都是未知的,我们使用两个神经网络来分别代替它们。
    Actor : 使用π(a|s;θ) 近似π(a|s);输入状态s,输出各个动作的可能性大小
    Critic :使用q(s,a;w)近似Qπ(s,a);输入状态s和动作a,输出实数(动作打分)
     V(s;θ;w) = ∑a[π(a|s;θ)·q(s,a;w)]

训练:更新θ;w
目标:θ参数更新的目标是使得V(s;θ;w)变大;w参数的更新目标是更好的估计return;
训练过程:当前状态st----π(a|s;θ)----->at -------->得到st+1,rt,qt----利用策略网络π计算a‘(不执行只是为了计算qt+1)---->得到qt+1------>σt = qt-(rt+γ·qt+1)----计算σ(t)的梯度---->更新w ----计算dθ,t = ∂(logπ(a’|s;θ))/∂θ---->更新θ

其中wt+1 = wt - α ·(∂σt/∂w) ; θt+1t + β·qt*dθ,t

价值网络更新 ----TD
   ①:计算qt,qt+1
   ②:TD target:yt = rt + γ·qt+1
   ③: Loss: L(w) = 1/2·(qt-yt)2
   ④: Update:wt+1 = wt-α·∂L(w)/∂w

策略网络更新 —Policy Gradient
  ①:利用网络得到动作a(随机抽样)
  ②g(a,θ) = qt·∂(logπ(a|s;θ))/∂θ;
  ③:θt+1t + β·g(a,θ);

a
s
a
a
r
q
s
Action
Environment
State
Actor
Critic

                      结构图

Q-Learning —学习Q*
  Qπ(st,at) ≈ E[Rt + γ·Qπ(St+1,At+1)]
  Qπ*(st,at) ≈ E[Rt + γ·Qπ*(St+1,At+1)]
  Q*(st,at) ≈ E[Rt + γ·Q*(St+1,At+1)]
    其中:At+1 = argmaxaQ*(St+1,a) ;   Q*(St+1,At+1) = maxaQ*(St+1,a)
   故 Q*(st,at) = E[Rt + γ·maxa Q*(St+1,a)] ≈ rt + γ·maxa Q*(St+1,a) ----TD target :yt

训练:①表格(略);②神经网络
  使用神经网络Q(s,a,w)代替Q*(s,a),输入状态s,输出所有动作的分数,at为得分最高的动作,执行该动作,得到st+1和rt,计算TD target:yt = rt + γ· maxaQ(st+1,a;w);计算TD error:σt = Q(st,at;w) - yt;更新w:wt+1 = wt - α ·σt ·∂Q(st,at;w)/∂w

Sarasa ----学习Qπ
   Ut = Rt + γ·Ut+1
   Qπ(st,at) = E[Ut|st,at] = E[Rt + γ·Ut+1|st,at] = E[Rt] +γ·[E[Qπ(St+1,At+1)]] = E[Rt +γ·Qπ(St+1,At+1)] ≈ rt+ γ·Qπ(st+1,t+1)
  目标:Qπ(st,at) 趋近于yt = rt + γ·Qπ(st+1,t+1)
训练:①表格;②神经网络
  使用神经网络代替Qπ,更新即可

Multi-step TD target

  Ut = ∑i=0m-1·(γi Rt+i ) + γm·Ut+m

m-step TD target for QL:
   yt = ∑i=0m-1·(γi rt+i ) + γm·maxaQ*(st+m,a)

m-step TD target for Sarsa:
   yt = ∑i=0m-1·(γi rt+i ) + γm·Qπ(st+m,at+m)

经验回放:

  经验:all of the transition:(st,at,rt,st+1)
  优点:经验重复利用,同时可以消除数据间的相关性。
  设置一个大小为n(通常非常大)的replay buffer 存放最新的n条transition。
  步骤:每次随机从replay buffer 中 抽取一个transition:(st,at,rt,st+1) ,计算TD error 和梯度,更新网络参数 ;(这里也会一次取多个,计算平均梯度,进行更新)

 改进: 用非随机抽样代替随机抽样,选取重要的transition;即TD error大的,优先选取。这里需要对transition改进,增加一维存放TD error;不同的抽样概率对应不同的学习率,即α = α(nPt) ----Pt 是抽样概率,β在[0,1]

解决高估问题?

  ①Target Network
    使用Q(s,a;w) 来求(st,at,rt,st+1)
    使用Q(s,a;w’) 来计算yt = rt+γ· maxaQ(St+1,a;w’)
    TD error: δt = Q(st,at,w) - yt ;
     w update: w = w - α ·δt· (∂Q(st,at,w)/∂w) ;
     w’ update: w’ 间隔一定时间等于w;或者w’ = τw +(1-τ)w’ τ在(0,1)
  ②Double DQN
    使用Q(s,a;w) 来求(st,at,rt,st+1)
    使用Q(s,a;w) 来计算a* = argmaxa{Q(St+1,a;w)}
    使用Q(s,a;w’) 来计算yt = rt+ γ· Q(St+1,a*;w’)
    TD error: δt = Q(st,at,w) - yt ;
    w update: w = w - α ·δt (∂Q(st,at,w)/∂w) ;
    w’ update: w’ 间隔一定时间等于w;或者w’ = τw +(1-τ)w’ τ在(0,1)

Dueling Network

  Q*(s,a) = maxπ{Qπ(s,a)} —评估动作a的好坏;
  V*(s) = maxπ{Vπ(s)} —评估状态s的好坏
 Optimal advantage function :   A*(s,a) = Q*(s,a)-V*(s) -----①
  定理:V*(s) = maxa{Q*(s,a) } ; 故  maxa{A*(s,a)} = 0;
  对①处理: Q*(s,a) = A*(s,a) + V*(s) - maxa{A*(s,a)}
  使用2个神经网络分别近似上述2个函数:
    A(s,a;wA) 近似A*(s,a)
    V(s;wV) 近似V*(s)
    记Q(s,a;w) = A(s,a;wA) + V(s;wV) - maxa{ A(s,a;wA)},就是要注意这里的w是wA和wV
    训练过程和DQN一模一样,见前面

策略梯度(神经网络π(s;θ)来近似策略函数)—Baseline应用

  ∂Vπ(s)/∂θ = EA{∂(logπ(A|s;θ))/∂θ ·Qπ(s,A)}
   Baseline指的是一个不依赖动作A的一个函数;
   性质:EA{∂(logπ(A|s;θ))/∂θ ·b} = 0;
   ∂Vπ(s)/∂θ = EA{∂(logπ(A|s;θ))/∂θ ·Qπ(s,A)} - EA{∂(logπ(A|s;θ))/∂θ ·b} =
      = EA{∂(logπ(A|s;θ))/∂θ ·(Qπ(s,A) - b)}
  记g(AT) = ∂(logπ(A|s;θ))/∂θ ·(Qπ(s,A) - b)
  随机抽样at服从π(.|st;θ),计算得到g(at),是策略梯度的无偏估计。可以使用g(at)代替策略梯度。其中计算g(at)时的b可以选择0或Vπ(St),下面选择Vπ(St),
  g(at) = ∂(logπ(at|st;θ))/∂θ * ( Qπ(st,at) - Vπ(St) )
    其中:Qπ(st,at) 可以用ut来近似;Vπ(St) 用神经网络v(s,w)来近似
  update:θ = θ + β ·g(at);
  update:记σt = v(st,w) - ut ;更新 w = w - α· (∂v(s,w)/∂w)· σt
   算法流程:
    ①得到一条轨迹,s1,a1,r1,s2,a2,r2,…
    ②计算出ut,σt,g(at)
    ③更新θ,w

在Actor-Critic中应用Baseline------A2C

  使用两个神经网络近似策略网络和价值网络;π(a|s;θ) 近似策略网络,v(s;w) 近似Vπ(s)
  训练过程:
    ①通过策略网络得到(st,at,rt,st+1)
    ②TD target: yt = rt + γ· v(st+1;w)
    ③TD error: σ(t) = v(st;w) - yt
    ④Update:θ = θ - β· σ(t) ·∂(logπ(at|st;θ))/∂θ
    ⑤Update:w = w - α· (∂v(s,w)/∂w) ·σt

multi-step 基本同上,在①会得到m个{(st+i,at+i,rt+i,st+i+1)} i属于[0,m-1],在②计算yt = ∑i=0irt+i} + γmv(st+m;w), 其他相同

Deterministic Policy Gradient-------- DPG -------确定性策略梯度

state s
Policy Network
action a
Value Network
value

  如上图,DPG有两个网络,分别是策略网络和价值网络,策略网络根据当前状态得到当前动作a,(这里的动作a是多维的,维度对应自由度),价值网络在根据当前状态和动作对当前动作进行打分。

使用确定性策略网络π(s;θ)----actor;
使用价值网络q(s,a;w) ----critic
价值网络参数的更新:
  首先根据(st,at,rt,st+1) ,a’t+1,计算出qt=q(st,at;w), qt+1 = q(st+1,a’t+1w)
  计算出TD error: σ(t) = qt - ( rt + γ·qt+1);
  更新w: w = w - α · σ(t) · (∂q(st,at;w)/∂w)
策略网络参数更新:
  DPG: g = ∂q(s,π(s;θ);w)/∂θ= ∂a/∂θ ·∂q(s,a,w)/∂a
  更新θ: θ=θ - β·g

上述的训练效果不是很理想;可以有以下改进:

①:使用 Target Network : 新增两个网络:q(s,a;w-)和π(s;θ-)
    其中: a’t+1 = π(st+1-); qt+1 = q(st+1,a’t+1;w-);替换上面的对应值;
    w-和θ-更新:w- = τ·w + (1-τ)·w-;   θ- = τ·θ + (1-τ)·θ-;   τ在(0,1)

②经验回放
③多步TD

随机策略梯度

思想:策略π服从一定均值u,方差σ的正态分布,我们用神经网络近似均值方差,在根据正态分布随机获取当前状态下的动作a;
假设自由度为d,则动作a也是d维的
我们用神经网络u(s,θu)来代替u(s), 神经网络p(s;θp)来代替p(s) ;其中的p(s) = lnσ2(s);

Conv
Dense
Dense
state s
feature
u
f
p
a

流程:根据状态s,分别计算出u,p,就可以根据正态分布计算出动作a

训练:  ∂Vπ(s)/∂θ = EA{∂(lnπ(A|s;θ))/∂θ ·Qπ(s,A)}
从上式我们可以知道,其实我们不需要具体的策略π,因为在计算动作a时,只是根据均值,方差在随机抽样,而现在更新的时候也是只需要策略的对数值,故

在这里插入图片描述
在这里插入图片描述
建立辅助神经网络f:其中的θ 是θp,θu组成
在这里插入图片描述
g(a) = ∂(lnπ(a|s;θ))/∂θ ·Qπ(s,a) = ∂(f(s,a;θ))/∂θ ·Qπ(s,a)

更新可以使用:
①reinforce:用ut代替Qπ(s,a) ,更新:θ = θ + β·∂(f(s,a;θ))/∂θ· ut
②actor-critic:利用神经网络q(s,a,w)来近似Qπ(s,a),更新:θ = θ + β·∂(f(s,a;θ))/∂θ·q(s,a,w),在利用TD target 更新参数w

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值