强化学习:马尔科夫决策与策略迭代

文章目录

      • 1 马尔科夫决策
        • 1.1 价值函数
        • 1.2 状态价值函数
        • 1.3 动作价值函数
        • 1.4 v π v_\pi vπ q π q_\pi qπ 的关系
        • 1.5 最优价值函数
        • 1.6 最优策略
      • 2 策略迭代
        • 2.1 策略评估
          • 2.1.1 迭代法
        • 2.2 策略改进
          • 2.2.1 贪心法
        • 2.3 策略迭代算法

1 马尔科夫决策

  • 状态空间 S S S,动作空间 A A A,状态转移概率 P ( s ′ ∣ s , a ) P(s'|s,a) P(ss,a),奖励函数 R ( s , a , s ′ ) R(s,a,s') R(s,a,s),折扣因子 γ ∈ [ 0 , 1 ] \gamma \in [0,1] γ[0,1]
  • 策略 π ( a ∣ s ) \pi(a|s) π(as),价值函数 v π ( s ) v_\pi(s) vπ(s),动作价值函数 q π ( s , a ) q_\pi(s,a) qπ(s,a)
  • s ∈ S , a ∈ A ( s ) , π ( a ∣ s ) ∈ [ 0 , 1 ] s \in S, a \in A(s), \pi(a|s) \in [0,1] sS,aA(s),π(as)[0,1]

1.1 价值函数

G t = ∑ k = 0 ∞ γ k R t + k + 1 = R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ (1) G_t = \sum_{k=0}^\infty \gamma^k R_{t+k+1} = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots \tag{1} Gt=k=0γkRt+k+1=Rt+1+γRt+2+γ2Rt+3+(1)

1.2 状态价值函数

v π ( s ) = E π [ G t ∣ S t = s ] = E π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s ] = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] (2) v_\pi(s) = \mathbb{E}_\pi[G_t|S_t=s] \\ = \mathbb{E}_\pi[\sum_{k=0}^\infty \gamma^k R_{t+k+1}|S_t=s] \\ = \sum_a \pi(a|s) \sum_{s',r} p(s',r|s,a) \left[r + \gamma v_\pi(s')\right] \tag{2} vπ(s)=Eπ[GtSt=s]=Eπ[k=0γkRt+k+1St=s]=aπ(as)s,rp(s,rs,a)[r+γvπ(s)](2)

1.3 动作价值函数

q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] = E π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s , A t = a ] = ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ ∑ a ′ π ( a ′ ∣ s ′ ) q π ( s ′ , a ′ ) ] (3) q_\pi(s,a) = \mathbb{E}_\pi[G_t|S_t=s,A_t=a] \\ = \mathbb{E}_\pi[\sum_{k=0}^\infty \gamma^k R_{t+k+1}|S_t=s,A_t=a] \\ = \sum_{s',r} p(s',r|s,a) \left[r + \gamma \sum_{a'} \pi(a'|s') q_\pi(s',a')\right] \tag{3} qπ(s,a)=Eπ[GtSt=s,At=a]=Eπ[k=0γkRt+k+1St=s,At=a]=s,rp(s,rs,a)[r+γaπ(as)qπ(s,a)](3)

1.4 v π v_\pi vπ q π q_\pi qπ 的关系

v π ( s ) = ∑ a π ( a ∣ s ) q π ( s , a ) (4) v_\pi(s) = \sum_a \pi(a|s) q_\pi(s,a) \tag{4} vπ(s)=aπ(as)qπ(s,a)(4)
q π ( s , a ) = ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] (5) q_\pi(s,a) = \sum_{s',r} p(s',r|s,a) \left[r + \gamma v_\pi(s')\right] \tag{5} qπ(s,a)=s,rp(s,rs,a)[r+γvπ(s)](5)

1.5 最优价值函数

v ∗ ( s ) = max ⁡ π v π ( s ) (6) v_*(s) = \max_\pi v_\pi(s) \tag{6} v(s)=πmaxvπ(s)(6)
q ∗ ( s , a ) = max ⁡ π q π ( s , a ) (7) q_*(s,a) = \max_\pi q_\pi(s,a) \tag{7} q(s,a)=πmaxqπ(s,a)(7)

1.6 最优策略

  • 存在最优策略 π ∗ \pi_* π,使得 v π ∗ ( s ) ≥ v π ( s ) v_{\pi_*}(s) \geq v_\pi(s) vπ(s)vπ(s),即最优策略的价值函数大于等于其他策略的价值函数;
    v π ∗ ( s ) = max ⁡ a q π ∗ ( s , a ) (8) v_{\pi_*}(s) = \max_a q_{\pi_*}(s,a) \tag{8} vπ(s)=amaxqπ(s,a)(8)
    即最优状态价值函数等于最优动作价值函数的最大值, 理由是: 任意一个状态,都可以通过任意一个动作到达下一个状态,而下一个状态的价值函数是最优的,所以当前状态的价值函数也是最优的。
  • 最优函数之间的关系
    v ∗ ( s ) = max ⁡ a q ∗ ( s , a ) = max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v ∗ ( s ′ ) ] (9) v_*(s) = \max_a q_*(s,a) \\ = \max_a \sum_{s',r} p(s',r|s,a) \left[r + \gamma v_*(s')\right] \tag{9} v(s)=amaxq(s,a)=amaxs,rp(s,rs,a)[r+γv(s)](9)
    q ∗ ( s , a ) = ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ max ⁡ a ′ q ∗ ( s ′ , a ′ ) ] (10) q_*(s,a) = \sum_{s',r} p(s',r|s,a) \left[r + \gamma \max_{a'} q_*(s',a')\right] \tag{10} q(s,a)=s,rp(s,rs,a)[r+γamaxq(s,a)](10)
    公式(9)和(10)就是贝尔曼方程,是动态规划的基础。

2 策略迭代

  • 策略迭代分为两个步骤:策略评估和策略改进。

2.1 策略评估

  • 策略评估是指给定一个策略,计算价值函数的过程。
  • 策略评估的目标是使得价值函数收敛,即 v π ( s ) → v ∗ ( s ) v_\pi(s) \to v_*(s) vπ(s)v(s),即 v π ( s ) v_\pi(s) vπ(s) 逼近 v ∗ ( s ) v_*(s) v(s)
  • 策略评估的方法有很多,这里介绍迭代法。
2.1.1 迭代法
  • 迭代法是指从一个初始值开始,不断迭代,直到收敛。
  • 迭代法的公式如下:
    v k + 1 ( s ) = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v k ( s ′ ) ] (11) v_{k+1}(s) = \sum_a \pi(a|s) \sum_{s',r} p(s',r|s,a) \left[r + \gamma v_k(s')\right] \tag{11} vk+1(s)=aπ(as)s,rp(s,rs,a)[r+γvk(s)](11)
  • 算法描述如下:
    • 初始化 v 0 ( s ) = 0 v_0(s) = 0 v0(s)=0 k = 0 k = 0 k=0
    • 计算 v k + 1 ( s ) v_{k+1}(s) vk+1(s) k ← k + 1 k \leftarrow k+1 kk+1
    • 如果 v k + 1 ( s ) − v k ( s ) < θ v_{k+1}(s) - v_k(s) < \theta vk+1(s)vk(s)<θ,则停止迭代,否则继续迭代。

2.2 策略改进

  • 策略改进是指改进策略,使得价值函数更大。
  • 策略改进的方法有很多,这里介绍贪心法。
2.2.1 贪心法
  • 贪心法是指每次都选择最优的动作,即:
    π ′ ( s ) = arg ⁡ max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v k ( s ′ ) ] (12) \pi'(s) = \arg\max_a \sum_{s',r} p(s',r|s,a) \left[r + \gamma v_k(s')\right] \tag{12} π(s)=argamaxs,rp(s,rs,a)[r+γvk(s)](12)

2.3 策略迭代算法

  • 策略迭代算法是指不断迭代策略评估和策略改进,直到策略不再改变。
  • 一旦一个策略 π \pi π根据 v π v_\pi vπ产生了一个更好的策略 π ′ \pi' π,那么就可以用 v π ′ v_{\pi'} vπ来评估 π ′ \pi' π,然后再根据 v π ′ v_{\pi'} vπ产生一个更好的策略 π ′ ′ \pi'' π,以此类推,直到策略不再改变。
  • 策略迭代算法的伪代码如下:
    • 初始化 v 0 ( s ) = 0 v_0(s) = 0 v0(s)=0 k = 0 k = 0 k=0 π 0 ( s ) = arg ⁡ max ⁡ a q 0 ( s , a ) \pi_0(s) = \arg\max_a q_0(s,a) π0(s)=argmaxaq0(s,a)
    • 评估策略 π k \pi_k πk
      • 计算 v k + 1 ( s ) v_{k+1}(s) vk+1(s) k ← k + 1 k \leftarrow k+1 kk+1
      • 如果 v k + 1 ( s ) − v k ( s ) < θ v_{k+1}(s) - v_k(s) < \theta vk+1(s)vk(s)<θ,则停止迭代,否则继续迭代;
    • 改进策略 π k \pi_k πk
      • π k + 1 ( s ) = arg ⁡ max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v k ( s ′ ) ] \pi_{k+1}(s) = \arg\max_a \sum_{s',r} p(s',r|s,a) \left[r + \gamma v_k(s')\right] πk+1(s)=argmaxas,rp(s,rs,a)[r+γvk(s)] k ← k + 1 k \leftarrow k+1 kk+1
      • 如果 π k + 1 ( s ) = π k ( s ) \pi_{k+1}(s) = \pi_k(s) πk+1(s)=πk(s),则停止改进,否则继续改进。

你可能感兴趣的:(笔记,算法,深度学习)