虽然看过周志华的机器学习中强化学习一章,但仍然对一些概念不是很清楚,通过这次百度组织的强化学习课程,从代码的角度对强化学习有了一些更深的体会。下面把我对强化学习相关知识作个梳理。
一、相关概念
1、定义:智能体通过在环境中不断尝试而学得一个“策略,根据这个策略,在状态x下就能得到要执行的动作a。其关关键是如何学习到一个好的策略。
四元素<S,A,P,R> 两个空间,两个函数
S: 智能体在环境中的状态
A:动作空间
P:状态转移概率, S*A*S->R
R: 执行动作所获得的奖励。也是一个函数。
2、强化学习与监督学习的区别
强化学习在学习过程中并没有监督学习中的有标记样本,而是在等到最终结果出现之后,才能通过反思之前的动作是否正确的学习。
3、强化学习分类
1)model-based and model-free
Model-based: model是已知的,也即状态转移概率是已知的,该转移所带来的奖赏也是已知的。在算法上,不需要更新两个函数
而model-free:model是要学习的,在算法上要更新两个函数。
2)on-policy and off-policy
探索环境使用的策略和要更新的策略是一个policy(SARSA)
探索环境使用的策略和要更新的策略不是同一个policy(Q-learning)
3)确定性策略与随机性策略
确定性策略: S->A
随机性策略:用概率表示。
二、主要模型
1)基于表格型方法求解RL(Sarsa)
状态-动作-价值用表格表示。
强化学习的目标就是学习这个表格
2)Q-learning
目标策略与行为策略不同,而sarsa 的是相同的。
3)DQN
当状态太多时,采用表格的方法是无法实现 的。因此提出把表格用直接函数表示。
DQN本质上是Q-learning.
DQN有两个创新:经验回放,固定Q目标。
4)基于策略梯度求解R
5)DDPG,基于连续动作的强化学习。
分为两个网络:Q网络,与策略网络