主要内容

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+γmaxaQ(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)

而DQN的Loss Function为

L(θ)=E[(TargetQQ(s,a;θ))2]L(\theta)=E\left[(\operatorname{Target} Q-Q(s, a ; \theta))^2\right]

其中 θ\theta 是网络参数,目标为

TargetQ=r+γmaxaQ(s,a;θ)\operatorname{Target} Q=r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime} ; \theta\right)

显然Loss Function是基于Q-Learning更新公式的第二项确定的,两个公式意义相同,都是使当前的Q值逼近Target Q值。
接下来,求 L(θ)L(\theta) 关于 θ\theta 的梯度,使用SGD等方法更新网络参数 θ\theta

2.经验池 (experience replay)
经验池的功能主要是解决相关性及非静态分布问题。具体做法是把每个时间步agent与环境交互得到的转移样本 (st,at,rt,st+1)\left(s_t, a_t, r_t, s_{t+1}\right) 储存到 回放记忆单元,要训练时就随机拿出一些 (minibatch) 来训练。(其实就是将游戏的过程打成碎片存储,训练时随机抽取就避免了相关性问题)
3、目标网络
在Nature 2015版本的DQN中提出了这个改进,使用另一个网络(这里称为TargetNet) 产生Target Q值。具体地, Q(s,a;θi)Q\left(s, a ; \theta_i\right) 表示当前 网络MainNet的输出,用来评估当前状态动作对的值函数; Q(s,a;θi)Q\left(s, a ; \theta_i^{-}\right)表示TargetNet的输出,代入上面求 TargetQ\operatorname{Target} Q 值的公式中得到目 标Q值。根据上面的Loss Function更新MainNet的参数,每经过N轮迭代,将MainNet的参数复制给TargetNet。
引入 TargetNet后,再一段时间里目标 QQ 值使保持不变的,一定程度降低了当前 QQ 值和目标 QQ 值的相关性,提高了算法稳定性。

DDPG

知识蒸馏

  1. 知识蒸馏目的:模型压缩和加速,从大型 teacher 模型中学习小型 student 模型。
  2. 深层神经网络的模型压缩和加速方法通常分为四个不同类别,即模型剪枝和量化,低秩分解,紧凑型卷积滤波器和知识蒸馏。
  3. 组成:知识、蒸馏算法、师生架构
  4. 损失函数:蒸馏损失(负责 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模型的泛化能力,而不是“过拟合训练数据”

img

PD

policy distillation

  • 模型压缩,高校训练;
  • 整合多个策略到单个策略中;
  • 通过在线策略蒸馏提升算法的稳定性, 也可以在大规模数据或动态系统领域作为稳定训练的一种优化方法.
  • 多任务蒸馏的智能体比单任务教师或者联合训练的智能体性能更好.

知识蒸馏, 使用监督回归方法训练一个 target Net, (通常使用 less peaked 或 ‘softened’ 的 target distribution) 使其产生与原始网络相同的输出分布

DQN作为PD的baseline和teacherPD

雅可比

(84条消息) Jacobian矩阵的理解_beebabo的博客-CSDN博客_jacobian矩阵

处方差距

D(πθs(st),πθs(st+δt))\mathcal{D}\left(\pi_{\theta^s}\left(s_t\right), \pi_{\theta^s}\left(s_t+\delta_t\right)\right) during PD.
Under the discrete action selection in RL, given a deterministic policy πθs\pi_{\theta^s}, the action is selected as argmaxaπθs(st,a)\arg \max _a \pi_{\theta^s}\left(s_t, a\right). The distance D(πθs(st),πθs(st+δt))\mathcal{D}\left(\pi_{\theta^s}\left(s_t\right), \pi_{\theta^s}\left(s_t+\delta_t\right)\right) can thus be defined as

D(πθs(st),πθs(st+δt))={0,argmaxaπθs(st,a)=argmaxaπθs(st+δ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}

Note that in PD, the student policy is trained to be consistent with its teacher policy, viz., selecting the same action aTa^T as πθT\pi_{\theta^T}

Gθ((st+δt,aT)=minδ,δtϵ[(πθs(st,aT)+δtstπθs(st,aT))=[πθs(st,aT)πθs(st,a)+δtstπθs(st,a)]]+minδt,δtϵ[δtstπθs(st,aT)δtstπθs(st,a)]=[πθs(st,aT)πθs(st,a)]+minδt,δtϵδtst[πθs(st,aT)πθs(st,a)]=Gθs(st,aT)+minδt,δtϵδtstGθs(st,aT).\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}

交叉熵,剩余动作的

image-20221028104706195

Frobenius 范数

有时候为了比较真实的矩阵和估计的矩阵值之间的误差
或者说比较真实矩阵和估计矩阵之间的相似性,我们可以采用 Frobenius 范数。

Frobenius 范数,简称F-范数,是一种矩阵范数,记为 ||·||_F
定义:设 A= [a_{ij}]_{m\times n},是一个 m\times n 的矩阵,
||A||F=\sqrt{tr(A^TA)}=\sqrt{\sum{i,j}a_{ij}^2} 是矩阵 A 的 Frobenius norm。
用矩阵 B 近似矩阵 A ,即 B=\mathop{\arg\min}_{B} ||A-B||_F