GithubHelp home page GithubHelp logo

/chapter3/chapter3 about easy-rl HOT 13 OPEN

datawhalechina avatar datawhalechina commented on May 9, 2024
/chapter3/chapter3

from easy-rl.

Comments (13)

Voldet avatar Voldet commented on May 9, 2024

在Q-learning: Off-policy TD Control章节,提到了“Sarsa 在更新 Q 表格的时候,它用到的 A' 。我要获取下一个 Q 值的时候,A' 是下一个 step 一定会执行的 action。这个 action 有可能是 ε-greedy 方法采样出来的值,也有可能是 max Q 对应的 action,也有可能是随机动作,但这是它实际执行的那个动作。”。我想问下,ε-greedy 方法采样出来的值不是就包括了 max Q对应的动作和随机动作吗?

from easy-rl.

qiwang067 avatar qiwang067 commented on May 9, 2024

在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.

Voldet avatar Voldet commented on May 9, 2024

在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.

heiheiteng avatar heiheiteng commented on May 9, 2024

我在实践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.

johnjim0816 avatar johnjim0816 commented on May 9, 2024

我在实践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.

heiheiteng avatar heiheiteng commented on May 9, 2024

from easy-rl.

johnjim0816 avatar johnjim0816 commented on May 9, 2024

讲义中,Sarsa的的流程我理解是这样的: 1.利用当前策略​,在初始状态S下,选择动作A,得到下一个状态​与奖励R 2.得到下一个状态​与奖励R 3.利用当前策略​,在状态S’,选择下一动作A' 4.利用Q函数的迭代公式更新Q函数 5.把​赋给S,A'赋给A 6.重复上述24过程得到最终的结果 但是在代码中流程是这样的: 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.

Strawberry47 avatar Strawberry47 commented on May 9, 2024

最后一部分,"On-Policy vs. Off-policy",“它只用了一个 policyπ”出现了两遍哦

from easy-rl.

qiwang067 avatar qiwang067 commented on May 9, 2024

最后一部分,"On-Policy vs. Off-policy",“它只用了一个 policyπ”出现了两遍哦

感谢您的纠正,错误已修改;

另外,最新版教程可以看我们的pdf版本:
https://github.com/datawhalechina/easy-rl/releases

我们后面会慢慢对在线教程进行更新。

from easy-rl.

ShuhuaGao avatar ShuhuaGao commented on May 9, 2024

上面 @johnjim0816 指出的SARSA实现的错误,当前代码并未更新吧?需要PR吗

from easy-rl.

johnjim0816 avatar johnjim0816 commented on May 9, 2024

上面 @johnjim0816 指出的SARSA实现的错误,当前代码并未更新吧?需要PR吗

谢谢同学提醒,已改~

from easy-rl.

jzhangCSER01 avatar jzhangCSER01 commented on May 9, 2024

图 3.32 上面那张图的标号错了,应该是 3.31

from easy-rl.

qiwang067 avatar qiwang067 commented on May 9, 2024

@jzhangCSER01 感谢您的纠错,文章已更新 👍

from easy-rl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.