1. States and Observations
state
是对word
的描述,是完整的;observation
是对state
的描述,是不完整的。他们都用一种real_valued向量、矩阵或者更高阶的tensor来表述。比如,可观测状态可以表示成RGB矩阵,机器人的状态可以表示成关节的角度和速度
2. Action Spaces
给定环境下的动作集合,分为离散的(棋类游戏)和连续的(机器人)。
3. Policies
帮助agent
决定采取哪种action
,可以是确定的,也可以是随机的。前者通常用 μ表示,后者用 π 表示.由于policy
就是agent
最重要的部分,所以可以将二者视为等价,所以在表示方法上,也可以用变量a
来替代p
。
某一时刻下的确定性策略可以表示为:
at=μ(st)
某一时刻下的随机性策略可以表示为:
at∼π(⋅∣st)
在深度学习中,所有的策略是有参数的。策略可以看做是一个函数的映射过程,需要依赖一组参数才能得到一个结果,指导agent
进行某种行动,这里的参数类似于神经网络的神经元。不断调参可以获得最佳结果,所以策略是依赖于参数的,我们用θ 或者 ϕ来进行下标表示。
atat=μθ(st)∼πθ(⋅∣st)
3.1 确定性的策略(Deterministic Policies)
连续动作空间下的TensorFlow的例子
obs = tf.placeholder(shape=(None, obs_dim), dtype=tf.float32)
net = mlp(obs, hidden_dims=(64, 64), activation=tf.tahn)
actions = tf.layers.dense(net, units=act_dim, activation=None)
贪婪策略是一个确定性的策略、只在动作值函数最大的动作以概率为1的机率选择,其他动作以概率0选择。
π∗(a∣s)={10 if a=argmaxq∗(s,a) if else
3.2 随机性的策略
ϵ−greedy策略是强化学习常用的随机策略。以比较大的概率选择动作值函数的最大的动作,以比较小的概率选择的其他动作,保证了探索性。
其他还有高斯策略、玻尔兹曼策略等。
4. Trajectories
用 τ 表示,又称为episodes
或者 rollouts
.就是一系列的状态和策略,
τ=(s0,a0,s1,a1,…)
初始状态一般是从初始状态的分布中采样得到的,常用 ρ0 表示
s0∼ρ0(⋅)
下一状态只和当前策略有关,可以是确定的,也可以是随机的。(马尔科夫决策过程吧)
st+1=f(st,at)st+1∼P(⋅∣st,at)
5. Reward and Return
Reward函数用R 表示,依赖于当前状态、当前策略和下一状态,有的简写成依赖于前两个,甚至只依赖于第一个,所以在此简化,把依赖参数统称 τ,即收益函数表示为 Rτ. 某一时刻下Return 就是Reward函数的结果,用 rt 表示。
总的收益有两种计算方式,一种是不考虑折扣的,即各种时刻下收益值直接相加求和。
R(τ)=t=0∑Trt
另外一种就是对每次的收益都打一个折 γ,取值(0,1)
R(τ)=t=0∑∞γtrt
加上折扣因子有两方面考虑,一是因为,下一时刻的折扣是我们预期的,不能满算,就像是未来的货币总不如手里的值钱;二是从数学角度考虑的,无限时刻下的收益总和可能不会收敛,加上这个因子可以更容易求和收敛。
关于两种返回结果的表示说明
二者之间的界限其实不是很特别明显,对于第一种无折扣的返回表示,常通过算法去优化这一函数,但是在预测value function
的时候,更常用的是第二种
6. RL学习学的是什么?
不管选择哪种 return
表示,也不管policy
怎么选,RL的目标就是选择一种policy,让agent能根据他的action
,获得最大expected return
.
expected return
是一系列状态和行为下(针对 trajectories
轨迹),总的收益。我们假定环境变化和策略都是随机,这样一来, 一个 T-step的概率可以表示为:
P(τ∣π)=ρ0(s0)t=0∏T−1P(st+1∣st,at)π(at∣st)
这个公式可以理解为,从一个初始状态出发,然后根据当前状态和行为,转移到了下一个状态。
那么期望收益 expected return
就可以表示为:
J(π)=∫τP(τ∣π)R(τ)=τ∼πE[R(τ)]
这个公式可以理解为每一个状态和状态下的收益的总和。因为是随机的,所以要用积分的方式求。又因为现代概率论上,期望的定义就是一种积分,所以收益也是期望的收益。
想让期望收益最大,就是想找到最优策略:
π∗=argπmaxJ(π)
7. Value function
value function就是用来衡量一个状态及行为的,看看当前状态下的策略能带来多大收益。主要有四类value function:
- 第一种是
On-Policy Value Function
, Vπ(s),就是从一开始的状态下,就老老实实执行policy选的动作,得到预期收益。
Vπ(s)=τ∼πE[R(τ)∣s0=s]
- 第二种是
On-Policy Action-Value Function
, Qπ(s,a),和第一种方法不同的是,虽然一开始状态是固定的,但是我可以不听policy给定的动作,自己随便选一个,但是这之后,依旧会老老实实服从安排。
Qπ(s,a)=τ∼πE[R(τ)∣s0=s,a0=a]
- 第三种是
Optimal Value Function
,V∗(s),和第一种不同的时,每次会先选择最优策略 π,然后执行该策略下的动作。
V∗(s)=πmaxτ∼πE[R(τ)∣s0=s]
- 第四种是
Optimal Action-Value Function
,Q∗(s,a),开始时也是随机选一个动作,在这之后,每次都会先选择最优策略,再执行最优策略下的行动。
Q∗(s,a)=πmaxτ∼πE[R(τ)∣s0=s,a0=a]
value function 和时间的关系
时间无关性是指MDP经过不断演化,最终会使不同时刻下相同状态的价值相等。
当我们讨论valuefunction的时候,如果我们不考虑时间性,我们的预期收益是无限带折扣因子的,即infinite-horizon discounted return
,如果考虑时间,就需要加入一个时间因子。
Note that V(n)
is exactly V0 in a finite-horizon problem with n
timesteps.
value function 和 the action-value function
回顾一下,根据MDP的模型形式,价值函数一般可以分为两种类型。
- 状态值函数 vπ(s):也就是已知当前状态 s,按照某种策略行动产生的长期回报期望。
- 状态-行动值函数qπ(s,a):也就是已知当前状态和行动,按照某种策略行动产生的长期回报期望。
实际上,即使采用这样的方式,仍然难以计算价值。如果要计算从某个状态出发的value function,相当于依从某个策略,把所有从这个状态出发的可能路径走一遍,将这些路径的长期回报按照概率求期望:
vπ(st)=Eτ[k=0∑∞γkrt+k+1]=τ∑p(τ)k=0∑∞γkrt+k+1
其中 τ 表示从状态 st出发的某条路径。将部分路径按照马尔科夫决策展开,
vπ(st)=(st,at,…)∼τ∑π(at∣st)p(st+1∣st,at)…k=0∑∞γkrt+k+1
使用代换消元法,将公式改写为:
vπ(st)=τ∑π(at∣st)p(st+1∣st,at)…k=0∑∞γkrt+k+1
贝尔曼方程
其实我们可以发现,value function可以通过递归的方式表示。假设value function已经稳定,任意一个状态的价值可以由其他状态的价值得到,这个公式就被成为贝尔曼方程。
对于on-policy
价值函数,其贝尔曼方程如下
Vπ(s)Qπ(s,a)=g∼πE[r(s,a)+γVπ(s′)]=s′∼PE[r(s,a)+γa′∼πE[Qπ(s′,a′)]]
其中 s′ 是 rS′∼P(⋅∣s,a) 的简写,表明下一个状态 s′ 是根据环境转移规则随机出来的。 a∼π 是 a∼π(⋅∣s) 的简写,a′∼π 是 a′∼π(⋅∣s) 的简写,
对于optimal
价值函数的贝尔曼方程如下
V∗(s)Q∗(s,a)=amaxs′PE[r(s,a)+γV∗(s′)]=s∗∼PE[r(s,a)+γa′maxQ∗(s′,a′)]
8. Advantage Functions
不需要是最好的action,比其他的action好就行了。Aπ(s,a) 表示,假定你一直使用一种策略 π, 那么在一种状态下,使用这种策略下采用的行动,比随机选的行动 π(⋅∣s) 要好多少。数学公式表示如下:
Aπ(s,a)=Qπ(s,a)−Vπ(s)
这个函数对 policy gradient
方法特别重要!!