跟随百度6.19日开课的强化学习7日打卡营,入门强化学习。第二课是表格型方法求解RL问题。
Day 2. 基于表格型方法求解RL
强化学习中的智能体agent通过和环境env交互,执行动作action获得反馈reward,逐步学习完善任务执行策略。
在某状态state下执行动作action,得到反馈reward;但复杂任务是一个序列决策任务,需要执行一系列action,以完成任务获得最高的最终收益,因此选择要执行的策略时需要考虑长期收益。
评价某状态s下执行动作a的综合预期收益(中长期收益、最终收益预期),需要考虑此步动作之后后续直到任务结束所有状态、动作分支以及对应的reward,通过全概率公式计算对于当前s下执行动作a的预期收益,此预期收益记做Q。
通过Q表格描述不同状态下执行不同动作对应的预期收益Q。
当环境模型未知时(状态转移函数未知),无法通过穷尽所有任务分支计算不同状态下不同动作的期望收益,只能通过不断与环境交互(采样),记录每一条从任务开始到结束的状态/动作路径(轨迹Trajectory),通过反推得到当前状态s的期望收益。
由于某状态s下执行动作a的后续路径有很多条,在更新此时的预期收益Q时,新交互轨迹计算得到的Q,与当前Q表格中记录的Q值存在偏差,以一定学习率学习这个偏差;通过不断交互更新Q表格,重复足够多学习轮数后,Q表格逼近真实Q值。
Sarsa:On-Policy方法,通过e-greedy方法生成action,以一定概率选择此状态下最大Q对应action或是随机action。
实现sample方法,根据当前状态obs输出action:
这里的随机动作实现了一定的探索效果
learn方法:
更新Q表格中的Q值;需要获得下一步action参与更新,即此处的next_action。
predict方法,输出当前状态下最大Q对应的action:
QLearning:Off-policy方法,默认选择最大Q对应的action。
QLearning的learn方法没有next_action参与更新,默认使用最大Q值对应的action,因此直接以下一个状态对应的最大Q值开始学习。