Comments (13)
在Q-learning: Off-policy TD Control章节,提到了“Sarsa 在更新 Q 表格的时候,它用到的 A' 。我要获取下一个 Q 值的时候,A' 是下一个 step 一定会执行的 action。这个 action 有可能是 ε-greedy 方法采样出来的值,也有可能是 max Q 对应的 action,也有可能是随机动作,但这是它实际执行的那个动作。”。我想问下,ε-greedy 方法采样出来的值不是就包括了 max Q对应的动作和随机动作吗?
from easy-rl.
在Q-learning: Off-policy TD Control章节,提到了“Sarsa 在更新 Q 表格的时候,它用到的 A' 。我要获取下一个 Q 值的时候,A' 是下一个 step 一定会执行的 action。这个 action 有可能是 ε-greedy 方法采样出来的值,也有可能是 max Q 对应的 action,也有可能是随机动作,但这是它实际执行的那个动作。”。我想问下,ε-greedy 方法采样出来的值不是就包括了 max Q对应的动作和随机动作吗?
你可能误解了,这边是指用的策略,可以用 ε-greedy 方法,也可采用 max Q 方法或随机采样方法,这三种策略是并行的。
from easy-rl.
在Q-learning: Off-policy TD Control章节,提到了“Sarsa 在更新 Q 表格的时候,它用到的 A' 。我要获取下一个 Q 值的时候,A' 是下一个 step 一定会执行的 action。这个 action 有可能是 ε-greedy 方法采样出来的值,也有可能是 max Q 对应的 action,也有可能是随机动作,但这是它实际执行的那个动作。”。我想问下,ε-greedy 方法采样出来的值不是就包括了 max Q对应的动作和随机动作吗?
你可能误解了,这边是指用的策略,可以用 ε-greedy 方法,也可采用 max Q 方法或随机采样方法,这三种策略是并行的。
噢噢,理解你的意思了。感谢!
from easy-rl.
我在实践MonterCarlo和Sarsa代码的过程中,发现了以下几个问题:
- 在MonterCarlo章节中,train函数中print('Start to eval !')应该换成print('Start to train !')
- 在Sarsa章节中
- SarsaConfig中的算法名与环境名有误
- agent.py中,没有分情况讨论state是否在Q表格的key中,会导致出现新的state时,有$1-\epslion$的可能选择第一个动作而不是随机
- 在train函数中,next_state的动作并不是next_action,而是update之后的新的action,这是不是将Sarsa的on-policy变为了off-policy
from easy-rl.
我在实践MonterCarlo和Sarsa代码的过程中,发现了以下几个问题:
在MonterCarlo章节中,train函数中print('Start to eval !')应该换成print('Start to train !')
在Sarsa章节中
- SarsaConfig中的算法名与环境名有误
- agent.py中,没有分情况讨论state是否在Q表格的key中,会导致出现新的state时,有Undefined control sequence \epslion1-\epslion的可能选择第一个动作而不是随机
- 在train函数中,next_state的动作并不是next_action,而是update之后的新的action,这是不是将Sarsa的on-policy变为了off-policy
感谢你的细心指点,MC改了,Sarsa第一点已改,第二点设置了一个defaultdict也就是新的state对应的Q为0,如果还有错误,也麻烦截图一下~,理论上应该可以的,第三点如下:
next_action = agent.choose_action(next_state) agent.update(state, action, reward, next_state, next_action,done)
先选取next_action再更新的,不太明白你的意思,可以说得再详细点?
from easy-rl.
from easy-rl.
讲义中,Sarsa的的流程我理解是这样的: 1.利用当前策略,在初始状态S下,选择动作A,得到下一个状态与奖励R 2.得到下一个状态与奖励R 3.利用当前策略,在状态S’,选择下一动作A' 4.利用Q函数的迭代公式更新Q函数 5.把赋给S,A'赋给A 6.重复上述2
4过程得到最终的结果 但是在代码中流程是这样的: 1.利用当前策略,在初始状态S下,选择动作A,得到下一个状态与奖励R 2.利用当前策略,在状态S’,选择下一动作A' 3.利用Q函数的迭代公式更新Q函数 4.把赋给S 5.重复上述14过程得到最终的结果 也就是说,虽然是先选下一时刻的动作,再更新;但是这个动作是下一时刻肯定会执行的动作,而不应该是根据更新后的策略采样的动作 我不知道我理解的对不对
…
------------------ 原始邮件 ------------------ 发件人: "datawhalechina/easy-rl" @.>; 发送时间: 2021年7月14日(星期三) 下午5:36 @.>; 抄送: "王腾 @.@.>; 主题: Re: [datawhalechina/easy-rl] /chapter3/chapter3 (#38) 我在实践MonterCarlo和Sarsa代码的过程中,发现了以下几个问题: 在MonterCarlo章节中,train函数中print('Start to eval !')应该换成print('Start to train !') 在Sarsa章节中 SarsaConfig中的算法名与环境名有误 agent.py中,没有分情况讨论state是否在Q表格的key中,会导致出现新的state时,有Undefined control sequence \epslion1-\epslion的可能选择第一个动作而不是随机 在train函数中,next_state的动作并不是next_action,而是update之后的新的action,这是不是将Sarsa的on-policy变为了off-policy 感谢你的细心指点,MC改了,Sarsa第一点已改,第二点设置了一个defaultdict也就是新的state对应的Q为0,如果还有错误,也麻烦截图一下~,理论上应该可以的,第三点如下“ next_action = agent.choose_action(next_state) agent.update(state, action, reward, next_state, next_action,done) 先选取next_action再更新的,不太明白你的意思,可以说得再详细点? — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
同学,谢谢你的建议,你的理解是对的,已更正~
from easy-rl.
最后一部分,"On-Policy vs. Off-policy",“它只用了一个 policyπ”出现了两遍哦
from easy-rl.
最后一部分,"On-Policy vs. Off-policy",“它只用了一个 policyπ”出现了两遍哦
感谢您的纠正,错误已修改;
另外,最新版教程可以看我们的pdf版本:
https://github.com/datawhalechina/easy-rl/releases
我们后面会慢慢对在线教程进行更新。
from easy-rl.
上面 @johnjim0816 指出的SARSA实现的错误,当前代码并未更新吧?需要PR吗
from easy-rl.
上面 @johnjim0816 指出的SARSA实现的错误,当前代码并未更新吧?需要PR吗
谢谢同学提醒,已改~
from easy-rl.
图 3.32 上面那张图的标号错了,应该是 3.31
from easy-rl.
@jzhangCSER01 感谢您的纠错,文章已更新 👍
from easy-rl.
Related Issues (20)
- 1.7.1 Gym示例 返回值增多了 HOT 3
- 第四章图4.10标注是不是有误? HOT 1
- Edit problem in Chapter3 HOT 1
- 随书代码在哪 HOT 6
- 第五章勘误 HOT 1
- 内容勘误? HOT 3
- 添加参考文献 HOT 1
- SAC代码问题 HOT 2
- 4.3 REINFORCE:蒙特卡洛策略梯度 HOT 1
- 最新的版本,可以出PDF吗 HOT 2
- value_iteration 算法不收敛 ? HOT 1
- 错别字 HOT 2
- DuelingDQN.ipynb中可能存在的两个BUG~
- 我在运行DQN代码时,初始的state总会多一个值。
- 图6.8左下角标识应该是“动作价值(Q)”? HOT 1
- DDPG算法实现出现问题
- 关于书中DDPG算法的疑问
- PPO算法的实现, 为啥要给概率取对数? HOT 2
- 连续动作空间的PPO算法 HOT 2
- dqn算法问题
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from easy-rl.