文章目录
-
-
- 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.2 策略改进
-
- 2.3 策略迭代算法
1 马尔科夫决策
- 状态空间 S S S,动作空间 A A A,状态转移概率 P ( s ′ ∣ s , a ) P(s'|s,a) P(s′∣s,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) π(a∣s),价值函数 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] s∈S,a∈A(s),π(a∣s)∈[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π[Gt∣St=s]=Eπ[k=0∑∞γkRt+k+1∣St=s]=a∑π(a∣s)s′,r∑p(s′,r∣s,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π[Gt∣St=s,At=a]=Eπ[k=0∑∞γkRt+k+1∣St=s,At=a]=s′,r∑p(s′,r∣s,a)[r+γa′∑π(a′∣s′)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∑π(a∣s)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′,r∑p(s′,r∣s,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′,r∑p(s′,r∣s,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′,r∑p(s′,r∣s,a)[r+γa′maxq∗(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∑π(a∣s)s′,r∑p(s′,r∣s,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 k←k+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′,r∑p(s′,r∣s,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 k←k+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)=argmaxa∑s′,rp(s′,r∣s,a)[r+γvk(s′)], k ← k + 1 k \leftarrow k+1 k←k+1;
- 如果 π k + 1 ( s ) = π k ( s ) \pi_{k+1}(s) = \pi_k(s) πk+1(s)=πk(s),则停止改进,否则继续改进。