MDP(马尔可夫决策过程)
给定当前状态,未来和过去是独立的。对于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=newRandomSubSet();/*随机选取个状态*/
do{
var=newList();
foreach(in.sample()){
var=;
var=newQ();
foreach(in){
var= filter(,);/**/
var=.length();
/* 所以 是 的估计 */
=;
}
/*是的近似值,最后是*/
=;
}
/* 在初始迭代算法中(离散状态),我们根据更新价值函数。然后使用监督学习(线性回归)来实现。 */
=;
}while(isCovergenced());
}
文章出处登录后可见!
已经登录?立即刷新