SARSA, Q-learning, DQN
SARSA
1)参数:
α:学习率
γ:折扣系数
Q(s0,a0):初始条件
2)输出:Q(s,a)←Q(s,a)+α[r+γQ(s′,a′)−Q(s,a)]
3)具体用法:
① 采用Q-table的方式存储动作值函数
② 学习特定的state下,特定action的价值Q,最终建立和优化一个Q表格,以state为行,action为列,根据与环境交互得到的reward来更新Q表格。
③ Sarsa是on-policy的更新方式,它的行动策略和评估策略都是ε-greedy策略。
④ Sarsa是先做出动作后更新。先通过ε-greedy策略执行动作,然后根据所执行的动作,更新值函数。
Q-learning
1)参数:
Q(s,a): 就是在某一时刻的 s 状态下(s∈S),采取 动作a (a∈A)动作能够获得收益的期望
S:states集合
A: actions集合
P(s’|s,a):转移函数
R(s,a,s’):奖励函数
γ:折扣因子
α:学习率
2)输出:Q(s,a)←Q(s,a)+α[r+γmaxa′Q(s′,a′)−Q(s,a)],
3)具体用法:
① 根据下一个状态s’中选取最大的Q(s’,a’)值乘以衰变γ加上真实回报值最为Q现实,而根据过往Q表里面的Q(s,a)作为Q估计。
② Q-Learning中用来计算target和预测值的Q是同一个Q,也就是说使用了相同的神经网络。
③ Q-Learning的目的是学习特定State下、特定Action的价值。是建立一个Q-Table,以State为行、Action为列,通过每个动作带来的奖赏更新Q-Table。
④ 4Q-Learning是off-policy的。异策略是指行动策略和评估策略不是一个策略。Q-Learning中选择action的策略是ε-greedy策略,要更新Q表的策略是贪婪策略。
⑤ 与SARSA的区别:Q-learning把选取动作和更新Q表值区分开来,对于两个算法来说,选择动作都是采用某策略(如ϵ−greedy策略),区别就在于Q−learning更新Q值的方式为贪婪策略,即直接选择最大的,而Sarsa更新Q值的方式依然为某策略(ϵ−greedy策略)。
DQN
1)参数:
γ:折扣因子
α:学习率
2)输出:
输入State,输出则是每个动作Action对应的价值评估Value Function(Q值)
3)具体用法:
① 利用神经网络来计算Q值,利用神经网络的输出来代替查找Q值表得到的Q值。
② DQN在原来的Q网络的基础上又引入了一个target Q网络,即用来计算target的网络。它和Q网络结构一样,初始的权重也一样,只是Q网络每次迭代都会更新,而target Q网络是每隔一段时间才会更新。
③ DQN还使用了两个有效的策略,即Experience replay和Fixed Q-target,来打乱经历之间的相关性,有助于收敛。
④ 在监督学习中,神经网络的更新需要计算loss的梯度反向传播,在DQN中也是如此,那么DQN的label是Fixed Q-target。在这个策略下,需要维持两个一模一样结构的神经网络,两个网络分别叫做eval_net和target_net。eval_net用来计算估计值,target_net用来计算目标值。对于一个transition(s, a, r, s’),s会被输入eval_net来计算估计Q值q_eval,s’被会输入target_net来计算目标Q值q_target,q_target再经过贝尔曼方程得到真正的目标label y,
⑤ 在训练神经网络参数时用损失函数(Loss function)计算q_eval和y的损失,在梯度反向传递即可,这个反向更新只更新eval_net。经过若干步骤eval_net的更新会发生一次taregt_net的更新,由于taregt_net于eval_net的结构一模一样,