动态规划
从贝尔曼方程可知,如果知道马尔可夫决策过程的状态转移概率和奖励函数,我们直接可以通过贝尔曼方程来迭代计算其值函数。这种模型已知的强化学习算法也称为基于模型的方法(Model-Based),这里的模型就是指马尔可夫决策过程。无模型方法 (Model-Free) 则需要近似估计模型。
动态规划 (dynamic programming) 是一种基于模型的方法,它通过递推方式求解最优策略和最优值函数。
策略迭代
策略迭代 (policy iteration) 的核心思想是通过交替进行策略评估和策略改进来找到最优策略。
策略改进:贝尔曼最优方程揭示了非最优策略的改进方式:将策略选择的动作改变为当前最优的动作。对于一个策略 π(a∣s),其值函数为 qπ(s,a),不妨令的改进后的策略为 π′
π′(s)=arga∈Amaxqπ(s,a)
即 π′ 为一个确定性的策略。显然, qπ(s,π′(s))≥vπ(s),由 q-value 的贝尔曼方程可计算出递推不等式
vπ(s)⩽qπ(s,π′(s))=Eπ′[Rt+γvπ(St+1)∣St=s]⩽Eπ′[Rt+γq(St+1,π′(St+1)∣St=s]=Eπ′[Rt+γRt+1+γ2vπ(St+2)∣St=s]⋯⩽Eπ′[Rt+γRt+1+γ2Rt+2+⋯∣St=s]=vπ′(s)
可见,值函数对于策略的每次改进都是单调递增的。我们可以通过下面方式来学习最优策略:先随机初始化一个策略,计算该策略的值函数,并根据值函数来设置新的策略,然后一直反复迭代直到收敛。此时就满足了贝尔曼最优方程,即找到了最优策略。
-
初始化策略 π
-
重复以下步骤直至收敛
-
策略评估 (Policy evaluation):利用贝尔曼方程对当前策略计算值函数
vπ=rπ+γPπvπ
-
计算动作值函数
qπ(s,a)=s′∈S∑p(s′∣s,a)[r+γvπ(s′)]
-
策略改进 (Policy improvement):根据当前值函数更新策略
π(a∣s)←{1,0,if a=argamaxqπ(s,a)otherwise
实际中常使用迭代方法求解贝尔曼方程,算法流程如图
下面是一个策略迭代的示例

值迭代
策略迭代算法中的策略评估和策略改进是交替轮流进行,其中策略评估也是通过一个内部迭代来进行计算,其计算量比较大。事实上,我们不需要每次计算出每次策略对应的精确的值函数,也就是说内部迭代不需要执行到完全收敛。
值迭代 (Value Iteration) 算法将策略评估和策略改进两个过程合并,直接优化贝尔曼最优方程,迭代计算最优值函数。
-
初始化状态价值 v(s)
-
值更新 (Value update):迭代计算最优值函数
v(s)←amaxs′∈S∑p(s′∣s,a)[r+γv(s′)]
-
策略更新 (Policy update):根据最优值函数更新策略
-
计算动作值函数
q(s,a)=s′∈S∑p(s′∣s,a)[r+γv(s′)]
-
更新策略
π(a∣s)←{1,0,if a=argamaxq(s,a)otherwise
算法流程如图
策略迭代算法是根据贝尔曼方程来更新值函数,并根据当前的值函数来改进策略。而值迭代算法是直接使用贝尔曼最优方程来更新值函数,收敛时的值函数就是最优的值函数,其对应的策略也就是最优的策略。
下面是一个值迭代的示例
