MachineLearning(6)-Daviad Silver强化学习课程脉络整理

强化学习-Daviad Silver强化学习课程脉络整理

  • 1.lecture1 introduction
    • 1.1 强化学习简介
    • 1.2 强化学习类别
    • 1.3 强化学习的主要问题
  • 2.lecture2 Markov Decision Process
    • 2.1 MP,MRP,MDP
    • 2.2 Bellman Eqution--贝尔曼方程
    • 2.3 Bellman Eqution--贝尔曼期望方程
    • 2.4 最优策略
    • 2.5 最优值函数
    • 2.6 Bellman Optimal Equation
  • 3 lecture3 Planning by Dynamic Programming
    • 3.1 策略迭代估计->策略改进
    • 3.2 价值迭代--找最优策略
  • 4.lecture4 Model Free Prediction
  • 5.lecture5 Model Free Control
    • 5.1 SARSA
    • 5.2 Q-learning
  • 6. Value Function Approximation
    • 6.1 DQN-Deep Q learning
  • 7.lecture7 Policy Gradient
    • 7.1 Actor and Critics

1.lecture1 introduction

1.1 强化学习简介

强化学习是机器学习的一个分支,没有监督信号判断学习的好坏,只有reward 信号引导学习过程。

强化学习的目标是:学习一个决策策略,使得agent与环境交互所获得的累计奖励最大。

强化学习基本要素
Agent决策智能体,主要完成在环境中处于某一状态下动作决策,策略是可以学习的。
Reward-RtR_tRtt时刻的奖励,标量,用于反映agent t时刻动作的优劣(长期奖励的一个衡量)
Enviroment环境,接收Agent的动作,依据物理特性状态转换(转换是不受Agent控制的),并反馈给agent 一个RtR_tRt
State状态信息:环境状态(一般不可用),agent 状态(强化学习算法可以使用的状态)

老鼠训练的例子:agent状态表示不同,依据统计规律得出的预测也不同补图
环境状态和agent 状态的区别:

Agent 主要成分
stateagent 状态-强化学习算法可以使用的状态,
actionagent的在每一个状态下能够执行的动作(走子,浇水)
policy状态到动作的映射:确定策略a=π(s)a=\pi(s)a=π(s)、不确定策略π(a∣s)=P[A=a∣St=s]\pi(a|s)=P[A=a|S_t=s]π(as)=P[A=aSt=s]
value function评价当前状态的优劣(对未来奖励的预测),是基于策略的
model状态转移概率:Ps,s′a=P[St+1∣St=s,At=a]P_{s,s'}^a=P[S_{t+1}|S_t=s,A_t=a]Ps,sa=P[St+1St=s,At=a]、奖励:Rsa=E[Rt+1∣St=s,At=a]R_s^a=E[R_{t+1}|S_t=s,A_t=a]Rsa=E[Rt+1St=s,At=a]

1.2 强化学习类别

分类1

value based无策略函数,策略由价值函数VπV_{\pi}Vπ 间接得到(贪心策略?)
policy based动作由策略函数决定,没有VπV_{\pi}Vπ
Actor-critic策略函数与价值函数同时存在,两者结合

分类2

model based环境模型已知道,状态转移概率,奖励函数
model free环境模型未知

model 是环境物理规律的建模,model常常不事先已知,需要agent基于历史信息对model进行建模,这种情况下的强化学习为 model free learning。

1.3 强化学习的主要问题

主要问题1
学习环境未知,agent不知道环境如何工作,agent通过与环境进行交互,逐渐改善其行为策略。
规划环境如何工作对于agent是已知或近似已知的,agent并不与环境发生实际的交互,而是利用其构建的模型进行计算,在此基础上改善其行为策略。
主要问题2
探索
利用
主要问题3
预测给定MDP+策略 求状态价值
控制给定MDP,求最优价值函数V

2.lecture2 Markov Decision Process

2.1 MP,MRP,MDP

三大过程
Markov Process<P,S> ,马尔可夫状态转移图
Markov Reward Process<P,S,R,γ\gammaγ> ,马尔可夫状态转移图+边权RsR_sRs
Markov Decision Process<P,S,A,R,γ\gammaγ>,马尔可夫状态转移图+边权(Rs+a)(R_s+a)(Rs+a)

状态的马尔可夫性质:某一状态包含了所有相关的历史信息,可以决定未来。(下一时刻的状态完全由本时刻的状态决定)

MRP关键概念
S状态空间–agent所有状态的集合(s1,s2,s3,....sns_1,s_2,s_3,....\,s_ns1,s2,s3,....sn)
ps,s′p_{s,s'}ps,s状态转移矩阵–其中的元素为 ps,s′=p[st+1∣St=s]p_{s,s'}=p[s_{t+1}|S_t=s]ps,s=p[st+1St=s]
RsR_sRs某一状态s在下一个时刻能够获得的奖励的期望值 Rs=E[Rt+1∣St=s]R_s=E[R_{t+1}|S_t=s]Rs=E[Rt+1St=s]
γ\gammaγ衰减系数–后续经历状态的奖励对于当前return的呈现衰减影响
GtG_tGtreturn 收益/回报 --(一条马尔可夫链)从t 时刻开始所有RtR_tRt的衰减总和
V(s)价值函数–某一状态/动作的长期价值 V(s)=E[Gt∣St=s]V(s)=E[G_t|S_t=s]V(s)=E[GtSt=s] ,从s出发的所有链条的GtG_tGt的期望

RsR_sRs 确定到达这个状态他就能获得的一个奖励,不管后续去了哪里,那就是下一个状态需要关系的事情了,RsR_sRs一般未知,我们只能收到环境给的RtR_tRt的反馈,类似于k 摇臂赌博机中每个摇臂的期望奖励是RsR_sRs,每次反馈的奖励是RtR_tRt

MDP关键概念
S状态空间–agent所有状态的集合(s1,s2,s3,....sns_1,s_2,s_3,....\,s_ns1,s2,s3,....sn)
A动作空间–agent所有状态的集合(a1,a2,a3,....ama_1,a_2,a_3,....\,a_ma1,a2,a3,....am)
ps,s′ap_{s,s'}^aps,sa元素为 ps,s′a=p[st+1∣St=s,At=a]p_{s,s'}^a=p[s_{t+1}|S_t=s,A_t=a]ps,sa=p[st+1St=s,At=a]
RsaR_s^aRsaRsa=E[Rt+1∣St=s,At=a]R_s^a=E[R_{t+1}|S_t=s,A_t=a]Rsa=E[Rt+1St=s,At=a]
Rt+1R_{t+1}Rt+1t->t+1状态转换带来的reward
π\piπ概率集合/概率分布函数 : π(a∣s)\pi(a|s)π(as)

π(a∣s)\pi(a|s)π(as) 给定a, 不同的s会构成一个概率密度函数,找一个s使π(a∣s)\pi(a|s)π(as)最大。==好像没啥用 ==

π(a∣s)\pi(a|s)π(as)给定s,不同的a会构成一个概率密度函数,找一个a使π(a∣s)\pi(a|s)π(as)最大。状态s下最有可能的动作选择

策略相关的概念涉及到策略就是要对动作求期望
ps,s′πp^{\pi}_{s,s'}ps,sπ策略π\piπ下,状态s->s’的状态转移概率: ps,s′π=∑a∈Aπ(a∣s)ps,s′ap^{\pi}_{s,s'}=\sum_{a\in A}\pi(a|s)p_{s,s'}^aps,sπ=aAπ(as)ps,sa
RsπR_s^{\pi}Rsπ策略π\piπ下,状态s 的reward: Rsπ=∑a∈Aπ(a∣s)RsaR^{\pi}_{s}=\sum_{a\in A}\pi(a|s)R^a_sRsπ=aAπ(as)Rsa
Vπ(s)V_{\pi}(s)Vπ(s)策略π\piπ下,状态s 的价值: vπ(s)=Eπ[Gt∣St=s]v_{\pi}(s)=E_\pi [G_t|S_t=s]vπ(s)=Eπ[GtSt=s]
qπ(s,a)q_{\pi}(s,a)qπ(s,a)策略π\piπ下,状态s 的动作价值: qπ(s,a)=Eπ[Gt∣St=s,At=a]q_{\pi}(s,a)=E_\pi[G_t|S_t=s,A_t=a]qπ(s,a)=Eπ[GtSt=s,At=a]

ps,s′πp^{\pi}_{s,s'}ps,sπ:策略π\piπ 下的状态转移概率:状态sss下可选的动作有很多个,各个动作转向s′s's 的概率相加。无法直接在马尔可夫图上表示出来吧

Vπ(s)V_{\pi}(s)Vπ(s) 基于策略π\piπ下状态s的策略价值函数,为从状态s出发,能获得回报GtG_tGt的期望(GtG_tGt是通过 策略π\piπ产生的马尔可夫链求期望得出)。

qπ(s,a)q_{\pi}(s,a)qπ(s,a)Vπ(s)V_{\pi}(s)Vπ(s) 就相差一个在特定动作下,所以可以通过对qπ(s,a)q_{\pi}(s,a)qπ(s,a)求期望,得到Vπ(s)V_{\pi}(s)Vπ(s)

单步奖励-reward, 长期价值-value.

2.2 Bellman Eqution–贝尔曼方程

V(s)−GtV(s)-G_tV(s)Gt的迭代关系–只涉及到MRP,没有动作空间

v(s)=E[Rt+1+γRt+2+γ2Rt+3+....∣St=s]=E[Rt+1∣St=s]+γE[Rt+2+γRt+3+...∣St=s]=E[Rt+1∣St=s]+γE[Gt+1∣St=s](0)v(s)=E[R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+....|S_t=s]\\ =E[R_{t+1}|S_t=s]+\gamma E[R_{t+2}+\gamma R_{t+3}+...|S_t=s]\\ =E[R_{t+1}|S_t=s]+\gamma E[G_{t+1}|S_t=s]\tag{0}v(s)=E[Rt+1+γRt+2+γ2Rt+3+....∣St=s]=E[Rt+1St=s]+γE[Rt+2+γRt+3+...∣St=s]=E[Rt+1St=s]+γE[Gt+1St=s](0)

第二部分收获的期望,等于收获期望的期望,不是很明白
v(s)=Rs+γE[v(St+1)∣St=s](1)v(s)=R_s+\gamma E[v(S_{t+1})|S_t=s]\tag{1}v(s)=Rs+γE[v(St+1)St=s](1)

St+1S_{t+1}St+1下一时刻的状态,依据下一时刻状态分布求其期望:
v(s)=Rs+γ∑s′∈Spss′v(s′)(2)v(s)=R_s+\gamma \sum_{s'\in S}p_{ss'}v(s')\tag{2} v(s)=Rs+γsSpssv(s)(2)

写成矩阵的形式可以解析求解v:
V=R+γPV=>V=(I−γP)−1RV=R+γPV=>V=(I−γP)−1R(3)V=R+\gamma PV\\=>V=(I-\gamma P)^{-1}RV=R+\gamma PV\\=>V=(I-\gamma P)^{-1}R\tag{3} V=R+γPV=>V=(IγP)1RV=R+γPV=>V=(IγP)1R(3)

2.3 Bellman Eqution–贝尔曼期望方程

在策略π\piπ下的贝尔曼方程
vπ(s)=E[Rt+1+γvπ(St+1)∣St=s](4)v_\pi(s)=\mathbb{E}[R_{t+1}+\gamma v_{\pi}(S_{t+1})|S_t=s]\tag{4}vπ(s)=E[Rt+1+γvπ(St+1)St=s](4)

qπ(s,a)=E[Rt+1+γvπ(St+1)∣St=s,At=a](5)q_\pi(s,a)=\mathbb{E}[R_{t+1}+\gamma v_{\pi}(S_{t+1})|S_t=s,A_t=a]\tag{5}qπ(s,a)=E[Rt+1+γvπ(St+1)St=sAt=a](5)

两者之间的递推公式
vπ(s)=∑a∈Aπ(a∣s)qπ(s,a)(6)v_{\pi}(s)=\sum_{a\in A}\pi(a|s)q_\pi(s,a)\tag{6}vπ(s)=aAπ(as)qπ(s,a)(6)

qπ(a,s)=Rsa+γ∑s′∈SPss′avπ(s′)(7)q_\pi(a,s)=R_s^a+\gamma \sum_{s'\in S}P^a_{ss'}v^\pi(s')\tag{7}qπ(a,s)=Rsa+γsSPssavπ(s)(7)

引入动作后,状态价值v(s)与动作挂钩,现下的动作价值q(a,s) 通过 动作状态转移Pss′aP^a_{ss'}Pssa 和下一个时刻的 状态价值v(s’) 计算

2.4 最优策略

策略π\piπ的所有状态价值都大于该状态在其他策略下的价值。策略是一个离散的动作概率集合,调整动作概率选择,就可以达到最优策略。最优策略可能不止一个,所有最优策略具有相同的价值很函数和动作价值函数。
π>=π′ifvπ(s)>=vπ′(s),∀s(8)\pi>=\pi'\ \ if\ \ v_\pi(s)>=v_{\pi'}(s),\forall s\tag{8}π>=π  if  vπ(s)>=vπ(s),s(8)

最优策略求解:选择/求解 最大化行为价值函数对应的动作(在状态s下该执行什么动作)。最优策略下只有一个动作会被执行,即π∗(a∣s)=1\pi_*(a|s)=1π(as)=1, 其余动作出现的概率则为0,则最优的状态价值 = 最优策略下动作价值。
π∗(a∣s)=1ifa=arg⁡max⁡a∈Aq∗(s,a)else0(9)\pi_*(a|s)=1\ \ if \ \ a=\arg \max_{a\in A}q_*(s,a) \ \ else \ \ 0\tag{9}π(as)=1  if  a=argaAmaxq(s,a)  else  0(9)

2.5 最优值函数

状态s的最优价值函数:状态s 在所有策略下价值函数的最大值。(最优策略对应的价值/动作价值函数,最优策略的定义)
v∗(s)=max⁡πvπ(s)(10)v_*(s)=\max_{\pi}v_\pi(s)\tag{10}v(s)=πmaxvπ(s)(10)

最优动作状态值函数所有策略在该状态该动作下价值的最大值
q∗(s,a)=max⁡πqπ(s,a)(11)q_*(s,a)=\max_{\pi}q_\pi(s,a)\tag{11}q(s,a)=πmaxqπ(s,a)(11)

2.6 Bellman Optimal Equation

最优状态价值 :一个状态的最优价值= 最优策略π\piπ下,从状态sss出发可采取的所有行为aaa,行为价值最大值。
v∗(s)=max⁡πmax⁡aqπ(s,a)=max⁡aq∗(s,a)(12)v_*(s)=\max_{\pi}\max_{a}q_{\pi}(s,a)=\max_a q_*(s,a)\tag{12} v(s)=πmaxamaxqπ(s,a)=amaxq(s,a)(12)

最优行为价值函数,定义式:
qπ(a,s)=Rsa+γ∑s′∈SPss′avπ(s′)(13)q_\pi(a,s)=R_s^a+\gamma \sum_{s'\in S}P^a_{ss'}v^\pi(s')\tag{13}qπ(a,s)=Rsa+γsSPssavπ(s)(13)

式子(12)带入定义式:
q∗(s,a)=Rsa+γ∑s′∈Spss′amax⁡a′q∗(s′a′)(14)q_{*}(s,a)=R_s^a+\gamma \sum_{s'\in S} p^a_{ss'} \max_{a'}q_*(s'a')\tag{14} q(s,a)=Rsa+γsSpssaamaxq(sa)(14)
两者之间的迭代关系

3 lecture3 Planning by Dynamic Programming

已知:模型(P已知)+策略
求解:该策略价值函数、最优策略价值函数

DP–RL
DP最优子问题(递归求解-自顶向下递归,自底向上递归)+子问题重复出现(tabel 记录)
RLBellman方程提供了递归求解表达式

1)递归表达式(状态转移方程):qπ(a,s)=Rsa+γ∑s′∈SPss′avπ(s′)q_\pi(a,s)=R_s^a+\gamma \sum_{s'\in S}P^a_{ss'}v^\pi(s')qπ(a,s)=Rsa+γsSPssavπ(s)

2)更新(table)V(s) : v∗(s)=max⁡aq∗(s,a)v_*(s)=\max_a q_*(s,a)v(s)=maxaq(s,a)

3.1 策略迭代估计->策略改进

Step1: 策略迭代估计-- 给定策略下迭代更新价值函数,利用(12)式贝尔曼期望方程来更新。
vk+1(s)=∑a∈Aπ(a∣s)[Rsa+γ∑s′∈SPss′avk(s′)](15)v_{k+1}(s)=\sum_{a\in A}\pi(a|s)[R^a_s+\gamma \sum_{s'\in S}P^a_{ss'}v_k(s')]\tag{15} vk+1(s)=aAπ(as)[Rsa+γsSPssavk(s)](15)

其中vk(s′)v_k(s')vk(s) 为t = k时的状态价值。

Step2: 策略改进–在当前策略下选取使后继状态价值增加的行为–动作选择

3.2 价值迭代–找最优策略

(不需要策略)

通过(22)式贝尔曼最优方程来求解
v∗(s)=max⁡a∈A(Rsa+γ∑s′∈SPss′av∗(s′))(16)v_{*}(s)=\max_{a\in A}(R^a_s+\gamma\sum_{s'\in S}P^a_{ss'}v_{*}(s'))\tag{16} v(s)=aAmax(Rsa+γsSPssav(s))(16)
v∗(s′)v_{*}(s')v(s)为下一个时刻状态的最优值,认为上一步的v是v∗v_*v,max 的过程在进行动作选择

全部是迭代计算。

4.lecture4 Model Free Prediction

条件:模型未知(P未知)
估计:该策略价值函数、最优策略价值函数

本章需要回顾的一些公式:

1)采样数据x1,x2,...xn,....x_1,x_2,...x_n,....x1,x2,...xn,....均值的在线更新公式(如下)。作用–用新的采样值xkx_kxk更新均值μk−1\mu_{k-1}μk1
μk=1k∑i=1kxk=1k(xk+∑i=1k−1xi)=1k(xk+(k−1)μk−1)=μk−1+1k(xk−μk−1)(17)\mu_k=\frac{1}{k}\sum_{i=1}^{k}x_k\\=\frac{1}{k}(x_k+\sum_{i=1}^{k-1}x_i)\\=\frac{1}{k}(x_k+(k-1)\mu_{k-1})\\=\mu_{k-1}+\frac{1}{k}(x_k-\mu_{k-1})\tag{17}μk=k1i=1kxk=k1(xk+i=1k1xi)=k1(xk+(k1)μk1)=μk1+k1(xkμk1)(17)

2)价值函数的定义式:V(st)=E[Gt∥St=s]V(s_t)=E[G_t\|S_t=s]V(st)=E[GtSt=s]

3)GtG_tGt的衰减和定义式子:Gt=Rt+1+γRt+2+γ2Rt+3,...,G_t=R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3,...,}Gt=Rt+1+γRt+2+γ2Rt+3,...,

4)贝尔曼方程递归求解价值函数:V(st)=Rs+γV(st+1)V(s_t)=R_s+\gamma V(s_{t+1})V(st)=Rs+γV(st+1)

4.1 蒙特卡洛学习–完全采样

在给定策略下,从一系列完整的Episode 中估计得到所有状态的价值函数。
(核心:状态价值 使用采样Episode均值估计,而非所有的全Episode期望计算)
(完全说的是Episode是一条完整的链子)

增量式蒙特卡洛更新:
N(st)=N(st)+1v(st)=v(st)+1N(st)(Gt−V(st))(18)N(s_t)=N(s_t)+1\\ v(s_t)=v(s_t)+\frac{1}{N(s_t)}(G_t-V(s_t))\tag{18}N(st)=N(st)+1v(st)=v(st)+N(st)1(GtV(st))(18)

其中,GtG_tGt需要通过一条完整的Episode。

不明白1N(st)\frac{1}{N(s_t)}N(st)1只是用α\alphaα来表示,还是就使用一个固定的α\alphaα

4.2 时序差分TD(n)–不完全采样

在给定策略下,从一系列不完整的Episode 中估计得到所有状态的价值函数。
主要区别:3)式更新式中的GtG_tGt的近似求解:
Gt=Rt+1+γRt+2+γ2Rt+3,...,≈Gt(n)=Rt+1+...+γnV(st+n)G_t=R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3,...,}\approx G_t^{(n)}=R_{t+1}+...+\gamma ^n V(s_{t+n})Gt=Rt+1+γRt+2+γ2Rt+3,...,Gt(n)=Rt+1+...+γnV(st+n)

其中,V(st+1)V(s_{t+1})V(st+1)下一状态st+1s_{t+1}st+1价值的非精确求解。

增量式时序差分更新:
N(st)=N(st)+1v(st)=v(st)+1N(st)(Rt+1+γV(st+1)−V(st))(18)N(s_t)=N(s_t)+1\\ v(s_t)=v(s_t)+\frac{1}{N(s_t)}(R_{t+1}+\gamma V(s_{t+1})-V(s_t))\tag{18}N(st)=N(st)+1v(st)=v(st)+N(st)1(Rt+1+γV(st+1)V(st))(18)

Rt+1+γV(st+1)R_{t+1}+\gamma V(s_{t+1})Rt+1+γV(st+1)称为TD target, Rt+1+γV(st+1)−V(st)R_{t+1}+\gamma V(s_{t+1})-V(s_t)Rt+1+γV(st+1)V(st)称为TD error。

依据GtG_tGtRt+iR_{t+i}Rt+i的计算步长,TD算法可以分为TD(n)算法,TD(n)算法表示n+1步return 计算。

4.3 TD(λ\lambdaλ)

结合蒙特卡洛更新和时序差分更新的优点,融合不同的n步return。
Gtλ=(1−λ)∑n=1∞λn−1GtnG_t^{\lambda}=(1-\lambda)\sum_{n=1}^{\infty}\lambda^{n-1}G_t^{n}Gtλ=(1λ)n=1λn1Gtn

TD(λ\lambdaλ)前向更新式(理论计算):
v(st)=v(st)+α(Gtλ−V(st))(18)v(s_t)=v(s_t)+\alpha(G_t^{\lambda}-V(s_t))\tag{18}v(st)=v(st)+α(GtλV(st))(18)

TD(λ\lambdaλ)反向更新式(实际计算)–引入效用迹的概念,没有很明白:
δt=Rt+1+γV(st+1)−V(st)v(st)=v(st)+αδtEt(s)\delta_t=R_{t+1}+\gamma V(s_{t+1})-V(s_t)\\ v(s_t)=v(s_t)+\alpha \delta_t E_t(s) δt=Rt+1+γV(st+1)V(st)v(st)=v(st)+αδtEt(s)

一个状态的效用:Et(s)=γλEt−1(s)+1(st=s)E_t(s)=\gamma \lambda E_{t-1}(s)+1(s_t=s)Et(s)=γλEt1(s)+1(st=s)

5.lecture5 Model Free Control

条件:模型未知(P未知)
估计:该策略价值函数、最优策略价值函数 (基于贪心策略来进行一些改进)

不基于模型的两种策略
on policy learning基于已有策略,更新价值,改进策略sarsa
off policy learning基于先验策略μ\muμ,更新价值,改进策略π\piπQ-learning

5.1 SARSA

给定s --> 依据π产生a --> 环境反馈r,状态转换s’ --> 继续依据π产生a’ --> 计算Q(s’,a’) --> 更新q(s,a)

Q(s,a)<−Q(s,a)+α(R+γQ(s′,a′)−Q(s,a))Q(s,a)<-Q(s,a)+\alpha (R+\gamma Q(s',a')-Q(s,a))Q(s,a)<Q(s,a)+α(R+γQ(s,a)Q(s,a))

5.2 Q-learning

给定s --> 依据μ\muμ产生a --> 环境反馈r,状态转换s’ --> 依据π产生a’ --> 计算Q(s’,a’) --> 更新q(s,a)

Q(s,a)<−Q(s,a)+α(R+γQ(s′,a′)−Q(s,a))Q(s,a)<-Q(s,a)+\alpha (R+\gamma Q(s',a')-Q(s,a))Q(s,a)<Q(s,a)+α(R+γQ(s,a)Q(s,a))

μ=ϵ−greedy\mu=\epsilon - greedyμ=ϵgreedy
π=greedy\pi = greedyπ=greedy
本质:在状态s下,依据μ=ϵ−greedy\mu=\epsilon - greedyμ=ϵgreedy策略得到的行为a,可计算Q值,并将其朝着 s’ 状态下具有最大的Q值方向做一定比例的更行新。(因为用的时greedy 策略)

可以使得ϵ−greedy\epsilon - greedyϵgreedy最终变成一个更优策略,但是

6. Value Function Approximation

6.1 DQN-Deep Q learning

用神经网络计算Q值,目标让Qθ(s,a)Q_{\theta}(s,a)Qθ(s,a)和(sars’a’)计算出来的r+γmax⁡Q(s′,a′)r+\gamma \max Q(s',a')r+γmaxQ(s,a)的误差平法和最小,优化参数θ\thetaθ使得Q值计算准确。

DQN 算法要点:
1.依据ϵ−greedy\epsilon-greedyϵgreedy策略产生t时刻的行为
2.将大量的经历数据(st,at,rt+1st+1)(s_t,a_t,r_{t+1}s_{t+1})(st,at,rt+1st+1)存在内存里
3.从经历数据中随机抽取mini-batch(s,a,r,a′)(s,a,r,a')(s,a,r,a)
4.维护两个神经网络:net1,net2,一个网络固定参数用来产生目标值,另一个用来评估策略。更新参数
L(w)=Es,s,r,s′[(Q(s,a∣w)−(r+γmax⁡a′Q(s′,a′∣w−)))]L(w)=\mathbb{E}_{s,s,r,s'}[(Q(s,a|w)-(r+\gamma \max_{a'}Q(s',a'|w^-)))]L(w)=Es,s,r,s[(Q(s,aw)(r+γamaxQ(s,aw)))]

其中www在一个mini-batch中更新,w−w^-w为上一轮更新的参数。

7.lecture7 Policy Gradient

直接将策略参数化为状态和行为的函数, 利用累计奖励最大化来训练策略参数。
重要概念:似然比
∇θπθ(s,a)=πθ(s,a)∇θπθ(s,a)πθ(s,a)=πθ(s,a)∇θlog⁡πθ(s,a)\nabla_{\theta}\pi_{\theta}(s,a)=\pi_{\theta}(s,a)\frac{\nabla_{\theta}\pi_{\theta}(s,a)}{\pi_{\theta}(s,a)}=\pi_{\theta}(s,a) \nabla_{\theta}\log\pi_{\theta}(s,a)θπθ(s,a)=πθ(s,a)πθ(s,a)θπθ(s,a)=πθ(s,a)θlogπθ(s,a)

7.1 Actor and Critics

Actor and Critics 算法出发点:相对准确估计状态价值,来指导策略更新。

1.在A-C算法中用critic来估计行为价值:
Qw(s,a)≈Qπθ(s,a)Q_w(s,a)\approx Q^{\pi_{\theta}}(s,a)Qw(s,a)Qπθ(s,a)

2.在A-C算法中用actor执行策略πθ\pi_{\theta}πθ,使得critic估计的行为价值计算的累计回报最大:(对所有的s求期望)

J=E[Q(s0,a)]=∑s∑aπ(a∣s)Q(s,a)J=\mathbb{E}[Q(s_0,a)]=\sum_{s}\sum_{a}\pi(a|s)Q(s,a)J=E[Q(s0,a)]=saπ(as)Q(s,a)

策略更新梯度:
∇πJ=∑s∇θlog⁡πθ(s,a)Qw(s,a)\nabla_{\pi}J=\sum_{s}\nabla_{\theta}\log\pi_{\theta}(s,a)Q_w(s,a)πJ=sθlogπθ(s,a)Qw(s,a)

a2c:advantage 的概念

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lua的VS或者VC环境的搭建调试

安装完LuaForWindows_v5.1.4 打开vs tools->options->projects->directories executable files 选项添加lua安装以后的路径,我的是 C:\Program Files\Lua\5.1 include files选项添加lua include路径,我的是 C:\Program Files\Lua\5.1include library files 选项添…

leecode53 最大子序列和

给定一个整数数组 nums &#xff0c;找到一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大&#xff0c;为 6。 思路&#xff1a;…

在页游中LUA的应用(1)

通常,你希望在你的游戏开始的时候读取一些信息,以配置你的游戏,这些信息通常都是放到一个文本文件中,在你的游戏启动的时候,你需要打开这个文件,然后解析字符串,找到所需要的信息。 或许你认为这样就足够了,为什么还要使用Lua呢? 应用于“配置”这个目的,Lua提供给你…

Github(3)-本地文件管理

使用github 托管代码简单使用教程--本地文件管理1.基本概念2.本地文件管理2.1 git add2.2 git status2.3 git commit2.3 git log2.5 git reset --hard 版本回退2.6 git reflog2.7 git diff2.8 git checkout --file 工作区文件恢复2.9 git rm 删除版本库里的文件廖雪峰老师博文学…

linux 中阻塞与非阻塞 同步与异步

简单点说: 阻塞就是干不完不准回来&#xff0c; 非阻塞就是你先干&#xff0c;我先看看有其他事没有&#xff0c;完了告诉我一声。 我们拿最常用的send和recv两个函数来说吧。比如你调用send函数发送一定的Byte,在系统内部send做的工作其实只是把数据传输(Copy)到TCP/IP协议栈…

leecode62 不同路径

示例 1: 输入: m 3, n 2 输出: 3 解释: 从左上角开始&#xff0c;总共有 3 条路径可以到达右下角。 1. 向右 -> 向右 -> 向下 2. 向右 -> 向下 -> 向右 3. 向下 -> 向右 -> 向右 示例 2: 输入: m 7, n 3 输出: 28 思路&#xff1a;太过于简单&#xf…

数据库的查询优化建议整理

从大多数数据库应用系统的实例来看,查询操作在各种数据库操作中所占据的比重最大,而查询操作所基于的SELECT语句在SQL语句中又是代价最大的语句。 查询语句(SELECT)的优化建议 (1)、合理使用索引:where子句中变量顺序应与索引字键顺序相同。 如:create index test_idx…

Github(4)-远程操作

使用github 托管代码简单使用教程--远程操作3.连接本地仓库与远程仓库3.1 git clone 克隆实现链接3.2 git remote add origin4.远程操作4.1 git checkout -b 切换分支14.2 git branch 查看分支4.3 git merge 合并分支4.3.1 step1&#xff1a;切换成主分支4.3.2 step2&#xff1…

leetcode64 最小路径和

给定一个包含非负整数的 m x n 网格&#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示例: 输入: [ [1,3,1], [1,5,1], [4,2,1] ] 输出: 7 解释: 因为路径 1→3→1→1→1 的总…

online游戏服务器架构--网络架构

启动&#xff1a;父进程启动&#xff1b;子进程启动&#xff1b;网络架构。 每个父进程携带N个子进程&#xff0c;子进程负责处理业务逻辑和其它数据&#xff0c;而父进程只是将客户端的请求路由到各个子进程&#xff0c;路由的策略非常简单&#xff0c;父进程将请求包按照轮流…

online游戏服务器架构—用户登录数据组织 .

sprite_t类型的数据结构是核心数据结构&#xff0c;每一个登录用户对应一个&#xff0c;它的初始化在用户登录的时候&#xff0c;此后一直到用户退出或者离线一直保存在系统内存当中&#xff0c;在此过程中该sprite_t数据结构被保存在两个哈希表当中&#xff0c;一个是以用户的…

leetcode300 最长上升子序列

经典题&#xff0c;不解释&#xff0c;可以看我之前文章。 普通dp public class Solution {public int lengthOfLIS(int[] nums) {if (nums.length 0) {return 0;}int[] dp new int[nums.length];dp[0] 1;int maxans 1;for (int i 1; i < dp.length; i) {int maxval …

Github(5)-开源开发-常见错误

使用github 托管代码简单使用教程--开源开发-常见错误5. github开源开发6. 报错log6.1 fatal: remote origin already exists.6.2 There is no tracking information for the current branch.6.标签管理廖雪峰老师博文学习笔记&#xff1a;https://www.liaoxuefeng.com/wiki/89…

online游戏服务器架构--数据库及事件相关 .

Online服务器的第三部分就是数据层&#xff0c;send_request_to_db开始了数据层的处理逻辑&#xff1a; int send_request_to_db(int cmd, sprite_t* p, int body_len, const void* body_buf, uint32_t id)&#xff1b; 在该函数里首先以懒惰的方式连接数据库服务器&#xff…

leecode5 最长回文子串

给定一个字符串 s&#xff0c;找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1&#xff1a; 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2&#xff1a; 输入: "cbbd" 输出: "bb"…

libxml解析xml文件的一些总结

libxml -- 解析 XML 文档XML 介绍&#xff1a;XML 和 DOMlibxml 介绍 数据类型 — xmlChar数据结构 创建 XML 文档解析 XML 文档修改 xml 文档Xpath — 处理大型 XML 文档libxml2 库函数要注意的函数读取 xml 文件xml 操作基本结构及其指针类型根节点相关函数 创建子节点相关函…

Linux(7)-正则表达式

正则表达式demo1:在某个文件中寻找命令seddemo2:寻找8位电话号码正则表达式&#xff1a;用来描述或者匹配某一系列符合某个句法队则的字符串或者单个字符串。最初正则表达式&#xff0c;出现在自动控制理论和形式化语言理论中。 Linux 中 find grep sed ls命令都支持正则表达式…

服务器端开发的一些建议

摘要: 本文作为游戏服务器端开发的基本大纲&#xff0c;是游戏实践开发中的总结。第一部分专业基础&#xff0c;用于指导招聘和实习考核&#xff0c; 第二部分游戏入门&#xff0c;讲述游戏服务器端开发的基本要点&#xff0c;第三部分服务端架构&#xff0c;介绍架构设计中的一…

leetcode63 不同路径II

一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为“Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为“Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角到右下角将…

小谈Online-game服务器端设计(1、2)

谈这个话题之前&#xff0c;首先要让大家知道&#xff0c;什么是服务器。在网络游戏中&#xff0c;服务器所扮演的角色是同步&#xff0c;广播和服务器主动的一些行为&#xff0c;比如说天气&#xff0c;NPC AI之类的&#xff0c;之所以现在的很多网络游戏服务器都需要负担一些…