Dynamic Programming
DP指的是一套算法集,这样的算法集在环境模型是一种马尔可夫决策过程且已知的情况下,可以用于计算得到最优的决策。由于要求已知完美的模型且计算量极大,DP的实用性不强,但其理论意义是很重要的。因为在强化学习后面接触的算法都是企图克服完美模型假定与大量计算并得到与DP同样的结果。
通常,在DP算法中,假定环境是一个有限的马尔可夫过程。DP的关键想法甚至强化学习的关键想法即是通过价值函数来组织或框定对优良决策的搜索。
根据Bellman方程,可知:
DP是用一种迭代更新的方式去逼近真实的价值函数。
Policy Evaluation (Prediction)
预测问题即是对于任意的决策策略,计算状态-价值函数(state-value)函数:
当时,收敛于真实的。这种方式被称为迭代策略评估。
Input pi, the policy to be evaluated
Algorithm parameter: a small threshold theta >0 determining accuracy of estimation
Initialize V(s), for all s in S_plus(terminal stated included), arbitarily execept that v(terminal) = 0
while True:
delta = 0
for s in S_plus:
v = V(s)
V(s) = sum_a pi(a|s)sum_{s',r}p(s',r|s,a)[r+gamma V(s')]
delta = max(delta, |v-V(s)|)
if delta < theta
break
Policy Improvement
policy improvement theorem:
all s in S:
Policy Iteration
# Initialzation
V(s), pi(s)
#Policy Evaluation
while True:
delta = 0
for s in S:
v = V(s)
V(s) = sum_{s',r}p(s',r|s,pi(s))[r+gamma(V(s'))]
delta = max(delta, |v- V(s)|)
if delta < theta:
break
#policy improvement
policy_stable = True
for s in S:
action = pi(s)
pi(s) = argmax_a sum_{s',r}p(s',r|s,a)[r+gammaV(s')]
if action != pi(s):
policy_stable = False
if policy_stable:
return v*, pi*
else:
go to policy evaluation
Value Iteration
上面策略迭代算法的劣势,显而易见,每一步的迭代都要进行策略评估,即对所有的状态都要扫描一遍。
下面的价值迭代算法对策略迭代进行了优化:
Algorithm parameter: a small threshold theta determining accuracy of estimation
Initialize V(s), for all s in S_plus, arbitrarily except that V(terminal) = 0
while True:
delta = 0
for s in S:
v = V(s)
V(s) = max_a sum_{s',r}p(s',r|s,a)[r+gamma v(s')]
delta = max(delta, |v - V(s)|)
if delta <theta:
pi(s) = argmax_a sum_{s',r}p(s',r|s,a)[r + gamma V(s')]
break
Generalized Policy Iteration
策略迭代由两个同时发生并相互作用的过程组成,一个是策略评估,即让价值函数与当前的策略相一致,或者说在当前策略下找到与其对应的价值函数。另一个就是策略提升,即在当前价值函数的前提下,通过贪婪的方式找到最优策略。GPI指的是这样的通用想法:让策略评估(PE)与策略提升(PI)的交互 独立于两过程的各自己过程细节。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架