写在前面
本次课程是参加百度飞桨7日打卡营活动的第二天笔记。
课程链接:https://aistudio.baidu.com/aistudio/education/group/info/1335
主要内容:MDP、状态价值、Q表格
实践:Sarsa、Q-learning
一、状态转移和序列决策
强化学习面对的环境是完全未知的,这里的P函数和R函数是未知的。
二、Q表格
1. Q表格:一本生活手册,包含取得成功的知识。
下面的救护车闯红灯的例子,就体现了 现实世界中奖励reward是延迟的。
2. Q表格:指导每一个Step的动作选择,目标导向
比如股票预测,引入了衰减因子。
reward 折扣因子
Q表格的形式:
三、Sarsa算法
1.Sarsa算法
下面的公式展示了更新的方式,通过不断更新α让Q(St,At) 逐步逼近 [Rt+1 + rQ(St+1,At+1)],这就是Sarsa算法。
2.Sarsa算法思路
3.Sarsa算法编程实践
注意 在执行learn(),需要先根据 下一次的观测next_obs,利用sample()拿到 下一次的动作next_action。
Sarsa实际上是一种 On-Policy的策略。它优化的是它实际执行的策略,他直接拿下一步我一定会执行的action,来优化Q表格。所以在执行过程中,只存在一种策略。它用一种策略来做action的选取,也用一种策略来做优化。
所以对于悬崖的例子,Sarsa知道自己下一步有可能到悬崖那边去,所以他尽量里悬崖远一点。这样就可以保证哪怕下一步有随机动作,他也可以保证在安全区域内。
四、Q-learning算法
五、Sarsa vs Q-learning
他们之间最明显的区别是:
Sarsa需要得到 下一步动作next_action,然后再进行学习learn();但是Q-learning 不需要得到 下一步动作next_action,就可以进行学习learn()。
六、总结
(课后作业感兴趣可以自己做一做,跑一跑)
课后作业
实现Sarsa算法玩迷宫游戏 预期效果:最终输出的 test reward 为1.0
1.课后作业AI Studio运行效果
参照课上老师讲解和 PARL/examples/tutorials 里面的内容,填写完整 Notebook,并运行代码。
2.课后作业本地运行效果
pip install paddlepaddle==1.6.3
pip install parl==1.3.1
pip install gym
git clone --depth=1 https://gitee.com/PaddlePaddle/PARL.git # 下载PARL代码库
dir PARL # 查看代码库根目录
cd PARL #进入到 PARL 文件夹
## Step3 运行sarsa
python examples/tutorials/lesson2/sarsa/train.py
## Step3 运行 q_learning
python examples/tutorials/lesson2/q_learning/train.py