3.3 价值迭代(value iteration)算法

刚刚的例子很简单,在状态转移图中没有“环”,因此我们可以从末状态开始,计算他的价值,然后回到开始状态。然而,如果环境中有“环”,会给我们带来麻烦:
在这里插入图片描述
s 1 , s 2 s_1,s_2 s1,s2的价值?每个episode的奖励顺序是 [ 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 , … ] [1,2,1,2,1,2,1,2,…] [1,2,1,2,1,2,1,2]
V ( s 1 ) = ∑ i = 0 ∞ γ 2 i + 2 γ 2 i + 1 = 1 + γ ( 2 + γ ( 1 + γ ( 2 + ⋯   ) ) ) V\left( s_1 \right) =\sum_{i=0}^{\infty}{\gamma ^{2i}+2\gamma ^{2i+1}}=1+\gamma \left( 2+\gamma \left( 1+\gamma \left( 2+\cdots \right) \right) \right) V(s1)=i=0γ2i+2γ2i+1=1+γ(2+γ(1+γ(2+)))
V ( s 2 ) = ∑ i = 0 ∞ 2 γ 2 i + γ 2 i + 1 = 2 + γ ( 1 + γ ( 2 + γ ( 1 + ⋯   ) ) ) V\left( s_2 \right) =\sum_{i=0}^{\infty}{2\gamma ^{2i}+\gamma ^{2i+1}}=2+\gamma \left( 1+\gamma \left( 2+\gamma \left( 1+\cdots \right) \right) \right) V(s2)=i=02γ2i+γ2i+1=2+γ(1+γ(2+γ(1+)))
对于该问题的解,可以使用数值方法求近似解,也可以通过变形求解析解,即解方程组
{ V ( s 1 ) = 1 + γ V ( s 2 ) V ( s 2 ) = 2 + γ V ( s 1 ) \left\{ \begin{array}{l} V\left( s_1 \right) =1+\gamma V\left( s_2 \right)\\ V\left( s_2 \right) =2+\gamma V\left( s_1 \right)\\ \end{array} \right. {V(s1)=1+γV(s2)V(s2)=2+γV(s1)
我们可以从这个例子抽取一个更为一般的算法,称为值迭代算法(value iteration),能够通过数值方法计算具有已知转移概率和reward的马尔可夫决策过程(MDP)的状态价值和动作价值。

状态价值的计算包括以下步骤:

  1. 初始化状态价值 V i V_i Vi(一般设为0)
  2. 对于MDP中的每个状态s,使用Bellman方程更新状态价值: V s ← max ⁡ a ∑ s ′ p a , s → s ′ ( r s , a + γ V s ′ ) V_s\gets \max _a\sum_{s'}{p_{a,s\rightarrow s'}\left( r_{s,a}+\gamma V_{s'} \right)} Vsmaxaspa,ss(rs,a+γVs)
  3. 重复第二步,直到状态价值的变化很小为止

动作价值的估计和状态价值几乎一样:

  1. 初始化动作价值 Q s , a Q_{s,a} Qs,a(一般设为0)
  2. 对于MDP中的每个状态s和动作a,做以下更新: Q s , a ← ∑ s ′ p a , s → s ′ ( r s , a + γ max ⁡ a ′ Q s ′ , a ′ ) Q_{s,a}\gets \sum_{s'}{p_{a,s\rightarrow s'}\left( r_{s,a}+\gamma \max _{a'}Q_{s',a'} \right)} Qs,aspa,ss(rs,a+γmaxaQs,a)
  3. 重复第二步,直到动作价值的变化很小为止。

在实践中,这种方法有几个明显的局限性。首先,我们的状态空间应该是离散的,而且维数不能太大,可以在所有状态上执行多次迭代。这对于FrozenLake-4x4甚至FrozenLake-8x8来说都不是问题,但对于CartPole来说,其observation_space是四个浮点数,没法直接用这个离散的算法。将观察值离散化是一个可行的方案。例如,可以将CartPole的观测空间拆分为多段,并将每段视为单个离散状态。然而,这又会带来另一个问题,例如间隔应该取多大;需要从环境中获取多少数据来估计价值。

第二个问题是,我们并不知道奖励矩阵和状态转移矩阵。我们只有agent与环境交互的每个episode。然而,在Bellman方程的更新中,我们需要为每一次状态转移的概率和奖励值。因此,这个问题的明显需要对两个未知量估计。对于奖励,只需记录每次状态转移时获得的奖励即可;为了估计概率,我们需要为每个元组(s0,s1,a)维护一个计数器,用频率估计概率。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值