DQN存在两个神经网络,即
(1) Evaluate_Net:用于更新模型参数,每X步进行更新(X为超参)。
(2)Target_Net:用于下图中DQN选择动作a。参数更新的方式为:用 Evaluate_Net 对Target_Net 进行覆盖,每一轮更新一次。
DQN流程图:
学习过程:
(1)从存储记忆中抽取一个batch作为样本输入,同时扔进两个网络里
(2) Evaluate_Net 的输出为 Q e v a l Q_{eval} Qeval,Target_Net的输出为 Q t a r g Q_{targ} Qtarg 。
(3) y = r + γ m a x a Q t a r g y = r + \gamma \underset{a}{max}Q_{targ} y=r+γamaxQtarg. 其中 r r r表示当前循环的Reward(即上图中与环境交互后得到的Reward)。 γ \gamma γ表示折扣因子。
(4)定义 l o s s = ( y − Q e v a l ) 2 loss = (y-Q_{eval})^2 loss=(y−Qeval)2,并采用梯度下降更新模型。
DQN: Y t D Q N = R t + 1 + γ m a x a Q ( S t + 1 , a : θ t − ) Y^{DQN}_t=R_{t+1}+ \gamma\underset{a}{max}Q(S_{t+1},a:\theta^-_t) YtDQN=Rt+1+γamaxQ(St+1,a:θt−). 即模型输出的为Q值,然后根据Q值去计算 Y D Q N Y^{DQN} YDQN.
Doube DQN: Y t D o u b l e D Q N = R t + 1 + γ Q ( S t + 1 , a r g m a x a Q ( S t + 1 , a : θ t ) ; θ t − ) Y^{DoubleDQN}_t=R_{t+1}+ \gamma Q(S_{t+1}, \underset{a}{argmax}Q(S_{t+1},a:\theta_t);\theta^-_t) YtDoubleDQN=Rt+1+γQ(St+1,aargmaxQ(St+1,a:θt);θt−). 即模型输出为动作,然后根据输出的动作先计算对应的Q值,然后在计算 Y D o u b l e D Q N Y^{DoubleDQN} YDoubleDQN.
Actor负责执行动作并从环境中获取反馈(即 R e w a r d e n v Reward_{env} Rewardenv), Critic复杂对Actor进行评价(即 R e w a r d c r i Reward_{cri} Rewardcri), 通过对比 R e w a r d e n v Reward_{env} Rewardenv和 R e w a r d c r i Reward_{cri} Rewardcri,来对Critic进行更新。
1、选取初始状态 S t S_t St;
2、Actor根据状态 S t S_t St选取动作 a t a_t at, 取得状态 S t + 1 S_{t+1} St+1和 R e w a r d e n v Reward_{env} Rewardenv;
3、Critic评价状态 S t + 1 S_{t+1} St+1;
4、计算TD_error: ;
5、根据TD_error更新Critic;
【注】:Actor的输入为 S t S_t St,输出为 a t a_t at
Critic的输入为 S t + 1 S_{t+1} St+1,输出为 R e w a r d c r i Reward_{cri} Rewardcri
Actor-Critic方法的优势:可以单步更新,但比传统的 Policy Gradient要快
Actor-Critic方法的劣势:取决于Critic的价值判断,但是Critic难收敛,再加上Actor的更新,就更难收敛。为了解决收敛问题,提出了Deep Deterministic Policy Gradient(DDPG)。
一句话概括 DDPG: 一种使用 Actor Critic 结构, 但是输出的不是行为的概率, 而是具体的行为, 用于连续动作 (continuous action) 的预测.
即 DDPG = Actor-Critic + DQN,提高了 Actor Critic 的稳定性和收敛性
(图片源于https://mofanpy.com/tutorials/machine-learning/reinforcement-learning/DDPG/)
Policy Gradient 这边, 我们有估计网络和现实网络。
估计网络:用来输出实时的动作, 供 actor 在现实中实行.
现实网络:用来更新价值网络系统的.
Value-Based这边, 我们也有现实网络和估计网络, 他们都在输出这个状态的价值, 而输入端却有不同。
状态现实网络:拿着从动作现实网络来的动作加上状态的观测值加以分析
状态估计网络:拿着当时 Actor 施加的动作当做输入
Actor:
From Critic:这次 Actor 的动作要怎么移动, 才能获得更大的 Q.
From Actor:Actor 要怎么样修改自身参数, 使得 Actor 更有可能做这个动作.
Critic:
上面这个是关于 Critic 的更新, 它借鉴了 DQN 和 Double Q learning 的方式, 有两个计算 Q 的神经网络, Q_target 中依据下一状态, 用 Actor 来选择动作, 而这时的 Actor 也是一个 Actor_target (有着 Actor 很久之前的参数). 使用这种方法获得的 Q_target 能像 DQN 那样切断相关性, 提高收敛性.