MDP(马尔可夫决策过程)
给定当前状态
这个过程可以概括为五个部分:
:状态集, ; :动作集, ,当状态为 时执行动作 , ; :状态转移分布, ,描述在状态 执行动作 后进入状态 的概率。如果这个概率是 ,一个值可以通过默认概率分布来估计; : ,随着时间的推移,奖励会越来越少,这个值是人为设定的; :奖励函数,一系列动作 的总奖励为 (上标为幂),这个总奖励也是一个随机变量;奖励功能根据实际应用需要设置;
MDP试图求解
贝尔曼方程
当前状态
合身
在训练过程中,首先随机执行动作
- 价值迭代:
让 ;迭代更新 直到收敛,当它收敛时就会有 。这里 作为值进行运算, 直接运算。
function
valueIteration( , ){
var = zeros( .length());
/*
初始化为0
*/
do
{
foreach
(
in ){ = ;
}
}
while
(isCovergenced( ));
return ;
} - 政策迭代:
随机化 ;迭代更新 直到收敛(这里假设每一步 都是 ,其实这个假设在收敛的时候基本成立)。
function
policyIteration( , ){
var =
new
π(randoms( .length()));
/*
这个 是可执行的 */
do
{
foreach
(
in ){
/*
当决策函数为 时声明一个表达式,策略评估 */
lambda = ;
/*
策略改进,哪个动作能达到最大价值 ,就是最优策略,所以求一个期望*/ = ;
}
}
while
(isCovergenced( ));
return ;
}
无限递归难以实现的问题可以通过指定最大递归层数来解决。
连续状态
functionvalueIteration(
var
do{
var
foreach(
var
var
foreach(
var
var
/* 所以
}
/*
}
/* 在初始迭代算法中(离散状态),我们根据
}while(isCovergenced(
}
文章出处登录后可见!
已经登录?立即刷新