MATLAB马尔科夫决策过程遗传,科学网—【RL系列】马尔可夫决策过程与动态编程笔记 - 管金昱的博文...

推荐阅读顺序:

Reinforcement Learning: An Introduction (Drfit)

本篇

马尔可夫决策过程

马尔可夫决策(MDP)过程为强化学习(RL)提供了理论基础,而动态编程(DP)为马尔可夫决策过程提供了一种实现的方法。所以将这两个部分结合在一起去学习,我认为是非常合适的。

在之前的Multi-Armed Bandit(MAB)问题中,RL作为一种方法被用来估计一种状态下不同动作收益均值。在这个问题里,不同的动作只会产生不同的收益,状态看起来没有改变且下一次的可选择动作也不会发生改变。说状态不变有些许的不严谨,MAB问题实际上应该是一个自我状态不断更新的MDP。对于一个K-lever问题,严格上来说,是K个状态之间的不断转换。

15da7d8a59080fedd048839712c18ae3.png

左图为3-lever的状态转移情形,右图为4-lever的状态转移情形。其中的状态转移表示着一个状态执行完一个动作后转变为另一个状态。举个例子,在3-lever的情形中,如果当前状态S1,在拉动第三个lever后,转变为S3。在状态转移的过程中,对动作选择需要服从的规则称为policy。

在MAB问题中,我们了解到,可以通过估计各个动作产生的收益均值来生成policy,这属于动作价值评价。在MDP中我们可以通过评价各个状态的价值来产生policy,通常来说,一个状态的价值越高,那么从另一个状态转移到这个状态所获得的收益也就越高。如果在状态转移过程中,每次都选择转移到下一个价值最高的状态,这样的policy就可以称为greedy policy(多说一句,相比较于动作评价,通过状态评价产生的greedy policy是比较安全的)。一个状态的价值通常由这个状态当前的奖励(Reward)与这个状态可以转移到的其它状态的价值所决定,后一个也可称为一个状态的未来价值(Future Value)。在MDP中,从一个状态转移到另一个状态可以由下图表示:

1825f509f012e406107320f02ef38795.png

Current Reward表示当前在状态equation?tex=S_1%0A所获得的奖励,Future Value表示状态equation?tex=S_2的价值,从equation?tex=S_1%0A转移到equation?tex=S_2的概率为P,那么状态equation?tex=S_1%0A关于状态equation?tex=S_2的价值计算可以写为:

equation?tex=%5Cmathbb%7BValue%7D(S_1%7CS_2)%20%3D%20%5Cmathbb%7BReward%7D(S_1)%20%2B%20%5Cgamma%20P(S_1%5Cto%20S_2)%20%5Cmathbb%7BValue%7D(S_2)

如果equation?tex=S_1%0A可能转移的状态为equation?tex=S_iequation?tex=i%5Cin%20%5C%7B2%2C%203%2C...%2C%20N%5C%7D,转移至equation?tex=S_i的概率为equation?tex=P_i(S_1%20%5Cto%20S_i),那么equation?tex=S_1%0A当前的价值估计就可以表示为:

equation?tex=%5Cmathbb%7BValue%7D(S_1)%20%3D%20%5Cmathbb%7BReward%7D(S_1)%20%2B%20%5Cgamma%20%5Csum_%7Bi%20%3D%202%7D%5E%7BN%7D%20P(S_1%5Cto%20S_i)%20%5Cmathbb%7BValue%7D(S_i)

这里的equation?tex=%5Cgamma表示折扣系数,通常来说,equation?tex=%5Cgamma越大表示未来价值占价值估计的比重越高,当前奖励的比重越低。同时我们也可以发现,对状态价值的评估实际上就是当前价值与未来价值的一个平衡,这里的未来价值在数学上被定义为对所有可能转移状态的价值的期望。

状态转移在RL中实际上分为两个部分,第一是动作选择部分,第二是动作后产生的结果。如果使用状态转移图,可以表示为:

72779d6e99a7ddcda44c5f1a9ff61662.png

这里的equation?tex=P_1也就是我们在MAB问题中已经讨论多次的动作选择概率(包括epsilon-greedy策略,UCB策略和Softmax策略等都是用来解决优化这个问题的)。我们用equation?tex=%5Cpi(A_1%7CS_1)\pi(A)\pi来表示在状态equation?tex=S_1%0A下选择动作equation?tex=A_1的概率。equation?tex=P_2则代表了在状态equation?tex=S_1%0A下选择动作equation?tex=A_1产生并产生结果equation?tex=S_2的概率,通常使用equation?tex=P(S_2%7CA_1%2CS_1)来表示。对于转移状态为多个的情况,可以将状态equation?tex=S_1%0A的价值估计写为:pi(A

equation?tex=%5Cmathbb%7BValue%7D(S_1)%20%3D%20%5Cmathbb%7BReward%7D(S_1)%20%2B%20%5Cgamma%20%5Csum_%7Bi%20%3D%201%7D%5E%7Bn%7D%20%5Cpi(A_i%7CS_1)%5Csum_%7Bj%20%3D%201%7D%5E%7BN(A_i)%7DP%5Cleft%5BS_%7BA_i%7D(j)%7CA_i%2C%20S_1%5Cright%5D%20%5Cmathbb%7BValue%7D%5Cleft%5BS_%7BA_i%7D(j)%5Cright%5D

在这个式子中,equation?tex=n(A_i)表示在动作equation?tex=A_i下可能产生的状态总数,equation?tex=S_%7BA_i%7D(j)表示在动作equation?tex=A_i下的第equation?tex=j个状态。强调一点,该式与Bellman equation并不完全一致,这里将Reward部分单独拿了出来,我是觉得这种形式更符合状态价值函数的推导逻辑。给出这个式子所对应的状态转移图,以便于更好的理解:

028f2c6e00565d2b8694e5c20d314fc3.png

动态编程

这种不断产生分支的状态转移图又可以称为树状图(State-Action-State Backup Diagram),此外还有Action-State-Action树状图用于分析动作评价方程,可适用的典型问题有MAB,Q-learning,不过动作评价方程在MAB的应用之前已经用了大量的篇幅去分析讨论,这里就不再过多的赘述。本篇尝试用状态价值评价的方法来解决MAB问题,并以此为动态编程之例。

我们以一个3-lever的问题为例,画出它的State-Action-State树状图:

4774a82da50f7405d0538bdb96b0dcb2.png

这里是以状态equation?tex=S_1%0A为出发点,状态equation?tex=S_1%0A表示第一个拉下第一个臂时的状态,以此类推。每一个动作所产生的状态都是确定的,所以这里的equation?tex=P_i(S_1%20%5Cto%20S_i)就是equation?tex=%5Cpi(A_i%7CS_1)equation?tex=S_1%0A的状态评价方程可以写为:

equation?tex=%5Cmathbb%7BValue%7D(S_1)%20%3D%20%5Cmathbb%7BReward%7D(S_1)%20%2B%20%5Cgamma%20%5Csum_%7Bi%20%3D%201%7D%5E%7B3%7D%20%5Cpi(A_i%7CS_1)%20%5Cmathbb%7BValue%7D(S_i)

因为并不清楚每个状态所获得的具体的奖励,所以动作选择策略为随机选择,即每个动作被选择的概率为1/3。在动态编程中,每一次学习都需要将所有的状态遍历一遍,这样的好处是,即使equation?tex=%5Cpi(A_i%7CS_1)未知(随机选择策略),也可以保证每个状态的迭代次数对其最终结果的影响是相同的,得到的结果也是可靠的,这种收敛价值方程的方法被称为Policy Evaluation。注意动态编程在这里只是提供一个迭代求解状态价值评价的手段。对K-lever问题来说,动态编程将其分割为K个子问题分别求解更新对应的状态价值,这个过程是有违自然地强化学习的过程的,却可以提高求解效率。3-lever问题的状态评价迭代Matlab程序如下:K = 3;

V = zeros(1, K);

Reward = [1 2 0.5];

P = zeros(1, K) + 1/K;

gamma = 0.5;

delta = 100;

%i = 1;

while(delta > 0.01)

delta = 0;

for state = 1:K

v = V(state);

V(state) = Reward(state) + sum(P.*gamma.*V); % Bellman equation

delta = max([delta abs(v - V(state))]);

end

%plot(i, delta, 'bo')

%hold on

%i = i + 1;

end

这里的Reward = [1 2 0.5],对应着每一个状态所得的奖励,equation?tex=%5Cgamma值为0.5,状态价值评价的最终结果为:

equation?tex=%5Cbegin%7Bmatrix%7D%20V%20%3D%20%5B2.1662%20%20%26%20%203.1663%20%20%26%20%201.6664%5D%20%5Cend%7Bmatrix%7D

举个例子,依据这个状态价值评价矩阵来生成greedy-policy,那么无论当前处在什么状态,只要达到状态S2,就可以获得最优收益,所以greedy-policy的动作选择概率P(A) = [0 1 0]

转载本文请联系原作者获取授权,同时请注明本文来自管金昱科学网博客。

链接地址:http://blog.sciencenet.cn/blog-3189881-1123281.html

上一篇:【RL系列】Multi-Armed Bandit笔记——Softmax选择策略

下一篇:【RL系列】马尔可夫决策过程中状态价值函数的一般形式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值