Reinforcement
Learning
强化学习
一、Reinforcement
Learning的基本概念及原理
强化学习是一种非监督式学习方法。其主要作用是通过样本数据(sanple
data),训练出最优的决策方案。它可以看做是对Markov Decision
Process(MDP)进行决策优化的学习算法。MDP 模型中的变量有:
S: 状态集合(states);
A: 决策集合(actions);
Psa:在状态为s时采取a决策产生的状态的概率分布,如Psa(s')表示从s采取a决策到达s'的概率;
γ∈[0,1):
折扣系数(discount factor)
R:奖励函数(reward
function),认为只与当前状态有关,即R(s)
MDP示意如下:
s0—a0→s1—a1→s2—a2→s3—a3→s4—a4→...
另外,定义以下变量:
V(s):价值函数(value function)
π:决策函数(状态和决策之间的映射关系)如a=π(s)表示
学习的目标是在当前状态下找出最优的决策方案,使得未来所有的期望奖励最大,未来的期望奖励为:
E[R(s0)+γ*R(s1)+γ2*R(s2)+...]
定义Vπ(s)=E[R(s0)+γ*R(s1)+γ2*R(s2)+...
| s0=s, π],则Vπ满足Bellman equations:
Vπ(s)=R(s)+γ∑s'∈SPsπ(
s')Vπ(
s')
优化目标是使Vπ(s)取得最大值,定义最大值为V*(s),则有optimal value function:
V*(s)=Vπ*(s)=R(s)+max
γ∑s'∈SPsπ(
s')Vπ(
s')
需要注意的是,不管给出的初始状态s如何,得出的最优决策函数π*对所有状态都是最优方案。(因为从s0到s1到s2...为Markov过程,即从一个状态到另外一个状态的最优决策是一定的且不受之前状态的影响。)因此,通过不断迭代,最终V会收敛到V*(注意每个状态s对应一个V*(s),即计算收敛时对应每个状态都会有一个Bellman
equation)。
求解过程有两种:Value
iteration 和policy iteration。
Value
iteration:
step1:
对每一个状态s,初始化V(s):=0
step2: repeat
until convergence{
对每一个状态s,更新V(s)=R(s)+max
γ∑s'∈SPsπ(
s')Vπ(
s')
}
Policy
iteration:
step1:
初始化决策函数π为任意映射关系;
step2: repeat
until convergence{
(a) 令
V:=Vπ.
(b) 对每一个状态s,令π(s):=arg
max∑s'∈SPsπ(
s')Vπ(
s')
}
其中,Value
iteration相对policy iteration更为常用。
注意,目前的模型中是认为P和R都是给定的,而且状态是离散的。实际应用中还有需要估计MDP模型(P和R)或者状态是连续变量的情况。
二、应用中的几种情况
(一)需要估计MDP模型
估计MDP模型的方法是通过进行实验,通过观察状态为s时采取a策略到达s'状态的累计次数与状态为s时采取a策略的总实验次数的比值来估计Psa(s'),即:
Psa(s')=(times we took action a in
state s and got to s')/(times we took action a in states s)
R一般认为是给定的,例如模拟实验失败一次奖励值为-1,则R(failure state)=-1,R(other
states)=0。
(二)状态为连续变量时的解决办法
状态为连续变量时有两种解决办法,一种是离散化(Discretization),另一种是价值函数估计(Value iteration
approximation)。
1. Discretization
Discretization是将连续状态等分为很多离散值。注意不管连续变量是一维的还是多维的,等分之后对应的离散变量都是一维的。当从多维离散为一维时,要注意对应的数量关系。例如将(x,x_dot)进行离散化:
if (x < -1.5)
state = 0;
elseif (x < 1.5)
state = 1;
else
state = 2;
end
if (x_dot < -0.5)
;
elseif (x_dot < 0.5)
state = state + 3;
else
state = state + 6;
end
2. Value function approximation
使用Value function approximation要有能够根据 s 和 a 生成样本数据的simulator
或model,在采用fitted value iteration 的方法进行计算。
(1) simulator 、model.
simulator可以是根据物理特性建立的程序或软件。也可以根据已有的MDP的数据建立回归模型。例如有m个观测序列:
s(1)0—a0→s(1)1—a1→s(1)2—a2→s(1)3—a3→s(1)4—a4→...
s(1)T
s(2)0—a0→s(2)1—a1→s(2)2—a2→s(2)3—a3→s(2)4—a4→...
s(2)T
s(3)0—a0→s(3)1—a1→s(3)2—a2→s(3)3—a3→s(3)4—a4→...
s(3)T
…
s(m)0—a0→s(m)1—a1→s(m)2—a2→s(m)3—a3→s(m)4—a4→...
s(m)T
可以利用回归的方法估计出st+1=
A*st + B*at,或其他形式,如st+1=
A*st+ B*at+et,et~N(0,∑),st+1=
A*Φ(st)+
B*Φ(at),Φ()为非线性函数。
(2). Fitted value iteration
Fitted value
iteration的基本思想是利用simulator生成的样本数据,生成s(i)与V(i)的最优值估计值y(i)的样本点(s(i),y(i)),
通过回归的方法建立V*(s)=θTΦ(s).步骤如下:
step1: 任意取m个样本状态s(1),
s(2), ..., s(m) ∈ S.
step2: 初始化θ:=0.
step3: For i =1,..., m{
For each action a
∈
A{
获取根据simulator或model生成的s'1,..,s'k~ Ps(i)a;
令
q(a)= R(s(i))+γ*(1/k)*∑j∈1→kV(
s'j);
//q(a)是R(s(i))+γ*Es'~Ps(i)a [V(
s')]的估计
}
令y(i)=max q(a);
// y(i)是
V*(s(i))=R(s(i))+γ*max
Es'~Ps(i)a [V(
s')]的估计
}
令θ:=arg
min
1/2∑i∈1-m(θTΦ(s(i)))².
得到V*(s)=θTΦ(s)之后,便可以用arg
maxEs'~Ps(i)a[V(
s')]或 arg max V(f(s,a))得出s状态下的最佳决策a.
三、Matlab实现注意事项
(一)变量初始化
如V=zeros(1, NUM_STATES);
或V=ones(1,NUM_STATES);或V=0.5*ones(1,NUM_STATES);
(二)Value iteration的实现
all(abs(V-V_PRE)>=TOLERANCE;