Gymnasium Environment Configuration
强化学习环境——gymnasium配置注意,现在已经是2024年了,建议使用最新的gymnasium而不是gym 配置正确的python版本现在是2024年的3月20日,目前的gymnasium不支持python3.12,建议使用conda创建一个3.11的环境: 1conda create -n RL python=3.11 然后进入这个环境中: 1conda activate RL 如果使用的是Windows下的powershell,此时你的终端最前面没有显示例如: 1(RL) xxx@xxx.xxx.xxx.xxx:~ 而是: 1xxx@xxx.xxx.xxx.xxx:~ 的话,建议先运行: 1conda init 然后使用 1conda info 查看一下现在的环境是不是激活成功了 安装gymnasium这里有两个坑,第一个是直接安装 gymnasium 只是装了个白板,里面啥也没有,需要安装的是 gymnasium[atari] 和 gymnasium[accept-rom-license]记住,两个都要装 第二个坑是不知道为什么用conda...
DQN
Article...
Policy Gradient Methods
Background本书前面的部分主要讲的都是学习价值函数的方法,这里提出一种直接学习策略的方法,这里把策略记作一个带有参数的,即 Advantage优点之一是可以学习一个确定性的算法而不像 - greedy 的策略那样每次都有一个较小的概率选择非最优解。同时,基于价值函数学习的方法里面如何选择初始值和如何进行递降都是需要考虑的问题。 Policy Gradient在直接学习策略的时候,正确地更新参数 是十分重要的,所以需要想办法求出评估量对于 的梯度,此处定义:对于分幕式任务,在经过推导(RLBook2020 P325)后,得到: 这里虽然只找出了正比关系,但是在梯度下降的时候,只关注梯度的方向,并不关心梯度真正的值是多少 Monte Carlo Policy Gradient根据上面的式子,写成期望的形式:那么就可以得出梯度下降的公式:其中 是对于真实动作价值函数的逼近。上面的公式成为 all-actions methods 因为它包含了该状态所有可能的动作 下面介绍另一种强化学习版本的。 这里的 是依据策略 在 ...
On-policy Control with
Approximation
Episodic Semi-gradient Control这里和上一章的公式的区别只是把状态价值函数改成了动作价值函数,即:对于一步的Sarsa算法来说,上面的公式应该写为:其算法流程图如下:而对于 步的Sarsa来说,和前面也没有太大的差别:只是这里的价值函数更新的时候变成了以n为周期的。 平均回报对于可以分为一个个Episode的任务,前面的折后回报是可以处理的,但是对于连续型任务是不够的,定义一个策略 的平均回报 如下:那么这个时候的状态价值函数、动作价值函数和最优状态价值函数和最优动作价值函数都可以写成一个新的形式:最优的就是取最大值就行了。 注意到上面的式子里面没有折扣率 了,因为在连续型任务中,先后出现的价值在重要性上没有区别。 在这种定义下的单步Sarsa算法如下:n步Sarsa的算法如下图所示:
On-policy Prediction with Approximation
提出背景由于某些问题的空间维度可能会很高,直接使用tabular的方法来保存所有信息是不现实的,所以考虑换一种方法来表示价值函数,即使用 来近似替代原来的状态价值函数 均方误差为了评估近似替代版本的价值函数和原始的价值函数之间的距离,这里提出均方误差 其定义为: 这其中的 是状态的分布,是状态 出现的概率 SGD和Semi-gradient MethodsSGD 的更新公式在SGD中,选择直接使用梯度下降的方法来更新参数 ,其更新公式如下:但是为了泛用性,这里通常使用样本 来代替真正的价值函数 例如 可能是带有噪声的版本或者直接采样取到的样本,基于蒙特卡洛的随机梯度下降流程图如下: 半梯度方法以 为学习目标,其更新公式是:半梯度学习方法减小了误差,在梯度下降的学习方法里面,本身的更新会受到weight的影响,导致算出来的不是真正的梯度。 线性方法线性方法就是使用线性函数来拟合价值函数。即定义:在使用线性函数的时候,其实可以不使用梯度下降的方法,因为这个时候可以采用最小二乘法求出精确的最优解。
Temporal-Difference Learning
TD-预测在蒙特卡洛方法中,对于 every-visit 的蒙特卡洛方法,可以给出一个递推的更新公式:这个式子里面的 必须在一幕结束之后才能计算出来,所以在一幕中学不到任何信息。 而 的定义是:如果使用 来估算 的话,那么有带入有注意到这里的式子里面已经没有东西需要在一个幕结束之后才能算出来,那么就得到了一个只需要一步的时序差分方法,称为 或单步 算法如图所示: TD-Error定义 TD-error 为:那么式 可以写为 蒙特卡洛误差可以被写成 TD-Error 的形式: Sarsa方法前面给出了状态价值函数的更新公式,但是在实际做出决策的时候,动作价值函数是更为实用的选择,所以这里给出动作价值函数的更新公式:这里的公式中同样不含有任何需要一个episode结束才能算出来的东西,所以可以动态更新。 On-policy的时序差分方法在给定策略 的情况下,可以根据公式 来更新动作价值函数,并且更新 来逼近最优的策略。算法如图: Q-Learning —— Off-Policy...
Monte Carlo Methods
提出背景在DP方法中,需要指导转移概率的先验知识,但是一般情况夏是不知道这个概率的,即无法知晓 那么前面的 DP 方法就会失效,那么这里提出一种基于采样的方法来获取相关的信息。蒙特卡洛方法指的是一系列从重复采样中进行估计的方法。在强化学习中,蒙特卡洛方法通过对大量样本的回报进行平均,来进行价值估计。随着收集到的样本越来越多,平均值就会收敛到期望值。MC算法是在每一幕结束之后进行更新的。 关于 visit 访问的定义如果状态 出现在策略 中,每一次出现称为一次 访问 , 第一次访问称为 首次访问 两种MC算法MC算法分为首次访问和每次访问两种,首次访问是只计算每一幕的首次访问的回报,而每次访问则是每一次遇到状态 就进行更新,首次访问的算法流程图如下:去掉关于 的判断就是每次访问的算法了。 利用蒙特卡洛方法估计动作价值如果问题是 Model-unaware 的那么就可以考虑利用蒙特卡洛方法去估计动作-状态价值函数 ,只需要把上面的算法中的 换成 二元组就可以了。 消除初始策略带来的影响为了尽可能多的探索可能的情况,减小策略带来的影响而学习到全局的最优解,通常有...
Dynamic Programming
递推表达式通过之前的定义可以得到一个递推版本的DP状态转移方程: 这里的 代表的是 步,具体的含义是可以通过 次 action 到达这个状态。所以上面的更新就是从 步的价值函数去更新 步的价值函数这里的并不是Bellman 方程,只是递推表达式,算法要求是到最后接近满足Bellman方程 注意,这里的更新是和策略 有关的,是在策略确定的情况下,通过更新的方式来确定真正的状态价值函数。 具体的算法如图: 在递推的过程中改进策略在迭代的过程中,如果已知策略 的价值函数 希望知道在某个状态 下选择一个不同于 的动作 是否会带来改善,这种策略的价值为:如果上面的式子的值大于目前的状态价值函数 那么就更新此时的策略为 而由于所有的策略的状态价值函数存在偏序关系,也就是说存在 upper bound 那么就可以利用这一点证明,每次取贪心的策略 即$$\pi’ = \mathop{argmax}a q_\pi(s,a) = \mathop{argmax}a \mathbb E[R{t + 1} + \gamma v_\pi (S{t +1}) | S_t...
Finite Markov Decision
马尔科夫模型中与环境交互的定义Agent做出动作 后,Environment会反馈一个状态 和一个奖励 给到Agent,而Agent的目标还是最大化奖励之和 有限马尔科夫决策过程的规定在有限马尔科夫决策过程中,所有的 states,actions,rewards 的集合都是有限的,而随机变量 和 被定义为仅仅依靠前面一次的state和action 的离散的概率分布,即只有上一次的状态和选择会影响当前的状态和奖励。 转移函数定义转移函数 :转移函数 是一个确定性的函数,即在同一个马尔科夫随机过程中,这个函数是不会发生变化的 该函数有如下的性质: 奖励期望的定义在MDP中,奖励的期望被定义为 如何确定合理的奖励这里的奖励应该设置成为学习的额最终目标,例如如果是训练围棋,那么奖励应该设置为获得胜利,只有获得胜利的时候才会得到1的奖励,不能设置为吃子,这样训练的结果会变成一个以吃子为目标而不是以获胜为目标的算法。 两种不同的任务类型可以分成 episode 的如果 agent 与 environment 的交互可以自然地分成多个 episode...
Tabular Solution Methods
Basic idea基本想法是在状态空间和可能的行动空间都足够小的情况下(能够通过表格或者是数列存下的情况下),通常能够找到精确解 多臂老虎机(k-armed bandit problem)问题描述现在有 k 种选择,每次可以从 k 种选择种选择一个,每种选择给出的奖励都是基于一个未知但是确定的分布的,学习的目标是在有限的次数中最大化所有的奖励的和。 符号定义 : 在 时刻选择的动作 : 对应的reward : 在该时刻动作 的 value: : 在时刻 估计的动作 的 value 样本均值法此时对于动作 的估计是:$$Q_t(a) = \frac{\mathrm{在t时刻之前采取动作a获得的奖励之和}}{在t时刻之前采取动作a的次数} = \frac{\sum_{i = 1}^{t - 1}\limits R_i \cdot \mathbb{1}{A_i = a}}{\sum{i = 1}^{t - 1}\limits \mathbb{1}{A_i = a}}$$这里的 $\mathbb{1}{A_i = a}$...