去除页面标题的wordpress,模板建网站怎么做seo,腾讯微信网站建设价格,现在广告行业好做吗在前面我们讨论了基于价值的强化学习(Value Based RL)和基于策略的强化学习模型(Policy Based RL)#xff0c;本篇我们讨论最后一种强化学习流派#xff0c;基于模型的强化学习(Model Based RL)#xff0c;以及基于模型的强化学习算法框架Dyna。 本篇主要参考了UCL强化学习课… 在前面我们讨论了基于价值的强化学习(Value Based RL)和基于策略的强化学习模型(Policy Based RL)本篇我们讨论最后一种强化学习流派基于模型的强化学习(Model Based RL)以及基于模型的强化学习算法框架Dyna。 本篇主要参考了UCL强化学习课程的第8讲和Dyna-2的论文。 1. 基于模型的强化学习简介 基于价值的强化学习模型和基于策略的强化学习模型都不是基于模型的它们从价值函数策略函数中直接去学习不用学习环境的状态转化概率模型即在状态$s$下采取动作$a$,转到下一个状态$s$的概率$P_{ss}^a$。 而基于模型的强化学习则会尝试从环境的模型去学习一般是下面两个相互独立的模型一个是状态转化预测模型输入当前状态$s$和动作$a$预测下一个状态$s$。另一个是奖励预测模型输入当前状态$s$和动作$a$预测环境的奖励$r$。即模型可以描述为下面两个式子$$S_{t1} \sim P(S_{t1}|S_t,A_t)$$$$R_{t1} \sim R(R_{t1}|S_t,A_t)$$ 如果模型$P,R$可以准确的描述真正的环境的转化模型那么我们就可以基于模型来预测当有一个新的状态$S$和动作$A$到来时我们可以直接基于模型预测得到新的状态和动作奖励不需要和环境交互。当然如果我们的模型不好那么基于模型预测的新状态和动作奖励可能错的离谱。 从上面的描述我们可以看出基于模型的强化学习和不基于模型的强化学习的主要区别即基于模型的强化学习是从模型中学习而不基于模型的强化学习是从和环境交互的经历去学习。 下面这张图描述了基于模型的强化学习的思路 2. 基于模型的强化学习算法训练流程 这里我们看看基于模型的强化学习算法训练流程其流程和我们监督学习算法是非常类似的。 假设训练数据是若干组这样的经历$$S_1,A_1,R_2,S_2,A_2,R_2,...,S_T$$ 对于每组经历我们可以将其转化为$T-1$组训练样本即$$S_1,A_1 \to S_2,\;S_1,A_1 \to R_2$$$$S_2,A_2 \to S_3,\;S_2,A_2 \to R_3$$$$......$$$$S_{T-1},A_{T-1} \to S_T,\;S_{T_1},A_{T-1} \to R_T$$ 右边的训练样本一起组成了一个分类模型或密度估计模型输入状态和动作输出下一个状态。 右边的训练样本一起组成了一个回归模型训练集输入状态和动作输出动作奖励值。 至此我们的强化学习求解过程和传统的监督学习算法没有太多区别了可以使用传统的监督学习算法来求解这两个模型。 当然还可以更简单即通过对训练样本进行查表法进行统计直接得到$P(S_{t1}|S_t,A_t)$的概率和$R(R_{t1}|S_t,A_t)$的平均值这样就可以直接预测。比使用模型更简单。 此外还有其他的方法可以用来得到$P(S_{t1}|S_t,A_t)$和$R(R_{t1}|S_t,A_t)$这个我们后面再讲。 虽然基于模型的强化学习思路很清晰而且还有不要和环境持续交互优化的优点但是用于实际产品还是有很多差距的。主要是我们的模型绝大多数时候不能准确的描述真正的环境的转化模型那么使用基于模型的强化学习算法得到的解大多数时候也不是很实用。那么是不是基于模型的强化学习就不能用了呢也不是我们可以将基于模型的强化学习和不基于模型的强化学习集合起来取长补短这样做最常见的就是Dyna算法框架。 3. Dyna算法框架 Dyna算法框架并不是一个具体的强化学习算法而是一类算法框架的总称。Dyna将基于模型的强化学习和不基于模型的强化学习集合起来既从模型中学习也从和环境交互的经历去学习从而更新价值函数和或策略函数。如果用和第一节类似的图可以表示如下图和第一节的图相比多了一个“Direct RL“的箭头这正是不基于模型的强化学习的思路。 Dyna算法框架和不同的具体的不基于模型的强化学习一起可以得到具体的不同算法。如果我们使用基于价值函数的Q-Learning那么我们就得到了Dyna-Q算法。我们基于Dyna-Q来看看Dyna算法框架的一般流程. 4. Dyna-Q算法流程 这里我们给出基于价值函数的Dyna-Q算法的概要流程。假设模型使用的是查表法。 1. 初始化任意一个状态$s$,和任意一个动作$a$对应的状态价值$Q(s,a)$, 初始化奖励模型$R(s,a)$和状态模型$P(s,a)$ 2. for i1 to 最大迭代次数T a) S $\gets$ current state b) A $\gets$ $\epsilon-greedy(S,Q)$ c) 执行动作$A$,得到新状态$S$和奖励$R$ d) 使用Q-Learning更新价值函数$Q(S,A) Q(S,A) \alpha[R \gamma\max_aQ(S,a) -Q(S,A)]$ e) 使用$S,A,S$更新状态模型$P(s,a)$使用$S,A,R$更新状态模型$R(s,a)$ f) for j1 to 最大次数n i) 随机选择一个之前出现过的状态$S$, 在状态$S$上出现过的动作中随机选择一个动作$A$ ii) 基于模型$P(S,A)$得到$S$, 基于模型$R(S,A)$得到$R$ iii) 使用Q-Learning更新价值函数$Q(S,A) Q(S,A) \alpha[R \gamma\max_aQ(S,a) -Q(S,A)]$ 从上面的流程可以看出Dyna框架在每个迭代轮中会先和环境交互并更新价值函数和或策略函数接着进行n次模型的预测同样更新价值函数和或策略函数。这样同时利用上了和环境交互的经历以及模型的预测。 5. Dyna-2算法框架 在Dyna算法框架的基础上后来又发展出了Dyna-2算法框架。和Dyna相比Dyna-2将和和环境交互的经历以及模型的预测这两部分使用进行了分离。还是以Q函数为例Dyna-2将记忆分为永久性记忆permanent memory和瞬时记忆transient memory, 其中永久性记忆利用实际的经验来更新瞬时记忆利用模型模拟经验来更新。 永久性记忆的Q函数定义为$$Q(S,A) \phi(S,A)^T\theta$$ 瞬时记忆的Q函数定义为$$Q(S,A) \overline{\phi}(S,A)^T\overline{\theta }$$ 组合起来后记忆的Q函数定义为$$\overline{Q}(S,A) \phi(S,A)^T\theta \overline{\phi}(S,A)^T\overline{\theta }$$ Dyna-2的基本思想是在选择实际的执行动作前智能体先执行一遍从当前状态开始的基于模型的模拟该模拟将仿真完整的轨迹以便评估当前的动作值函数。智能体会根据模拟得到的动作值函数加上实际经验得到的值函数共同选择实际要执行的动作。价值函数的更新方式类似于$SARSA(\lambda)$ 以下是Dyna-2的算法流程 6. 基于模型的强化学习总结 基于模型的强化学习一般不单独使用而是和不基于模型的强化学习结合起来因此使用Dyna算法框架是常用的做法。对于模型部分我们可以用查表法和监督学习法等方法预测或者采样得到模拟的经历。而对于非模型部分使用前面的Q-Learning系列的价值函数近似或者基于Actor-Critic的策略函数的近似都是可以的。 除了Dyna算法框架我们还可以使用基于模拟的搜索(simulation-based search)来结合基于模型的强化学习和不基于模型的强化学习,并求解问题。这部分我们在后面再讨论。 欢迎转载转载请注明出处。欢迎沟通交流 liujianping-ok163.com 转载于:https://www.cnblogs.com/pinard/p/10384424.html