问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

强化学习入门:马尔可夫奖励过程详解

创作时间:
作者:
@小白创作中心

强化学习入门:马尔可夫奖励过程详解

引用
CSDN
1.
https://blog.csdn.net/python_plus/article/details/138819020

马尔可夫奖励过程(Markov Reward Process)是强化学习中的一个核心概念,它在马尔可夫过程的基础上加入了奖励函数和折扣因子,用于评估在不同状态下的长期收益。本文将详细介绍马尔可夫奖励过程的基本要素、回报计算方法以及价值函数的贝尔曼方程,并通过Python代码示例帮助读者更好地理解这些概念。

一、马尔可夫奖励过程

在马尔可夫过程的基础上加入奖励函数r和折扣因子γ,就可以得到马尔可夫奖励过程(Markov reward process)。一个马尔可夫奖励过程由< S , P , r , γ >构成,各个组成元素的含义如下:

  • S是有限状态的集合。
  • P是状态转移矩阵。
  • r是奖励函数,某个状态s的奖励r(s)指转移到该状态时可以获得奖励的期望。
  • γ是折扣因子,γ的取值范围为[0,1)。引入折扣因子的理由为远期利益具有一定不确定性,有时我们更希望能够尽快获得一些奖励,所以我们需要对远期利益打一些折扣。接近1的γ更关注长期的累计奖励,接近0的γ更考虑短期奖励。

1.回报

在一个马尔可夫奖励过程中,回报Gt是指从某个起始时刻t的状态St开始,直到达到终止状态时,所有获得的奖励经过时间衰减后的总和。这种计算方式可以帮助评估在整个过程中的总体收益或成本,对于决策和策略评估尤为重要。

Gt=Rt+γRt+1+γ2Rt+2+⋯=∑k=0∞γkRt+k

其中,Rt表示在t时刻获得的奖励。

在图2中,我们基于之前提到的马尔可夫过程的例子,进一步引入了奖励函数,从而构建成一个马尔可夫奖励过程。在这个过程中,不同状态的进入会带来不同的奖励值。例如,进入状态s2会获得奖励-2,这意味着我们通常不希望进入这个状态。相反,进入状态s4可以获得最高的奖励,即10分。而当进入状态s6时,虽然奖励为零,但此时状态序列将终止。这种设置帮助我们了解和评估进入每个状态的奖励或代价。


图2 马尔可夫奖励过程示例

比如选取s1为起始状态,设置γ=0.5,采样到一条状态序列为s1→s2→s3→s6,就可以计算s1的回报Gt,得到G1=-1+0.5×(-2)+0.52×(-2)=-2.5

图2所示过程的马尔可夫奖励过程的回报计算Python代码如下:

import numpy as np
np.random.seed(0)
# 定义状态转移概率矩阵P
P = [
    [0.9, 0.1, 0.0, 0.0, 0.0, 0.0],
    [0.5, 0.0, 0.5, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.6, 0.0, 0.4],
    [0.0, 0.0, 0.0, 0.0, 0.3, 0.7],
    [0.0, 0.2, 0.3, 0.5, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 1.0],
]
P = np.array(P)
rewards = [-1, -2, -2, 10, 1, 0]  # 定义奖励函数
gamma = 0.5  # 定义折扣因子
# 给定一条序列,计算从某个索引(起始状态)开始到序列最后(终止状态)得到的回报
def compute_return(start_index, chain, gamma):
    G = 0
    for i in reversed(range(start_index, len(chain))):
        G = gamma * G + rewards[chain[i] - 1]
    return G
# 一个状态序列,s1-s2-s3-s6
chain = [1, 2, 3, 6]
start_index = 0
G = compute_return(start_index, chain, gamma)
print("根据本序列计算得到回报为:%s。" % G)

2.价值函数

在马尔可夫奖励过程中,从某个状态出发所能获得的未来累积奖励的期望(即期望回报)被称为该状态的价值。这种期望值反映了一个状态的总体益处或收益。我们将这些价值整合成一个称为价值函数的概念。价值函数将某个状态作为输入,并输出该状态的价值。这种函数是评估不同状态在长期收益上的重要性和效用的关键工具。价值函数写为:V(s)=E[Gt∣St=s],可展开为:

在上述方程的最后一个等号中,我们可以看到两部分内容。首先,即时奖励的期望值正是奖励函数给出的值,表示为E[Rt∣St=s]=r(s)。其次,方程中的剩余部分表示从状态s出发,根据各个转移概率计算未来奖励的期望值,这可以用E[γV(St+1)∣St=s]表达。这个部分将当前状态到其他可能状态的转移概率与那些状态的价值相乘,然后求和,从而计算出从状态s出发的期望未来回报。可以得到:

V(s)=r(s)+γ∑s′∈Sp(s′∣s)V(s′)

上式就是马尔可夫奖励过程中非常有名的贝尔曼方程(Bellman equation),对每一个状态都成立。即一个状态的价值等于在该状态获得的即时奖励和从该状态转移到其他状态后预期获得的未来奖励的总和。

贝尔曼方程的重要性在于它提供了一种迭代求解各状态价值的方法,使我们能够有效地评估和优化决策过程。在实际应用中,通过迭代更新每个状态的价值,直至收敛到稳定值,我们可以得到每个状态的最终价值。这对于规划和决策具有重要的意义,尤其是在复杂系统和机器学习领域,如强化学习,其中贝尔曼方程是核心算法之一。

参考文献

[1]动手学强化学习

[2]强化学习(Reinforcement Learning)

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号