深度强化学习总结(自用)

学习强化学习总结的笔记,按照自己的理解总结的,还没总结完,边学边总结,可能存在错误欢迎指正

Deep Q Network(DQN)

DQN存在两个神经网络,即
(1) Evaluate_Net:用于更新模型参数,每X步进行更新(X为超参)。
(2)Target_Net:用于下图中DQN选择动作a。参数更新的方式为:用 Evaluate_Net 对Target_Net 进行覆盖,每一轮更新一次。

DQN流程图

Created with Raphaël 2.2.0 初始化状态S 根据状态S,DQN选择 动作a(Target_Net) 选择的动作a与环境交互, 得到(1)Reward; (2)下一个状态S'; (3)是否结束循环Done DQN存储记忆(S,a,R,S'), 并进行学习(即更新 Evaluate_Net) S = S' Done=True? 结束 yes no

学习过程
(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=(yQeval)2,并采用梯度下降更新模型。

DQN与Double DQN的区别:

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-Critic

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)

Deep Deterministic Policy Gradient(DDPG)

一句话概括 DDPG: 一种使用 Actor Critic 结构, 但是输出的不是行为的概率, 而是具体的行为, 用于连续动作 (continuous action) 的预测.

即 DDPG = Actor-Critic + DQN,提高了 Actor Critic 的稳定性和收敛性

深度强化学习总结(自用)_第1张图片
(图片源于https://mofanpy.com/tutorials/machine-learning/reinforcement-learning/DDPG/)

Policy Gradient 这边, 我们有估计网络和现实网络。
估计网络:用来输出实时的动作, 供 actor 在现实中实行.
现实网络:用来更新价值网络系统的.

Value-Based这边, 我们也有现实网络和估计网络, 他们都在输出这个状态的价值, 而输入端却有不同。
状态现实网络:拿着从动作现实网络来的动作加上状态的观测值加以分析
状态估计网络:拿着当时 Actor 施加的动作当做输入

算法流程:

深度强化学习总结(自用)_第2张图片

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 那样切断相关性, 提高收敛性.

你可能感兴趣的:(深度强化学习,算法)