深度强化学习与DDPG
深度强化学习与DDPG
1. 基本概念
- 折扣回报(discounted return),反映了未来奖励的总和。
- \(U_t=R_t+\gamma R_{t+1}+\gamma^2 R_{t+2}+\gamma^3 R_{t+3}+...\)
- 相邻两个折扣回报之间的关系:\(U_t=R_t+\gamma U_{t+1}\),可用于时间差分TD算法
其中\(\gamma\) 是折扣率,\(R_t\)是 \(t\) 时刻环境给的奖励。
- 动作价值函数(Action-value function),等于\(U_t\)的期望,可以给动作打分。
\(Q_\pi(s_t,a_t)=E[U_t|S_t=s_t,A_t=a_t]\) - 最优动作价值函数(optimal Action-value function),取所有动作的最优值。
\(Q^*(s_t,a_t)=\max\limits_{\pi} Q_\pi(s_t,a_t)\) - 状态价值函数(State-value function),可以告诉当前局势的好坏。
\(V_\pi(s_t)=E_A[Q_\pi(s_t,A)]=\sum\limits_{a}\pi(a|s)·Q_\pi(s,a)\) -- 离散动作
\(V_\pi(s_t)=E_A[Q_\pi(s_t,A)]=\int\pi(a|s)·Q_\pi(s,a)da\)-- 连续动作 - 一般强化学习的任务就是学习策略 \(\pi\) (称策略学习)或者学习价值 \(Q^*\) 函数(称价值学习)。
2. actor-critic method
一种将策略学习(actor)与价值学习(value)结合起来的方法。actor产生决策动作,价值函数再给其评价(critic)。
- 使用策略网络 \(\pi(a|s;\theta)\) 来近似策略 \(\pi(a|s)\)(actor);价值网络近似\(q(s,a;w)\)来表示\(q(s,a)\)(critic)。
- \(V_\pi(s_t)=\sum\limits_{a}\pi(a|s)·Q_\pi(s,a)\approx\sum\limits_{a}\pi(a|s;\theta)·Q_\pi(s,a;w)\)
- 训练策略网络,让其得分(价值网络给出)越来越高。
- 训练价值网络,让其打分越来越精准。
- 训练两个网络的目的是使 \(V_\pi(s_t;\theta,w)=\sum\limits_{a}\pi(a|s;\theta)·Q_\pi(s,a;w)\) 的值增加。
- 网络的更新:
- 通过价值网络\(Q\)的监督,更新策略网络的值 \(\theta\) ,使得V的平均值增加。
- 通过环境给的奖励reward的监督, 更新价值网络\(Q\)的参数\(w\),使得其打分更精准。从而更好估计未来奖励总和\(U_t\)。
- 具体\(\theta\)与\(w\)的更新过程
- 得到状态\(s_t\)。
- 根据策略网络\(\pi(a|s;\theta)\),得到\(a_t\)。
- 执行\(a_t\),得到新状态\(s_{t+1}\)与奖励\(r_t\)。
- 用时间差分TD算法更新价值网络参数\(w\)。
- 用策略梯度算法更新策略网络参数\(\theta\)。
- 步骤4价值网络\(w\)的更新过程:
- 计算t时刻得到的未来奖励总和\(q(s_t,a_t;w_t)\),和t+1时刻得到的未来奖励总和\(q(s_{t+1},a_{t+1};w_t)\)。
- TD target:\(y_t=r_t+\gamma·q(s_{t+1},a_{t+1};w_t)\)。参见第一部分折扣回报。
- Loss:\(L(w)=\frac{1}{2}[q(s_t,a_t;w_t)-y_t]^2\),\(y_t\)作为监督值
- 随机梯度下降:\(w_{t+1}=w_t-\alpha\frac{\partial L(w)}{\partial w}|_{w=w_t}\)。
- 步骤5策略网络\(\theta\)的更新过程:
-
观察状态\(s_t\)。
-
根据策略网络得到动作\(a_t\)。
-
计算\(q(a_t;\theta)\approx q(s_t,a_t;w)\) 用于监督(评价动作)。
-
对策略网络求导\(d_{\theta,t}=\frac{\partial\log\pi(a_t|s_t;\theta)}{\partial\theta}|_{\theta=\theta_t}\) (tensorflow、 pytorch等可以自动求导)
-
近似计算计算策略梯度\(g(a_t,\theta_t)=q_t·d_{\theta,t}\)
策略梯度的非严谨推导
\(form1:\frac{\partial V_\pi(s_t;\theta,w)}{\partial\theta}=\sum\limits_{a}\frac{\partial\pi(a|s;\theta)·Q_\pi(s,a;w)}{\partial\theta}\approx\sum\limits_{a}\frac{\partial\pi(a|s;\theta)}{\partial\theta}·Q_\pi(s,a;w)\) -- 用于离散动作,其中假设\(Q_\pi(s,a;w)\)不依赖 \(\theta\)
\(form2:\frac{\partial V_\pi(s_t;\theta,w)}{\partial\theta}\approx \sum\limits_{a}\frac{\partial\pi(a|s;\theta)}{\partial\theta}·Q_\pi(s,a;w)=\sum\limits_{a}\pi(a|s;\theta)·\frac{\partial\log\pi(a|s;\theta)}{\partial\theta}·Q_\pi(s,a;w)=E_A[\frac{\partial\log\pi(A |s;\theta)}{\partial\theta}·Q_\pi(s,A;w)]\) -- 用于连续动作
对于连续动作,因为神经网络定积分无法积分,可用蒙特卡洛近似(用随机样本来近似总体的期望)。\(\frac{\partial V_\pi(s_t;\theta,w)}{\partial\theta}=E_A[\frac{\partial\log\pi(A |s;\theta)}{\partial\theta}·Q_\pi(s,A;w)]=E_A[g(A,\theta)]=\frac{\partial\log\pi(\hat{a}|s;\theta)}{\partial\theta}·Q_\pi(s,\hat{a};w)\),用随机抽样,\(g(\hat{a},\theta)\)近似该策略梯度。 -
随机梯度上升:\(\theta_{t+1}=\theta_t+\beta·\frac{\partial V_\pi(s_t;\theta,w)}{\partial\theta}\approx\theta_t+\beta·g(a_t,\theta_t)\)。
-
3. DDPG 确定性策略梯度
- DDPG算法为代码如下图,伪代码图也如下所示


左侧这套模型是在训练中“干活”(输出动作)的 Main Network(主网络)。右侧这套模型是 Target Network,即目标网络。可以看出DDPG可以是两个A-C模型组成的。下面具体解释流程,按照算法可以分三层。 - 第一层:
- 初始化主网络的critic价值网络\(Q(s,a|\theta^Q)\)与actor策略网络\(\mu(s|\theta^\mu)\),并复制一个一模一样的目标网络。然后,初始化一个Replay Buffer,用于经验回放。
- 开启一个M次的循环,每次循环都让机器人运行,直到通关或者结束。
- 第二层:对于每次episode,一个机器人启动后要做如下事情
- 取得初始状态\(s_1\)
- 开启一个T次的循环,每次迭代都是一个机器人的 Step。这个循环就是第三层。
- 第三层:
- 首先利用主网络actor \(\mu(s|\theta^\mu)\) 输出一个动作,并加上一个噪声\(N_t\),以便扩大取值范围,让\(a_t\)输出试探更加丰富。
- 然后存储 \((s_t,a_t,r_t,s_{t+1})\) 到Replay Buffer中,用于价值函数的经验回放。之后主网络 \(\mu\) 不会做任何事了。
- 从Replay Buffer随机取 \(N\) 条经验。让目标网络\(\mu^\prime\) 的假装看到了状态 \(s_{i+1}\),并做出一个动作;\(Q^\prime\) 再对其动作评估,算出TD target \(y_i\)。以此作为主网络的监督值,得到损失函数 \(L\) 并由此更新critic。
- 用策略梯度\(\Delta_{\theta^\mu}J\),更新主网络actor。是\(\Delta_{\theta^\mu}J=\frac{\partial J(\theta^\mu)}{\partial \theta^\mu}\)的一个链式求导。\(J(\theta^\mu)\)也就是\(Q\)得到的折扣回报(评价动作的得分)。
- 最后用主网络更新后的值,软更新目标网络的参数。
参考书目:《白话强化学习与PyTorch》--高杨、《深度强化学习》--王树森
参考视频:
https://www.bilibili.com/video/BV1BE411W7TA
https://www.youtube.com/channel/UC9qKcEgXHPFP2-ywYoA-E0Q

浙公网安备 33010602011771号