您好,请问下载资源里面的代码怎么只有2到7章节,后面的代码哪里可以找到呢?
Baselines项目的地址为:https://github.com/openai/baselines
@郑柳洁 Basalines的代码不为读者做些注释么?作者也太图省事了吧
@郑柳洁 可否在官网重新更新一下代码?
为什么代码连一点的简单的注释都没有,直接就扔在那,让人怎么看
您好,感谢阅读。代码的解释在代码下方的文字中。
在课本的155页,Bellman公式为里边的V(s{t+1})代表的意思是在s{t}状态下,执行动作a{t},然后环境会转移到状态s{t+1},这里的v(s{t+1})代表的意思是下一个状态的值函数,对Q的bellman更新公式中的v(s{t+1})同样是这个意思。作者在书中利用矩阵来表示Bellman更新,但是在策略评估对V更新的代码中:
transition = agent.p[ac, i, :]value_sa = np.dot(transition, agent.r + agent.gamma * agent.value_pi)
以及在策略提升对Q的更新的代码中:
agent.value_q[i,j] = np.dot(agent.p[j,i,:], agent.r + agent.gamma * agent.value_pi)
都直接使用的是agent.valuepi,这个地方应该使用每一个state的每一个action产生的对应的下一个state的V(s{t+1})来进行更新才对。这个问题在这一章后面的值迭代代码中仍然存在。
您好,您的反馈我已经发给作者,十分感谢。
您好,已和作者确认,这个写法没有问题。
@郑柳洁 可不可以给我一下作者的联系方式?QQ or 微信?这个地方很明显的问题啊。
@郑柳洁 我也是发现这问题。为什么这样写没问题,得给个解释啊
您好,请问下载资源里面的代码怎么只有2到7章节,后面的代码哪里可以找到呢?
为什么代码连一点的简单的注释都没有,直接就扔在那,让人怎么看
在课本的155页,Bellman公式为里边的V(s{t+1})代表的意思是在s{t}状态下,执行动作a{t},然后环境会转移到状态s{t+1},这里的v(s{t+1})代表的意思是下一个状态的值函数,对Q的bellman更新公式中的v(s{t+1})同样是这个意思。作者在书中利用矩阵来表示Bellman更新,但是在策略评估对V更新的代码中:
transition = agent.p[ac, i, :]
value_sa = np.dot(transition, agent.r + agent.gamma * agent.value_pi)
以及在策略提升对Q的更新的代码中:
agent.value_q[i,j] = np.dot(agent.p[j,i,:], agent.r + agent.gamma * agent.value_pi)
都直接使用的是agent.valuepi,这个地方应该使用每一个state的每一个action产生的对应的下一个state的V(s{t+1})来进行更新才对。这个问题在这一章后面的值迭代代码中仍然存在。