easy-rl icon indicating copy to clipboard operation
easy-rl copied to clipboard

/chapter4/chapter4

Open qiwang067 opened this issue 3 years ago • 37 comments

https://datawhalechina.github.io/easy-rl/#/chapter4/chapter4

Description

qiwang067 avatar May 24 '21 01:05 qiwang067

捉个虫,第7页slide下面的第三个公式似乎漏了个梯度算子符号

HelloWXJ1024 avatar May 25 '21 09:05 HelloWXJ1024

感谢您的反馈,的确是一个虫,错误已纠正,内容已更新

捉个虫,第7页slide下面的第三个公式似乎漏了个梯度算子符号

qiwang067 avatar May 25 '21 10:05 qiwang067

请问“REINFORCE: Monte Carlo Policy Gradient”这一节的参考资料是 哪里呢?有对应的视频吗

Brian1203-zz avatar Sep 23 '21 12:09 Brian1203-zz

请问“REINFORCE: Monte Carlo Policy Gradient”这一节的参考资料是 哪里呢?有对应的视频吗

主要参考的视频链接如下: https://aistudio.baidu.com/aistudio/education/lessonvideo/476222

希望能解决您的问题。

qiwang067 avatar Sep 23 '21 12:09 qiwang067

这是我目前为止觉得最好的RL教程,nb

weiyang-jiang avatar Oct 16 '21 09:10 weiyang-jiang

这是我目前为止觉得最好的RL教程,nb

感谢您的认可,本教程能对您有所帮助就好

qiwang067 avatar Oct 16 '21 10:10 qiwang067

又看完一章啦~ 博主写的超级好!

Strawberry47 avatar Nov 10 '21 06:11 Strawberry47

想请问下为什么reinforce不算单步更新呢,伪代码中也是每个step都对参数更新一次呀,和actor critic一样都是每个step更新,或者说为什么actor critic就算单步更新呢?

KID0031 avatar Nov 12 '21 13:11 KID0031

@KID0031 想请问下为什么reinforce不算单步更新呢,伪代码中也是每个step都对参数更新一次呀,和actor critic一样都是每个step更新,或者说为什么actor critic就算单步更新呢?

我是这样理解的:REINFORCE必须要得到一整个episode的数据才可以进行更新(也就是等到游戏结束才可以),但是actor-critic在游戏中途就可以更新,不需要等到游戏结束。

Strawberry47 avatar Nov 13 '21 01:11 Strawberry47

我是这样理解的:REINFORCE必须要得到一整个episode的数据才可以进行更新(也就是等到游戏结束才可以),但是actor-critic在游戏中途就可以更新,不需要等到游戏结束。

感谢回复,之前少看了一行公式,有点绕晕了。

KID0031 avatar Nov 13 '21 02:11 KID0031

还有个问题想请问下,对于actor-critic中policy参数的更新(也是单步更新),如果游戏在中途停止会对训练效果有影响么,因为policy的梯度中含有对t从1到Tn的求和,中途停止的话就只更新了不完整的梯度

KID0031 avatar Nov 13 '21 07:11 KID0031

@KID0031 还有个问题想请问下,对于actor-critic中policy参数的更新(也是单步更新),如果游戏在中途停止会对训练效果有影响么,因为policy的梯度中含有对t从1到Tn的求和,中途停止的话就只更新了不完整的梯度

游戏中途停止了,那么更新的轮数就变少了,可能模型效果变差了。但是不会有你说的“只更新了不完整的梯度”,这个问题。你可以对比着看看代码~

Strawberry47 avatar Nov 13 '21 07:11 Strawberry47

可能模型效果变差了。但是不会有你说的“只更新了不完整的梯度”,这个问题。你可以对比着看看代码~

image 但公式这里是从1加到Tn,如果从t'停止的话只是从1加到t'了,就不是上面的梯度了。(假设更新的次数一样呢,比如玩了很多轮但每轮都是从中间停止,最后总次数一样)。代码里我的理解是每轮游戏中把每一个step的更新加起来才是上面的梯度

KID0031 avatar Nov 13 '21 08:11 KID0031

写得太棒了!

LFM-bot avatar Jan 04 '22 04:01 LFM-bot

写得太棒了!

感谢您的认可,对您有所帮助就好,XD

qiwang067 avatar Jan 04 '22 05:01 qiwang067

在REINFORCE:MONTE Carlo Policy Gradient中“类似地,policy gradient 预测每一个状态下面应该要输出的这个行动的概率,就是输入状态 st ,然后输出动作的概率,比如 0.02,0.08,0.09。实际上输出给环境的动作是随机选了一个动作,比如说我选了右这个动作,它的 one-hot 向量就是 0,0,1。” 0.09应为0.9。

moukyh avatar Feb 17 '22 08:02 moukyh

在REINFORCE:MONTE Carlo Policy Gradient中“类似地,policy gradient 预测每一个状态下面应该要输出的这个行动的概率,就是输入状态 st ,然后输出动作的概率,比如 0.02,0.08,0.09。实际上输出给环境的动作是随机选了一个动作,比如说我选了右这个动作,它的 one-hot 向量就是 0,0,1。” 0.09应为0.9。

感谢您的纠错,错误已纠正,内容已更新~

qiwang067 avatar Feb 17 '22 08:02 qiwang067

我想问一下,采用Basline形式的更新,如果(R-B)为负值,Loss也为负数了吧,这种情况下怎么更新网络

GrangerZyj avatar Mar 10 '22 02:03 GrangerZyj

文中有一句“就拿实际执行的这个动作,先取个 one-hot 向量,然后再拿到神经网络预测的动作概率,这两个一相乘,我就可以拿到算法里面的那个 ln𝜋(𝐴𝑡∣𝑆𝑡,𝜃)”,请问神经网络预测的动作概率不就是𝜋(𝐴𝑡∣𝑆𝑡,𝜃)吗?算法里的ln𝜋(𝐴𝑡∣𝑆𝑡,𝜃)直接对神经网络输出取对数不就可以了嘛?

amy-jiang-fiirst avatar Aug 08 '22 07:08 amy-jiang-fiirst

@amy-jiang-fiirst 感谢您的反馈,回复如下图所示: image

文中有一句“就拿实际执行的这个动作,先取个 one-hot 向量,然后再拿到神经网络预测的动作概率,这两个一相乘,我就可以拿到算法里面的那个 ln𝜋(𝐴𝑡∣𝑆𝑡,𝜃)”,请问神经网络预测的动作概率不就是𝜋(𝐴𝑡∣𝑆𝑡,𝜃)吗?算法里的ln𝜋(𝐴𝑡∣𝑆𝑡,𝜃)直接对神经网络输出取对数不就可以了嘛?

qiwang067 avatar Aug 19 '22 07:08 qiwang067

书里面这段的ln应该代表的是loss吧?但为啥是自然对数的符号,这里有点不明白

文中有一句“就拿实际执行的这个动作,先取个 one-hot 向量,然后再拿到神经网络预测的动作概率,这两个一相乘,我就可以拿到算法里面的那个 ln𝜋(𝐴𝑡∣𝑆𝑡,𝜃)”,请问神经网络预测的动作概率不就是𝜋(𝐴𝑡∣𝑆𝑡,𝜃)吗?算法里的ln𝜋(𝐴𝑡∣𝑆𝑡,𝜃)直接对神经网络输出取对数不就可以了嘛?

skywalkerwang98 avatar Sep 06 '22 08:09 skywalkerwang98

书里面这段的ln应该代表的是loss吧?但为啥是自然对数的符号,这里有点不明白

文中有一句“就拿实际执行的这个动作,先取个 one-hot 向量,然后再拿到神经网络预测的动作概率,这两个一相乘,我就可以拿到算法里面的那个 ln𝜋(𝐴𝑡∣𝑆𝑡,𝜃)”,请问神经网络预测的动作概率不就是𝜋(𝐴𝑡∣𝑆𝑡,𝜃)吗?算法里的ln𝜋(𝐴𝑡∣𝑆𝑡,𝜃)直接对神经网络输出取对数不就可以了嘛?

@skywalkerwang98 ,感谢您的反馈,这边比较标准的写法应该是 log,loss 具体推导可参考下图 image

qiwang067 avatar Sep 14 '22 03:09 qiwang067

@GrangerZyj 我想问一下,采用Basline形式的更新,如果(R-B)为负值,Loss也为负数了吧,这种情况下怎么更新网络

负值就说明相应的action不好,需要降低其概率,即pi(a|s)变小;如果是正值,就说明执行这个action是好的,要增加其概率。直观上是这么理解,回到数学公式推导上,使用梯度上升方法更新网络参数,也会得到这个结果的。 你大概是还没搞清楚为什么要使用baseline吧,再看看原文的解释吧,或者自己想想R-B是正值或负值时梯度上升的具体过程是怎么样的(R-B的正负影响梯度的正负),做完应该会豁然开朗。

Vetelus avatar Oct 21 '22 09:10 Vetelus

你好,请问 REINFORCE 伪代码中,为什么更新参数的时候,梯度还需要乘以 gamma 的 t 次方?计算 G 的时候不是已经考虑了奖励的折扣?

JinProton avatar Jan 01 '23 03:01 JinProton

你好,请问 REINFORCE 伪代码中,为什么更新参数的时候,梯度还需要乘以 gamma 的 t 次方?计算 G 的时候不是已经考虑了奖励的折扣?

@JinProton 感谢您的反馈,REINFORCE 的严谨的数学推导可以推出梯度前面需要乘以 gamma 的 t 次方。

qiwang067 avatar Jan 05 '23 13:01 qiwang067

有个不理解的地方,策略网络输出的概率是0-1之间,那么对数的结果总是小于0的,为了让似然函数尽可能大,网络会不会总是采取一些不好的动作,使得回报为负数呢,这样似然总会是正的

akk-123 avatar Mar 09 '23 02:03 akk-123

为了研究chatgpt里的ppo算法,在网上找了很多ppo的教程,都看不懂;终于想起了这个教程,从第一章开始看,终于看懂了策略梯度算法,下一站ppo,粗发~

kijiang avatar Apr 19 '23 06:04 kijiang

@kijiang 加油 👍

qiwang067 avatar Apr 19 '23 08:04 qiwang067

@qiwang067 @amy-jiang-fiirst 感谢您的反馈,回复如下图所示: image

文中有一句“就拿实际执行的这个动作,先取个 one-hot 向量,然后再拿到神经网络预测的动作概率,这两个一相乘,我就可以拿到算法里面的那个 ln𝜋(𝐴𝑡∣𝑆𝑡,𝜃)”,请问神经网络预测的动作概率不就是𝜋(𝐴𝑡∣𝑆𝑡,𝜃)吗?算法里的ln𝜋(𝐴𝑡∣𝑆𝑡,𝜃)直接对神经网络输出取对数不就可以了嘛?

有推理的依据吗?还是拍脑袋出来的?

chensisi0730 avatar Jun 30 '23 01:06 chensisi0730

@qiwang067 @amy-jiang-fiirst 感谢您的反馈,回复如下图所示: image

文中有一句“就拿实际执行的这个动作,先取个 one-hot 向量,然后再拿到神经网络预测的动作概率,这两个一相乘,我就可以拿到算法里面的那个 ln𝜋(𝐴𝑡∣𝑆𝑡,𝜃)”,请问神经网络预测的动作概率不就是𝜋(𝐴𝑡∣𝑆𝑡,𝜃)吗?算法里的ln𝜋(𝐴𝑡∣𝑆𝑡,𝜃)直接对神经网络输出取对数不就可以了嘛?

有推理的依据吗?还是拍脑袋出来的?

具体可看 REINFORCE 算法伪代码

qiwang067 avatar Jul 15 '23 13:07 qiwang067