强化学习(二):动态规划与蒙特卡洛方法

在得出策略 π \pi π的状态值函数 和 动作值函数之后,那么该如何求出最优策略?根据环境的 动态特性是否已知分为两种方法:动态规划法 和 蒙特卡洛法。

1. 动态规划(Dynamic Programming, DP)

DP是一种求解最优值得常用方法,此处用于求解系统动态特性 p ( s ′ , r ∣ s , a ) p(s',r|s,a) p(s,rs,a)已知情况下的最优策略。

首先我们有一个策略 π \pi π并以此求出最优策略 π ∗ \pi* π

1.1. 策略评估(预测)

策略评估做的事情是:给定策略 π \pi π,求出该策略的价值函数 v π ( s ) v_{\pi}(s) vπ(s) q π ( s , a ) q_{\pi}(s,a) qπ(s,a)

事实上根据马尔科夫决策过程中的描述,状态价值函数 v π ( s ) v_{\pi}(s) vπ(s)满足如下递推特性:

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

其中 γ < 1 \gamma <1 γ<1
这实际上是一个有着 ∣ S ∣ |S| S个未知数的 ∣ S ∣ |S| S个方程的方程组,手动求解可能非常复杂,选择迭代策略评估求解。

迭代策略评估

思想是先随机初始化所有变量值,记为 v 0 ( s ) v_0(s) v0(s)。之后用 v 0 ( s ) v_0(s) v0(s)的值按照下式计算 v 1 ( s ) v_1(s) v1(s)的值
v k + 1 ( s ) = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ × v k ( s ′ ) ] v_{k+1}(s) = \sum_{a}\pi(a|s) \sum_{s',r}p(s',r|s,a)[r+\gamma \times v_{k}(s')] vk+1(s)=aπ(as)s,rp(s,rs,a)[r+γ×vk(s)]
事实上就是用旧的 v k ( s ) v_k(s) vk(s)计算新的 v k + 1 ( s ) v_{k+1}(s) vk+1(s)。由于策略存在,则 v π ( s ) v_{\pi}(s) vπ(s)一定存在,可以证明 v ∞ ( s ) → v π ( s ) v_∞(s)→v_{\pi}(s) v(s)vπ(s)。在实际编程中可以使用 max ⁡ s ∣ v k + 1 ( s ) − v k ( s ) ∣ < ϵ \max_{s}|v_{k+1}(s)-v_k(s)|<\epsilon maxsvk+1(s)vk(s)<ϵ判断是否终止。

得出 v π ( s ) v_{\pi}(s) vπ(s)之后就可以根据 ( 1 ) (1) (1)算出 q π ( s , a ) q_{\pi}(s,a) qπ(s,a)了。

1.2. 策略改进(控制)

在得到策略 π \pi π的值函数之后,就需要对该策略进行改进以获得更优的策略,然后再对更优的策略求更优,如此迭代反复最终找到最优策略。

什么是更优的策略?

状态价值函数更大的策略就是更优的策略,即

如果 ∀ s ∈ S , v π ′ ( s ) ≥ v π ( s ) \forall s \in S, v_{\pi'}(s) ≥v_{\pi}(s) sS,vπ(s)vπ(s)成立且至少存在一个状态 s s s满足严格不等 v π ′ ( s ) > v π ( s ) v_{\pi'}(s) >v_{\pi}(s) vπ(s)>vπ(s),则认为策略 π ′ \pi' π π \pi π更优。

如何获得更优的策略?

寻找比当前策略 π \pi π更优策略 π ′ \pi' π的思路是:先调整一个状态,对于状态 s s s,满足
π ′ ( s ) = arg max ⁡ a q π ( s , a ) (2) \pi'(s)=\argmax_aq_{\pi}(s,a) \tag{2} π(s)=aargmaxqπ(s,a)(2)
即保证状态 s s s下选择的动作 一定是所有可选动作中 q π ( s , a ) q_{\pi}(s,a) qπ(s,a)最大的那个

其实就是修改概率分布,这是因为
v π ( s ) = ∑ a π ( a ∣ s ) × q π ( s , a ) ≤ max ⁡ a q π ( s , a ) = max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ × v k ( s ′ ) ] = v π ′ ( s ) v_{\pi}(s)=\sum_{a}\pi(a|s) \times q_{\pi}(s,a)≤\max_aq_{\pi}(s,a)=\max_a\sum_{s',r}p(s',r|s,a)[r+\gamma \times v_{k}(s')]=v_{\pi'}(s) vπ(s)=aπ(as)×qπ(s,a)amaxqπ(s,a)=a

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starry丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值