policy gradient处理连续动作空间
policy gradient可以直接输出action的概率来进行离散动作的选择,而对于连续动作空间,则需要直接输出动作的值,需要想办法将其转换为概率,方法就是输出一个action的分布(例如输出正态分布,就让模型输出 均值 和 方差 两个值即可),然后从该分布中采样一个action,进而计算该action在该分布中的概率,使用模型提高这个概率即可。 以下为 …
Blog
技术、阅读与日常记录。
policy gradient可以直接输出action的概率来进行离散动作的选择,而对于连续动作空间,则需要直接输出动作的值,需要想办法将其转换为概率,方法就是输出一个action的分布(例如输出正态分布,就让模型输出 均值 和 方差 两个值即可),然后从该分布中采样一个action,进而计算该action在该分布中的概率,使用模型提高这个概率即可。 以下为 …
之前看李宏毅关于强化学习视频的时候,他说PPO是 off policy 的方法,但是刚看openai spinningup的时候,里面又明确写明它是一种on policy的方法。 如何区分 我个人觉得,一个非常简单的区分方法为:如果与环境交互的策略与目标策略相关,则是on policy的,否则是off policy的。 注意:我这里说的是“相关”,而严格定义 …
使用gymnasium的第三方游戏环境Flappybird(https://github.com/markub3327/flappy-bird-gymnasium)训练RL模型,游戏刚运行没多久窗口就会无响应 只是窗口渲染出问题,游戏逻辑实际仍然在运行 出现这个原因是因为 event queue 一直没取,满了,新的event进不去就会卡住,在游戏中加入以下 …
做这道题用到的:https://leetcode.com/problems/number-of-ways-to-reorder-array-to-get-same-bst/description/ 求两个数组归并后可能产生多少种组合,要求归并后两个数组元素仍有保持原数组中的顺序 其实是个很简单的问题,是我开始想复杂了 假设两个数组长度分别为m和n,则归并后长 …
现象 使用policy gradient算法写了一个小模型,训练过程中发现模型很快会收敛到一个非常糟糕的结果,理论上不应该呀,因为按照policy gradient算法原理来说,对于某个action,如果你给了负的reward,那么模型会减小该action出现的概率,但我的实验表明,模型不仅没减小该action的概率,甚至还会增加它的概率,最终它的概率甚至会 …
优化器的进化 训练一个policy gradient模型时,发现如果使用SGD,模型练不起来,很容易就出问题,而使用Adam则会好很多,这里回顾一下Adam的原理: 梯度下降法的梯度迭代公式为: $$ θ_t ← θ_{t-1} - μg_t $$其中 \( g_t \) 为t时刻函数对θ的偏导,μ为学习率。 如此一来,在模型训练时就需要指定μ这个超参数,且 …
注意:这篇文章没有解释原因,只是探索了一个相似方法 一般认为是可以用来简化计算的,log可以将原本的累乘转换为累加,例如 a*b*c 总体加上一个log就可以转换为 loga+logb+logc,当然,能总体加log是因为log保留的原来函数的单调方向,转成加法还有个好处就是一定程度上可以防止梯度消失或爆炸,因为连乘很容易为0或无穷 使用最朴素的policy …
在训练qlearning网络时,通常会设置一定的概率去做一些探索,以求能做出更好的决策。而在Policy gradient中,也是需要探索的,但是它会有一些问题 我写了一个MLP来作为policy,在训练过程中,每次做决策都使用 argmax 来寻找当前模型认为最好的action,模型不会收敛,想想它当然是不会收敛的,因为policy gradient训练模 …
深度强化学习模型在训练玩游戏时,不渲染游戏画面可以大大加快训练速度 # 将 render_mode 设置为 None 就不会渲染游戏,设置为 "human" 就会以图像帧的形式渲染 # 注:老版本需要调用 render 方法才会渲染,新版本会在调用 reset 方法时就自动渲染 env = gymnasium.make("CartPole-v1", …
刚才刷leetcode时候随机了一题,发现这道题我竟然点过赞,并且加入了收藏 我想这应该是我很久之前刷过的一题,没有提交记录,当时应该没做出来,并且应该看过了其他人的解决方案还是没做出来的那种,觉得方法很巧妙也很common,所以才点赞加收藏,希望下次能做出来。 我有理由相信我当时应该花了很长时间来做这道题,甚至几个小时,因为那时我做一题基本是按小时计时的, …