mdp matlab,Reinforcement Learning 强化学习

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;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值