主要内容
adversary agnostic manner under the PD paradigm
许多工作已经研究了将预定义的对抗性纳入训练过程,以在扰动的观察中获得更好的泛化能力。例如,Mirman等人 [8] 和Fischer等人 [9] 利用基于对抗性培训的 [10]policy distillation (PD) [11] 来获得准确而稳健的学生政策,通过从快速梯度符号方法 (FGSM) 和投影梯度下降 (PGD) 生成的对抗示例中学习,可以获得鲁棒性。最近,基于状态-对抗性马尔可夫决策过程 (SA-MDP) 的表述,Zhang等 [12] 提出了一种理论上的原则性正则化,以使政策的处方与对抗扰动保持一致,从而仍然依赖于对手。
DQN
DQN(Deep Q-Network)是深度强化学习(Deep Reinforcement Learning)的开山之作,将深度学习引入强化学习中,构建了 Perception 到 Decision 的 End-to-end 架构。
经验回放 Experience Replay
DQN 面临着几个挑战:
深度学习需要大量带标签的训练数据;
强化学习从 scalar reward 进行学习,但是 reward 经常是 sparse, noisy, delayed;
深度学习假设样本数据是独立同分布的,但是强化学习中采样的数据是强相关的
因此,DQN 采用经验回放(Experience Replay)机制,将训练过的数据进行储存到 Replay Buffer 中,以便后续从中随机采样进行训练,好处就是:1. 数据利用率高;2. 减少连续样本的相关性,从而减小方差(variance)
具体步骤
1、构造标签
前面提到DQN中的CNN作用是对在高维且连续状态下的Q-Table做函数拟合,而对于函数优化问题,监督学习的一般方法是先确定Loss Function,然后求梯度,使用随机梯度下降等方法更新参数。DQN则基于Q-Learning来确定Loss Function。
Q-Learning
有关RL的基础知识不再啰嗦,直接看Q-Learning的更新公式:
Q ∗ ( s , a ) = Q ( s , a ) + α ( r + γ max a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ) Q^*(s, a)=Q(s, a)+\alpha\left(r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime}\right)-Q(s, a)\right)
Q ∗ ( s , a ) = Q ( s , a ) + α ( r + γ a ′ max Q ( s ′ , a ′ ) − Q ( s , a ) )
而DQN的Loss Function为
L ( θ ) = E [ ( Target Q − Q ( s , a ; θ ) ) 2 ] L(\theta)=E\left[(\operatorname{Target} Q-Q(s, a ; \theta))^2\right]
L ( θ ) = E [ ( Target Q − Q ( s , a ; θ ) ) 2 ]
其中 θ \theta θ 是网络参数,目标为
Target Q = r + γ max a ′ Q ( s ′ , a ′ ; θ ) \operatorname{Target} Q=r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime} ; \theta\right)
Target Q = r + γ a ′ max Q ( s ′ , a ′ ; θ )
显然Loss Function是基于Q-Learning更新公式的第二项确定的,两个公式意义相同,都是使当前的Q值逼近Target Q值。
接下来,求 L ( θ ) L(\theta) L ( θ ) 关于 θ \theta θ 的梯度,使用SGD等方法更新网络参数 θ \theta θ 。
2.经验池 (experience replay)
经验池的功能主要是解决相关性及非静态分布问题。具体做法是把每个时间步agent与环境交互得到的转移样本 ( s t , a t , r t , s t + 1 ) \left(s_t, a_t, r_t, s_{t+1}\right) ( s t , a t , r t , s t + 1 ) 储存到 回放记忆单元,要训练时就随机拿出一些 (minibatch) 来训练。(其实就是将游戏的过程打成碎片存储,训练时随机抽取就避免了相关性问题)
3、目标网络
在Nature 2015版本的DQN中提出了这个改进,使用另一个网络(这里称为TargetNet) 产生Target Q值。具体地, Q ( s , a ; θ i ) Q\left(s, a ; \theta_i\right) Q ( s , a ; θ i ) 表示当前 网络MainNet的输出,用来评估当前状态动作对的值函数; Q ( s , a ; θ i − ) Q\left(s, a ; \theta_i^{-}\right) Q ( s , a ; θ i − ) 表示TargetNet的输出,代入上面求 Target Q \operatorname{Target} Q Target Q 值的公式中得到目 标Q值。根据上面的Loss Function更新MainNet的参数,每经过N轮迭代,将MainNet的参数复制给TargetNet。
引入 TargetNet后,再一段时间里目标 Q Q Q 值使保持不变的,一定程度降低了当前 Q Q Q 值和目标 Q Q Q 值的相关性,提高了算法稳定性。
DDPG
知识蒸馏
知识蒸馏目的:模型压缩和加速,从大型 teacher 模型中学习小型 student 模型。
深层神经网络的模型压缩和加速方法通常分为四个不同类别,即模型剪枝和量化,低秩分解,紧凑型卷积滤波器和知识蒸馏。
组成:知识、蒸馏算法、师生架构
损失函数:蒸馏损失(负责 student 学习 teacher 的知识),学生损失(student 模型和真实标签的 CE 损失)。
一般使用蒸馏的时候,往往会找一个参数量更小的student网络,那么相比于teacher来说,这个轻量级的网络不能很好的学习到数据集之前隐藏的潜在关系,如上图所示,相比于one hot的输出,teacher网络是将输出的logits进行了softmax,更加平滑的处理了标签,即将数字1输出成了0.6(对1的预测)和0.4(对0的预测)然后输入到student网络中,相比于1来说,这种softmax含有更多的信息。好模型的目标不是拟合训练数据,而是学习如何泛化到新的数据。所以蒸馏的目标是让student学习到teacher的泛化能力,理论上得到的结果会比单纯拟合训练数据的student要好。另外,对于分类任务,如果soft targets的熵比hard targets高,那显然student会学习到更多的信息。最终student模型学习的是teacher模型的泛化能力,而不是“过拟合训练数据”
PD
policy distillation
模型压缩,高校训练;
整合多个策略到单个策略中;
通过在线策略蒸馏提升算法的稳定性, 也可以在大规模数据或动态系统领域作为稳定训练的一种优化方法.
多任务蒸馏的智能体比单任务教师或者联合训练的智能体性能更好.
知识蒸馏, 使用监督回归方法训练一个 target Net, (通常使用 less peaked 或 ‘softened’ 的 target distribution) 使其产生与原始网络相同的输出分布
DQN作为PD的baseline和teacher
雅可比
(84条消息) Jacobian矩阵的理解_beebabo的博客-CSDN博客_jacobian矩阵
处方差距
D ( π θ s ( s t ) , π θ s ( s t + δ t ) ) \mathcal{D}\left(\pi_{\theta^s}\left(s_t\right), \pi_{\theta^s}\left(s_t+\delta_t\right)\right) D ( π θ s ( s t ) , π θ s ( s t + δ t ) ) during PD.
Under the discrete action selection in RL, given a deterministic policy π θ s \pi_{\theta^s} π θ s , the action is selected as arg max a π θ s ( s t , a ) \arg \max _a \pi_{\theta^s}\left(s_t, a\right) arg max a π θ s ( s t , a ) . The distance D ( π θ s ( s t ) , π θ s ( s t + δ t ) ) \mathcal{D}\left(\pi_{\theta^s}\left(s_t\right), \pi_{\theta^s}\left(s_t+\delta_t\right)\right) D ( π θ s ( s t ) , π θ s ( s t + δ t ) ) can thus be defined as
D ( π θ s ( s t ) , π θ s ( s t + δ t ) ) = { 0 , arg max a π θ s ( s t , a ) = arg max a π θ s ( s t + δ t , a ) 1 , otherwise. \mathcal{D}\left(\pi_{\theta^s}\left(s_t\right), \pi_\theta s\left(s_t+\delta_t\right)\right)= \begin{cases}0, & \arg \max _a \pi_{\theta^s}\left(s_t, a\right) \\ & =\arg \max _a \pi_{\theta^s}\left(s_t+\delta_t, a\right) \\ 1, & \text { otherwise. }\end{cases}
D ( π θ s ( s t ) , π θ s ( s t + δ t ) ) = ⎩ ⎨ ⎧ 0 , 1 , arg max a π θ s ( s t , a ) = arg max a π θ s ( s t + δ t , a ) otherwise.
Note that in PD, the student policy is trained to be consistent with its teacher policy, viz., selecting the same action a T a^T a T as π θ T \pi_{\theta^T} π θ T
G θ ( ( s t + δ t , a T ) = min δ , ∥ δ t ∥ ⩽ ϵ [ ( π θ s ( s t , a T ) + δ t ∇ s t π θ s ( s t , a T ) ) = [ π θ s ( s t , a T ) − π θ s ( s t , a ) + δ t ∇ s t π θ s ( s t , a ) ] ] + min δ t , ∥ δ t ∥ ⩽ ϵ [ δ t ∇ s t π θ s ( s t , a T ) − δ t ∇ s t π θ s ( s t , a ) ] = [ π θ s ( s t , a T ) − π θ s ( s t , a ) ] + min δ t , ∥ δ t ∥ ⩽ ϵ δ t ∇ s t [ π θ s ( s t , a T ) − π θ s ( s t , a ) ] = G θ s ( s t , a T ) + min δ t , ∥ δ t ∥ ⩽ ϵ δ t ∇ s t G θ s ( s t , a T ) . \begin{aligned} \mathcal{G}_\theta(&\left(s_t+\delta_t, a^T\right) \\=& \min _{\delta,\left\|\delta_t\right\| \leqslant \epsilon}\left[\left(\pi_{\theta^s}\left(s_t, a^T\right)+\delta_t \nabla_{s_t} \pi_{\theta^s}\left(s_t, a^T\right)\right)\right.\\=& {\left.\left[\pi_{\theta^s}\left(s_t, a^T\right)-\pi_{\theta^s}\left(s_t, a\right)+\delta_t \nabla_{s_t} \pi_{\theta^s}\left(s_t, a\right)\right]\right] } \\ &+\min _{\delta_t,\left\|\delta_t\right\| \leqslant \epsilon}\left[\delta_t \nabla_{s_t} \pi_{\theta^s}\left(s_t, a^T\right)-\delta_t \nabla_{s_t} \pi_{\theta^s}\left(s_t, a\right)\right] \\=& {\left[\pi_{\theta^s}\left(s_t, a^T\right)-\pi_{\theta^s}\left(s_t, a\right)\right] } \\ &+\min _{\delta_t,\left\|\delta_t\right\| \leqslant \epsilon} \delta_t \nabla_{s_t}\left[\pi_{\theta^s}\left(s_t, a^T\right)-\pi_{\theta^s}\left(s_t, a\right)\right] \\=& \mathcal{G}_{\theta^s}\left(s_t, a^T\right)+\min _{\delta_t,\left\|\delta_t\right\| \leqslant \epsilon} \delta_t \nabla_{s_t} \mathcal{G}_{\theta^s}\left(s_t, a^T\right) . \end{aligned} G θ ( = = = = ( s t + δ t , a T ) δ , ∥ δ t ∥ ⩽ ϵ min [ ( π θ s ( s t , a T ) + δ t ∇ s t π θ s ( s t , a T ) ) [ π θ s ( s t , a T ) − π θ s ( s t , a ) + δ t ∇ s t π θ s ( s t , a ) ] ] + δ t , ∥ δ t ∥ ⩽ ϵ min [ δ t ∇ s t π θ s ( s t , a T ) − δ t ∇ s t π θ s ( s t , a ) ] [ π θ s ( s t , a T ) − π θ s ( s t , a ) ] + δ t , ∥ δ t ∥ ⩽ ϵ min δ t ∇ s t [ π θ s ( s t , a T ) − π θ s ( s t , a ) ] G θ s ( s t , a T ) + δ t , ∥ δ t ∥ ⩽ ϵ min δ t ∇ s t G θ s ( s t , a T ) .
交叉熵,剩余动作的
Frobenius 范数
有时候为了比较真实的矩阵和估计的矩阵值之间的误差
或者说比较真实矩阵和估计矩阵之间的相似性,我们可以采用 Frobenius 范数。
Frobenius 范数,简称F-范数,是一种矩阵范数,记为 。
定义:设 ,是一个 的矩阵,
称 是矩阵 的 Frobenius norm。
用矩阵 近似矩阵 ,即