Q-Learning 、Sarsa与 DQN算法
Q-Learning算法
一、算法思想:
QLearning是强化学习算法中value-based的算法,Q即为 Q ( s , a ) Q(s,a) Q(s,a) 就是在某一时刻的 s 状态下 ( s ∈ S ) (s∈S) (s∈S) ,采取动作 a ( a ∈ A ) a (a∈A) a(a∈A) 动作能够获得收益的期望,环境会根据 agent 的动作反馈相应的回报reward r r r,所以算法的主要思想就是将 State 与 Action 构建成一张 Q-table 来存储Q值,然后根据Q值来选取能够获得最大的收益的动作。
Q-Table | a1 | a2 |
---|---|---|
s1 | q(s1,a1) | q(s1,a2) |
s2 | q(s2,a1) | q(s2,a2) |
s3 | q(s3,a1) | q(s3,a2) |
Qlearning的主要优势就是使用了时间差分法TD(融合了蒙特卡洛和动态规划)能够进行离线学习, 使用 bellman方程可以对马尔科夫过程求解最优策略
二、参数更新方式
利用时间差分法对Q-table的Q值进行计算更新:
Q ( s , a ) ← Q ( s , a ) + α [ r + γ m a x a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ] Q(s,a)←Q(s,a)+α[r+γmax_{a^′}Q(s^′,a^′)−Q(s,a)] Q(s,a)←Q(s,a)+α[r+γmaxa′Q(s′,a′)−Q(s,a)]
根据下一个状态 s ’ s^’ s’ 中选取最大的 Q ( s ′ , a ′ ) Q(s^{'} , a^{'}) Q(s′,a′) 值乘以奖励衰减因子 γ γ γ 加上真实回报值作为 Q现实,而根据过往Q表里面的 Q ( s , a ) Q(s,a) Q(s,a) 作为 Q估计。
Sarsa 算法
Sarsa 的决策部分和 Q-learning 一模一样, 都是使用 Q 表的形式决策, 不同的地方在于 Sarsa 的更新方式。
注意Q-Learning与Sarsa算法的参数更新公式的细微不同,虽然两个算法都是通过时间差分法进行参数更新,但Sarsa算法不需要取下一状态的 Q m a x Q_{max} Qmax,而是通过策略 π \pi π 与环境做交互实时得到下一状态的 Q 值,因此Sarsa算法是一种on-policy的算法(用于采集数据的策略与用于训练的策略是同一个策略)。