代码实现为:
key = "%d_%s"%(s, a)
#与环境进行一次交互,从环境中得到新的状态及回报
s1, r, t1, i =grid.step(a)
key1 = ""
#s1处的最大动作
a1 = greedy(qfunc, s1)
key1 = "%d_%s"%(s1, a1)
#利用qlearning方法更新值函数
qfunc[key] = qfunc[key] alpha*(r gamma * qfunc[key1]-qfunc[key])
评论:对于表格型值函数更新过程,我们看到每次更新只影响表格中的一个值,而不会影响行为值函数的其他值,这与行为值函数逼近方法不同。表格型强化学习算法效率很高,一般经过几次迭代后便能收敛。全部代码请参看github.gxnk中的qlearning。qlearning 算法的测试在文件learning_and_test.py中
第2小节:基于策略梯度算法实现详解
该部分需要用到tensorflow和画图库,所以大家先安装一下cpu版的tensorflow。
2.1 Tensorflow的安装:
Step1: 在终端激活虚拟环境(如何安装在上一讲):source activate gymlab
Step2: 安装的tensorflow版本为1.0.0, python=3.5如下命令:
根据该命令所安装的tensorflow是无gpu的,无gpu的tensorflow对于学习毫无障碍。当然,如果大家做项目,建议安装gpu版的tensorflow.
Step3: 安装一个绘图模块, 命令为:
pip3 install matplotlib
2.2 策略梯度算法理论基础
本专栏的第六讲已经给出了策略梯度的理论推导,策略梯度理论表明随机策略的梯度由下式给出:
当随机策略是高斯策略的时候,第六讲已经给出了随机梯度的计算公式。当随机策略并非高斯策略时,如何优化参数?
对于小车倒立摆系统如下图2.2所示。
图2.2 小车倒立摆系统
上一节我们已经深入剖析了gym环境的构建。从小车倒立摆的环境模型中,我们不难看到,小车倒立摆的状态空间为