点我一文弄懂深度学习所有基础和各大主流研究方向!

《繁凡的深度学习笔记》,包含深度学习基础和 TensorFlow2.0,PyTorch 详解,以及 CNN,RNN,GNN,AE,GAN,Transformer,强化学习,元学习,对抗攻击防御,迁移学习等主流研究方向万字综述!


文章目录

  • Efficient Decision-based Black-box Adversarial Attacks on Face Recognition [1]
  • 基于决策的高效人脸识别黑盒对抗攻击
    • Abstract
  • 0x01 论文总结
    • 1. Introduction
    • 2.Related Work
    • 3.Methodology
      • 3.1.Attack Setting
      • 3.2.Evolutionary Attack
    • 4. Experiments
      • 4.1. Experimental Settings
      • 4.2. Experimental Results
      • 4.3. Ablation Study
      • 4.4. Attacks on a Real-World Application
    • 5. Conclusion
  • 0x02 全文翻译
    • 1. Introduction
    • 2.Related Work
    • 3.Methodology
      • 3.1.Attack Setting
      • 3.2.Evolutionary Attack
    • 4. Experiments
      • 4.1. Experimental Settings
      • 4.2. Experimental Results
      • 4.3. Ablation Study
      • 4.4. Attacks on a Real-World Application
    • 5. Conclusion
  • 0x03 论文模型代码实现
  • 0x04 预备知识
  • 0x04.1 协方差矩阵[2, 3, 4]
    • 0x04.1.1 方差与协方差
    • 0x04.1.2 协方差矩阵
    • 0x04.1.3 协方差矩阵的特征值分解
    • 0x04.1.3 协方差矩阵作为线性变换
  • 0x04.2 协方差矩阵自适应调整的进化策略(CMA-ES)[5, 6, 7 ]
    • 0x04.2.1 进化策略
    • 0x04.2.2 简单高斯进化策略
    • 0x04.2.3 协方差自适应进化策略
      • 0x04.2.3.1 基本原理
      • 0x04.2.3.2 更新均值
      • 0x04.2.3.3 控制步长
      • 0x04.2.3.4 自适应协方差矩阵
    • 0x04.3 CMA-ES 实现代码
    • 0x04.4 (1+1)-CMA-ES
  • 0x04.3 双线性插值法[8, 9, 10]
    • 0x04.3.1 插值
    • 0x04.3.2 单线性插值
    • 0x04.3.3 双线性插值
    • 0x04.3.4 五种插值的 opencv(Python)代码实现
  • 0x05 参考资料

Efficient Decision-based Black-box Adversarial Attacks on Face Recognition [1]

基于决策的高效人脸识别黑盒对抗攻击

Abstract

Face recognition has obtained remarkable progress in recent years due to the great improvement of deep convolutional neural networks (CNNs). However, deep CNNs are vulnerable to adversarial examples, which can cause fateful consequences in real-world face recognition applications with security-sensitive purposes. Adversarial attacks are widely studied as they can identify the vulnerability of the models before they are deployed. In this paper, we evaluate the robustness of state-of-the-art face recognition models in the decision-based black-box attack setting, where the attackers have no access to the model parameters and gradients, but can only acquire hard-label predictions by sending queries to the target model. This attack setting is more practical in real-world face recognition systems. To improve the efficiency of previous methods, we propose an evolutionary attack algorithm, which can model the local geometry of the search directions and reduce the dimension of the search space. Extensive experiments demonstrate the effectiveness of the proposed method that induces a minimum perturbation to an input face image with fewer queries. We also apply the proposed method to attack a real-world face recognition system successfully.

Translation

近年来,由于深度卷积神经网络(CNN)的巨大改进,人脸识别取得了显着进展。然而,深度 CNN 容易受到对抗性示例的影响,这可能会在具有安全敏感目的的现实世界人脸识别应用程序中造成致命的后果。对抗性攻击被广泛研究,因为它们可以在部署之前识别模型的漏洞。在本文中,我们评估了最先进的人脸识别模型在基于决策的黑盒攻击设置中的鲁棒性,其中攻击者无法访问模型参数和梯度,而只能获取硬标签通过向目标模型发送查询来进行预测。这种攻击设置在现实世界的人脸识别系统中更实用。为了提高先前方法的效率,我们提出了一种进化攻击算法,该算法可以**对搜索方向的局部几何形状进行建模并降低搜索空间的维度。**大量实验证明了所提出方法的有效性,该方法以较少的查询对输入人脸图像产生最小扰动。我们还应用所提出的方法成功地攻击了现实世界的人脸识别系统。

Summarize

  • 提出了一种进化攻击算法来在基于决策的黑盒设置中生成对抗样本。
  • 通过对搜索方向的局部几何形状进行建模,同时降低搜索空间的维度,从而提高了效率。
  • 应用所提出的方法来综合研究几种最先进的人脸识别模型的鲁棒性。
  • 表明现有的人脸识别模型极易受到黑盒方式的对抗性攻击。
  • 通过所提出的方法攻击了现实世界的人脸识别系统,证明了其实际适用性。

0x01 论文总结

1. Introduction

人脸识别通常有两个子任务:

  • 人脸验证

    • 区分一对人脸图像是否代表同一身份。
  • 人脸识别

    • 将一个图像分类为一个身份。

最先进的人脸识别模型通过使用深度神经网络提取类内方差最小和类间方差最大的人脸特征来实现这两个任务。

现有的人脸识别攻击方法[24,25]主要基于白盒场景,攻击者知道被攻击系统的内部结构和参数。因此,可以通过基于梯度的方法直接优化攻击目标函数。我们关注的是一个更加现实和通用的基于决策的黑盒设置[1],其中没有模型信息被暴露,除了攻击者只能查询目标模型并获得相应的硬标签预测。攻击的目标是通过有限的查询生成具有最小扰动的对抗性例子。这种攻击场景更具挑战性,因为无法直接计算梯度,也无法提供预测概率。另一方面,它更加现实和重要,因为大多数现实世界的人脸识别系统都是黑盒的,只提供硬标签输出。

图1. 基于决策的黑盒攻击设置的演示。给定一个黑盒模型,攻击者使用查询生成具有最小扰动的对抗性示例。

已有多种基于决策的黑盒攻击方法被提出[1,14,4]。然而,它们通常需要大量查询才能收敛从而缺乏效率,或者在有限的查询预算下只能获得扰动相对较大的对抗性示例。因此,我们考虑如何通过用更少的查询对每个样本引入更小的扰动来有效地生成基于决策的黑盒攻击的对抗示例。

  • 在基于决策的黑盒场景下,我们提出了一种新的进化攻击方法,它可以模拟搜索方向的局部几何形状,同时降低搜索空间的维数。进化攻击方法一般适用于任何图像识别任务,并且相对于现有方法显著提高了效率。
  • 我们通过各种环境下基于决策的黑盒攻击,全面评估了几种最先进的人脸识别模型的鲁棒性。我们展示了这些人脸模型在这种环境下的脆弱性。
  • 通过成功攻击一个真实世界的人脸识别系统,我们展示了所提出方法的实际适用性。

2.Related Work

深度人脸识别 DeepFace[31]和DeepID[28]将人脸识别视为一个多类分类问题,并使用深度CNNs来学习softmax loss监督的特征。提出了三重损失[23]和中心损失[33]来增加类别之间的特征空间中的欧几里德余量。在SphereFace [16]中提出了角度软最大损失来学习角度分辨特征。CosFace [32]使用大裕度余弦损失来最大化余弦裕度。ArcFace[5]中提出了附加角裕度损失来学习高分辨特征。

对人脸识别的对抗性攻击 深层CNNs极易受到对抗性例子的影响[30,9,19]。人脸识别也显示出抵抗攻击的脆弱性。在[24]中,扰动被限制在眼镜区域,并由基于梯度的方法生成,这甚至在物理世界中也欺骗了人脸识别系统。敌对的眼镜也可以由生殖网络产生[25]。然而,这些方法依赖于人脸识别模型的白盒操作,这在现实世界的应用中是不现实的。相反,我们着重于评估人脸识别模型在基于决策的黑盒攻击环境中的鲁棒性。

黑盒攻击 黑盒攻击可以分为基于转移、基于分数和基于决策的攻击。基于转移的攻击为白盒模型生成对立的例子,并基于可转移性攻击黑盒模型[17,6]。在基于分数的攻击中,预测概率由模型给出。有几种方法依靠近似梯度来产生对立的例子[3,14]。在基于决策的攻击中,我们只能获得硬标签预测。边界攻击法是基于决策边界上的随机游走[1]。基于优化的方法[4]将该问题表述为连续优化问题,并估计用于优化的梯度。然而,它需要计算沿二分搜索法方向到决策边界的距离。在[14]中,预测概率是通过硬标签预测来估计的。然后,使用自然进化策略(NES)来最大化目标类概率或最小化真实类概率。这些方法通常需要大量的查询来生成具有最小扰动的对抗性例子,或者用很少的查询收敛到大的扰动。

3.Methodology

3.1.Attack Setting

f(x):X→Y(X⊂Rn)f(\boldsymbol{x}): \mathcal{X} \rightarrow \mathcal{Y}\left(\mathcal{X} \subset \mathbb{R}^{n}\right)f(x):XY(XRn)​ 表示预测输入人脸图像标签的人脸识别模型。

对于人脸验证,该模型依靠另一张人脸图像来识别这对图像是否属于同一身份,并输出一个 Y={0,1}Y = \{0,1\}Y={0,1}​​ 的二进制标签。

对于人脸识别,模型 f(x)f(x)f(x)​ 将输入图像 xxx​ 与人脸图像图库集进行比较,然后将 xxx​ 分类为特定身份。所以可以看作是多类分类任务,其中 Y={1,2,...,K}Y = \{1,2,...,K\}Y={12...K}​,KKK​ 为恒等式个数。

给定一个真实的人脸图像 xxx​ ,攻击的目标是在 xxx​ 附近生成一个敌对的人脸图像 x∗x^*x​ ,但是被模型错误分类。它可以通过求解一个约束优化问题
min⁡x∗D(x∗,x),s.t. C(f(x∗))=1\min _{x^{*}} \mathcal{D}\left(\boldsymbol{x}^{*}, \boldsymbol{x}\right), \text { s.t. } \mathcal{C}\left(f\left(\boldsymbol{x}^{*}\right)\right)=1 xminD(x,x),s.t.C(f(x))=1
得到,其中 D(⋅,⋅)\mathcal D(·,·)D(,)​ 是距离度量, C(⋅)\mathcal C(·)C()​ 是一个对抗准则,如果满足攻击要求,取 111​,否则取 000​。我们使用 ℓ2\ell_22​ 距离作为 D\mathcal DD​。Eq.(1)Eq.(1)Eq.(1)​ 中的约束问题显然可以等价地重新表述为以下无约束优化问题:
min⁡x∗L(x∗)=D(x∗,x)+δ(C(f(x∗))=1)\min _{\boldsymbol{x}^{*}} \mathcal{L}\left(\boldsymbol{x}^{*}\right)=\mathcal{D}\left(\boldsymbol{x}^{*}, \boldsymbol{x}\right)+\delta\left(\mathcal{C}\left(f\left(\boldsymbol{x}^{*}\right)\right)=1\right) xminL(x)=D(x,x)+δ(C(f(x))=1)
其中,如果 aaa​​​​​ 为真,则 δ(a)=0\delta(a)=0δ(a)=0​​​​​​​ ,否则 δ(a)=+∞\delta(a)=+\infinδ(a)=+​​​​​​​ 。

通过优化 Eq.(2)Eq. (2)Eq.(2)​​​​​​​,我们可以得到一个扰动最小的图像 x∗x^*x​​​​​​​​ ,根据对抗准则显然它也是有对抗性的。

由于模型 f(x)f(x)f(x)​ 仅提供离散的硬标签输出,因此对抗准则 C\mathcal CC​ 不能定义为交叉熵损失等连续的准则。

我们根据以下两种类型的攻击来指定 C\mathcal CC

❑❑ 躲避攻击(Dodging Attack,非目标攻击)

产生一个被认为是错误的或不被承认的对抗性图像。

对于人脸验证,给定一对属于同一身份的人脸图像,攻击者希望通过修改其中一张图像,使模型识别它们不是同一身份。

准则 C\mathcal CC​ 为:
C(f(x∗,x))=I(f(x∗,x)=0)\mathcal{C}\left(f\left(\boldsymbol{x}^{*},\boldsymbol x\right)\right)=\mathbb{I}\left(f\left(\boldsymbol{x}^{*},\boldsymbol x\right)=0\right) C(f(x,x))=I(f(x,x)=0)
其中 I\mathbb{I}I​​​​​​​​ 是指示函数。
IA(x)={1若 x∈A0若 x∉A\mathbb{I}_{A}(x)=\left\{\begin{array}{ll}1 & \text { 若 } x \in A \\0 & \text { 若 } x \notin A\end{array}\right. IA(x)={10xAx/A
对于人脸识别,攻击者生成一个敌对的人脸图像,目的是将其识别为任何其他身份。

准则 C\mathcal CC​ 为:
C(f(x∗))=I(f(x∗)≠y)\mathcal{C}\left(f\left(\boldsymbol{x}^{*}\right)\right)=\mathbb{I}\left(f\left(\boldsymbol{x}^{*}\right) \neq y\right) C(f(x))=I(f(x)=y)
其中 yyy​​​​​​​ 是真实图像 xxx​​​​​​ 的真实身份。

❑❑ 假冒攻击( Impersonation Attack,目标攻击)

工作原理是寻找被识别为特定身份的对抗图像,这可以用来逃避面部认证系统。

对于人脸验证,攻击者试图找到被识别为另一个图像 x′\boldsymbol x'x​ 的相同身份的敌对图像,而与原始图像不是来自相同的身份。

准则 C\mathcal CC​ 为

C(f(x∗,x′))=I(f(x∗,x′)=1)\mathcal{C}\left(f\left(\boldsymbol{x}^{*}, \boldsymbol x'\right)\right)=\mathbb{I}\left(f\left(\boldsymbol{x}^{*}, \boldsymbol x'\right)=1\right) C(f(x,x))=I(f(x,x)=1)

对于人脸识别,需要将生成的对抗图像归类为特定身份 y∗y^*y
准则 C\mathcal CC​ 为:
C(f(x∗))=I(f(x∗)=y∗)\mathcal{C}\left(f\left(\boldsymbol{x}^{*}\right)\right)=\mathbb{I}\left(f\left(\boldsymbol{x}^{*}\right)=y^{*}\right) C(f(x))=I(f(x)=y)

3.2.Evolutionary Attack

考虑如何直接有效地优化 Eq.(2)Eq.(2)Eq.(2)​​​ ,本文提出了一种新的进化攻击方法来解决黑盒优化问题。我们的方法基于协方差矩阵自适应进化策略(CMA-ES) [10]的一个简单有效的变体,即 (1+1)-CMA-ES [13]


主要思想如下图所示:

图3

其中,黑色圆点表示目标图像 xxx​​​​;蓝色曲线表示决策边界,曲线的上方是不可行域(即 f(x∗)=f(x)f(x^*)=f(x)f(x)=f(x)​​​),曲线下方是可行域(即 f(x∗)≠f(x)f(x^*)\neq f(x)f(x)=f(x)​​​);灰色的 ×××​​ 点表示已经查询过的不可行解,灰色的 ○○​ 点表示已经查询过的可行解,绿色的圆点表示当前可行解。其基本步骤如下:

  1. 以图 3 左图为例,为了探索下一个可行解,我们需要进行采样。黑色椭圆表示采样概率分布,其服从高斯分布 N(0,σ2C)\mathcal N(\boldsymbol 0,\sigma^2C)N(0,σ2C)​。该分布的中心点为当前可行解,协方差矩阵 CCC​​ 是根据历史可行解进行估计的,探索的基本思想就是:根据历史探索点,我们可以计算出各个方向的探索成功率;沿着成功率大的方向继续探索,更容易找到下一个可行解。因此,我们根据该分布进行第一步采样,如从绿色圆点出发的第一个橙色箭头,到达初始候选解(第一个橙色圆点)。

  2. 经过第一步采样,我们可能找到下一个可行解,但是并不能保证 D(x∗,x)\mathcal D(x^*,x)D(x,x)​ 的下降。因此,我们进行第二步探索,即以初始候选解为出发点,沿着目标图像 xxx 移动一小步(见第二个橙色箭头),到达第二个候选解(即第二个橙色圆点)。

  3. 随后,我们在对第二个候选解进行查询,判断其是否满足约束:如果满足,则将其作为最新可行解,如图 3 右子图所示,并对采样概率分布(即黑色椭圆)进行更新;如果不满足,则保持当前解不变,重新上述采样过程。

第 1 步:初始化

第 2 步:开始循环

第 3 步:zzz​​​ 表示对数据的扰动,产生扰动,其中 CCC​​​ 表示用于建模搜索方向的局部几何特征的协方差矩阵

第 4 步:选择 kkk​ 个坐标(即像素点),其中选择它们某个坐标的概率与 CCC 中的每个对角元素大小成正比;

第 5 步:其他的像素点都置为 000​;

第 6 步:通过双线性插值法zzz 扩充为 Rn\R^nRn 的向量;

第 7 步:增加一个偏置使得原图像与对抗样本的 ℓ2\ell_22​ 范数(距离评价)变小,其中 μμμ​ 是一个超参数;

第 8 步:判断是否得到一个更好的解,如果是就进行第 9 步;

第 9 步:更新最优解,并且更新协方差矩阵;


在 (1+1)-CMA-ES 的每次更新迭代中,通过添加随机噪声,从其父代(当前解)生成新的后代(候选解),评估这两个解的目标,并为下一次迭代选择更好的解。这种方法能够解决黑盒优化问题。但是,由于 x∗x^*x 的维数较高,直接应用 (1+1)-CMA-ES 对 Eq.(2)Eq.(2)Eq.(2) 进行优化效率不高。考虑到基于决策的人脸图像黑盒子攻击中的查询限制,原始的 (1+1)-CMA-ES 可能是不可行的。为了加速该算法,我们设计了一个适当的分布来采样每次迭代中的随机噪声,它可以 模拟搜索方向的局部几何形状 。考虑到该问题的特殊性质,我们还提出了几种降低搜索空间维数的技术。

上述算法1 概述了整个进化攻击算法。我们在 m<nm < nm<n​ 的低维空间 Rm\R^mRm​ 中进行搜索,而不是原始的 nnn​ 维输入空间。在每次迭代中,我们首先从 N(0,σ2C)\mathcal{N}\left(\mathbf{0}, \sigma^{2} \mathbf{C}\right)N(0,σ2C)​ 中采样一个随机向量 zzz​,使得 z∈Rmz\in \R^mzRm​,其中 C 是对角协方差矩阵,以模拟搜索方向的局部几何形状。然后,我们随机选择 kkk​ 个坐标进行搜索,假设只有一小部分像素对于寻找对抗图像是重要的。我们通过将其他坐标设置为 000​ 来保持所选的 zzz​ 的 kkk​ 个坐标的值。我们通过 双线性插值zzz​ 提升到输入空间,得到 z~∈Rn\tilde{\boldsymbol z}\in \R^nz~Rn​ 。我们进一步给 z~\tilde zz~ 加上一个偏差,以最小化敌对图像和原始图像之间的距离。我们最终测试是否得到更好的解决方案。如果我们确实找到了更好的解决方案,我们就跳到它上面,更新协方差矩阵。在下面,我们将详细描述算法中的每一步。

3.2.1 初始化

Dodging attack 初始化随机噪声

Impersonation attack 初始化目标实体的图片。

3.2.2 高斯分布的均值

在高维空间中抽样的扰动 zzz​​​​ ,很可能和现有的扰动正交,导致距离度量很难减少,无法训练,因此需要在第7步增加一个的偏置项。

3.2.3 协方差矩阵自适应

协方差矩阵 CCC 的自适应适用于求解不可分离的优化问题,于是在对角协方差矩阵的启发下,设计了更新规则:
pc=(1−cc)pc+cc(2−cc)zσcii=(1−ccov⁡)cii+ccov⁡(pc)i2\begin{array}{c}\boldsymbol{p}_{c}=\left(1-c_{c}\right) \boldsymbol{p}_{c}+\sqrt{c_{c}\left(2-c_{c}\right)} \frac{\boldsymbol{z}}{\sigma} \\c_{i i}=\left(1-c_{\operatorname{cov}}\right) c_{i i}+c_{\operatorname{cov}}\left(\boldsymbol{p}_{c}\right)_{i}^{2}\end{array} pc=(1cc)pc+cc(2cc)

σzcii=(1ccov)cii+ccov(pc)i2

在上述搜索算法中,我们将图像的每个像素当作一个维度。整个搜索空间的维度非常高,这往往意味着搜索效率非常低。为此,我们在搜索中嵌入了两种加速策略:

3.2.4 随机坐标选择

即每次采样只在部分维度(即部分像素)进行,而不是所有维度。维度的选取以采样概率分布为依据,方差大的维度被选中的概率也更高。

3.2.5 降维

扰动空间在一个较低的维度被证明是可以加速黑盒攻击 [3],因此我们使用较小维度的扰动 zzz​​ ,即第 3 步中在 m<nm < nm<n​​ 的低维空间 Rm\R^mRm​​ 中对随机向量 zzz​​ 进行采样(只是减小搜索空间的尺寸),然后在第 6 步通过双线性插值到正常的空间中。

3.2.6 超参数调整

在提出的算法中还有几个超参数,包括 σ,μ,cc\sigma, \mu,c_{c}σ,μ,cc​​​​​​​​​​​​ 和 ccovc_{\text{cov}}ccov​​​​​​​​​​​​。我们简单设置 cc=0.01c_{c}= 0.01cc=0.01​​​​​​​​​​​​ ,ccov=0.001c_{\text{cov}}= 0.001ccov=0.001​​​​​​​​​​​​ 。基于 σ\sigmaσ 应该随着与 xxx 的距离减小而逐渐缩小的直觉,将 σσσ 设定为 0.01⋅Dx~∗,x)0.01·D\tilde{x}^{*} ,x)0.01Dx~,x)μ\muμ 是一个关键的超参数,需要仔细调整。如果 μ\muμ 太大,搜索点可能违反对抗标准,更新成功率低。另一方面,如果 μ\muμ 太小,尽管成功率很高,但我们在最小化 x~∗\tilde{x}^{*}x~xxx 之间的距离方面进展甚微。因此,我们采用 15\dfrac 1 551 成功规则 [21] ,这是进化策略中超参数控制的传统方法,更新 μ\muμμ=μ×exp⁡(Psuccess−15)\mu=\mu \times \exp(P_{\text{success}-\cfrac 1 5})μ=μ×exp(Psuccess51),其中 PsuccessP_{\text{success}}Psuccess​​​​​​​​​​​​​ 是过去几次试验的成功率。

4. Experiments

在这一部分,我们给出了实验结果,以证明所提出的进化攻击方法的有效性。我们综合评估了几种最先进的人脸识别模型在基于决策的黑盒攻击场景下的鲁棒性。我们进一步将提出的方法应用于攻击一个真实世界的人脸识别系统,以证明其实用性。

4.1. Experimental Settings

❑❑ 目标模型

我们研究了三种最先进的人脸识别模型,包括SphereFace[16],CosFace [32]和ArcFace [5]。在测试中,每个图像的特征表示首先由这些模型提取。然后,计算不同图像的特征表示之间的余弦相似度。最后,我们使用阈值策略和最近邻分类器分别进行人脸验证和识别。

❑❑ 数据集

我们在Labeled Face in the Wild(LFW) [12]和MegaFace 15]数据集上进行实验。对于人脸验证,在每个数据集中,我们选择500对人脸图像来躲避攻击,其中每对代表相同的身份。并且,我们选择另外 500500500 对人脸图像进行模拟攻击,其中每对图像来自不同的身份。对于人脸识别,在每个数据集中,我们选择 500500500 个不同身份的 500500500 幅图像组成一个图库集,对应500幅相同身份的图像组成一个探测集。我们对探测集中的图像执行躲避和模拟攻击。对于模拟攻击,目标身份是随机选择的。输入图像大小(即输入空间的维数n)为 112×112×3112×112×3112×112×3 。三种人脸识别模型均能正确识别所选图像。

❑❑ 对比方法

我们将进化攻击方法的性能与所有现有的基于决策的黑盒攻击方法进行了比较,包括边界攻击方法[1]、基于优化的方法[4]和NES在仅标记设置(NES-LO)中的扩展[14]。

❑❑ 评估指标

对于所有方法,生成的对抗性例子保证是对抗性的。因此,我们用均方误差(MSE)来衡量敌对图像和原始图像之间的失真,以评估不同方法的性能。我们将所有实验中每个图像的最大查询次数设置为 100,000100,000100,000。由于空间限制,我们将MegaFace数据集的结果留在附录B中。两个数据集的结果是一致的。我们的方法一般适用于人脸识别以外的情况。我们在附录C中进一步介绍了ImageNet数据集的结果。

4.2. Experimental Results

我们在表 1 中报告了不同人脸验证方法的相应失真值,而在表2中报告了人脸识别的失真值。在图4中展示了躲避攻击和假冒攻击的两个可视化示例。

❑❑ 对比攻击实验

选取了几种最新的基于决策的黑盒攻击算法,包括Boundary [8], Optimization [9] 和 NES-LO [10]。虽然这几种方法是为攻击一般图像分类模型而设计的,但是在替换约束条件以后也可以对人脸识别模型进行攻击。我们对当前最流行的三种人脸识别模型上进行了攻击,包括 SphereFace [11], CosFace [12] 和 ArcFace [1]。


表 1. 人脸验证结果。 我们报告了基于 LFW 数据集,在给定 1,000、5,000、10,000 和 100,000 次查询的情况下,针对 SphereFace、CosFace 和 ArcFace 的不同方法生成的对抗性图像的平均失真 (MSE)。

在相同查询次数下,进化攻击算法所得到的对抗噪声明显小于其他对方方法的噪声。


表 2 . 人脸识别的结果。基于LFW数据集,我们报告了SphereFace、CosFace和ArcFace的不同方法生成的对抗图像的平均失真(MSEMSEMSE​​),给出了 1,0001,0001,000​​、5,0005,0005,000​​、10,00010,00010,000​​ 和 100,000100,000100,000​​​ 次查询。

在相同查询次数下,进化攻击算法所得到的对抗噪声明显小于其他对方方法的噪声。

图2. 人脸验证的结果。我们展示了基于 LFW 数据集的不同攻击方法为 sphereface、CosFace 和 arcface 生成的对抗图像在查询次数上的平均失真(MSEMSEMSE​)曲线。

噪声水平随着查询次数的下降曲线,显然进化方法的下降曲线快于其他对比方法。


图3. 人脸识别的结果。我们展示了基于 LFW 数据集的不同攻击方法为 sphereface、CosFace 和 arcface 生成的对抗图像在查询次数上的平均失真(MSE)曲线。

噪声水平随着查询次数的下降曲线,显然进化方法的下降曲线快于其他对比方法。

图4. 针对 ArcFace [5] 模型的人脸验证的躲避和模仿攻击示例。初始对抗图像是随机噪声或针对每种攻击的目标图像。对抗图像与原始图像之间的失真逐渐减小。我们将显示查询的总数和每个点的均方误差。

随机攻击次数的增加,对抗噪声越来越小,直至人眼无法察觉。图下方的数字代表其包含的对抗噪声的 ℓ2\ell_22​ 范数。

4.3. Ablation Study

我们在本节中进行消融研究,以验证建议方法中每个组件的有效性。我们在LFW数据集上进行了基于人脸验证的实验。特别地,我们分别研究了协方差矩阵自适应、随机坐标选择和降维的影响。

协方差矩阵自适应(CMA)。 为了检验CMA的有用性,我们将CMA与基线方法进行比较,协方差矩阵设置为 In\boldsymbol {\text{I}}_nIn​ 而不更新。在这一部分中,我们不包括随机坐标选择或降维,仅用于检查CMA的效果。我们在表3的前两行显示了给定 10,00010,00010,000​ 个查询的平均失真结果。CMA比基线方法改善了结果。

表3. 四种情况下进化方法的比较:无CMA或SCS;有CMA,无SCS;有CMA和SCS,其中选择概率与C中的元素成正比;与CMA和SCS,其中选择概率设置相等。我们报告了针对人脸验证的躲避/模仿攻击给出的 10,00010,00010,000​ 个查询的平均失真(MSEMSEMSE​)。

随机坐标选择(SCS)。 我们研究SCS的两个方面。首先是SCS是否有用。第二个问题是我们是否应该选择概率与协方差矩阵C中的对角元素成比例的坐标。我们进一步用SCS进行实验,其中我们将SCS的性能与C或in中的每个对角元素成比例的每个坐标的选择概率(每个坐标的概率相等)进行比较。通过比较表3的2-4行,可以看出SCS比等概率采样更有利于获得更好的结果,采样坐标与概率成正比。

降维。 最后我们研究了降维的影响。我们将搜索空间的维数 mmm 设置为 15×15×315×15×315×15×330×30×330×30×330×30×345×45×345×45×345×45×360×60×360×60×360×60×3112×112×3112×112×3112×112×3 。我们对每 mmm 个球面、共面和弧面进行闪避和模拟攻击,并比较图5中的结果。可以看出,进化方法在更低维的搜索空间中收敛更快。然而,如果搜索空间的维数太小(例如,15×15×315 × 15 × 315×15×3),则攻击会导致相对较大的失真。因此,在上述实验中,我们选择了 45×45×345×45×345×45×3 的介质尺寸。

图5。我们展示了由进化方法生成的对抗图像的平均失真(MSE)曲线在不同的搜索空间维度上的查询数量。我们对SphereFace, CosFace和ArcFace的人脸验证执行躲避和模仿攻击。

4.4. Attacks on a Real-World Application

我们将进化攻击方法应用于腾讯AI开放平台中的人脸验证API。这个人脸验证API允许用户上传两张人脸图像,并输出它们的相似度得分。我们将阈值设置为90,即如果相似度得分大于90,则预测两幅图像是相同的身份;如果不是,他们被预测为不同的身份。

我们从LFW数据集中选择10对图像来执行模拟攻击。每对的原始两张人脸图像来自不同的身份。我们为其中一个图像生成一个扰动,并使应用编程接口将敌对图像识别为与另一个图像相同的身份。我们将查询的最大数量设置为10,000。我们使用提出的进化方法攻击人脸验证应用编程接口,并将结果与边界[1]和优化[4]进行比较。我们不提供NES-LO [14]的结果,因为它在10,000次查询中无法生成对抗性图像。我们在表4中显示了敌对图像和原始图像之间的平均失真。我们的方法仍然获得比其他基线方法更小的失真。我们还在图6中显示了两个例子。可以看出,我们的方法生成的对抗性图像在视觉上更接近原始图像,而其他方法生成的图像失真较大,使其与原始图像有所区别。

进化算法可以很轻松地人脸比对系统;在同样查询次数下,进化算法得到的噪声图像,比对比方法得到的噪声图像,更加接近于目标图像,即噪声水平更小。

表4. 模拟攻击的结果对真实世界的人脸验证API。本文报告了不同攻击方法对所选 101010 对图像的平均失真率。

图6. 对真实世界人脸验证API的模拟攻击的例子。我们展示了原始图像对以及由每种方法产生的对抗图像。

5. Conclusion

在本文中,我们提出了一种进化攻击算法,用于在基于决策的黑盒环境中生成对抗实例。我们的方法通过对搜索方向的局部几何形状进行建模,同时降低搜索空间的维数,从而提高了效率。我们应用提出的方法综合研究了几种先进的人脸识别模型的鲁棒性,并与其他方法进行了比较。大量实验证明了该方法的有效性。我们表明,现有的人脸识别模型极易受到黑盒方式的攻击,这为开发更鲁棒的人脸识别模型提出了安全问题。最后,利用该方法攻击了一个真实世界的人脸识别系统,验证了其实用性。

0x02 全文翻译

1. Introduction

深度卷积神经网络(CNNs) [26,29,11]的最新进展已经在广泛的计算机视觉任务中带来了实质性的性能改进。人脸识别作为最重要的计算机视觉任务之一,得到了深层CNNs的极大促进[31,28,23,33,16,32,5]。人脸识别通常有两个子任务:**人脸验证 **和 人脸识别 [12,15]。前者区分一对人脸图像是否代表同一身份,后者将一个图像分类为一个身份。最先进的人脸识别模型通过使用深度神经网络提取类内方差最小和类间方差最大的人脸特征来实现这两个任务。由于这些模型的优异性能,人脸识别在金融/支付、公共访问、犯罪识别等众多应用中被广泛用于身份认证。

尽管在各种应用中取得了巨大的成功,但众所周知,深层CNNs容易受到敌对例子的影响[30,9,19,6]。对于人类观察者来说,这些恶意产生的敌对例子通常通过添加小的扰动而与合法的例子难以区分。但它们可以让深层模型产生不正确的预测。基于深层认知神经网络的人脸识别系统也显示出其对这种敌对例子的脆弱性。例如,可以对眼镜进行对抗性干扰,当戴上眼镜时,攻击者可以逃避被认出或冒充另一个人[24,25]。人脸识别系统在现实应用中的不安全性,尤其是那些具有敏感目的的应用,会导致严重的后果和安全问题。

为了评估人脸识别系统在现实世界应用中的鲁棒性,对抗攻击可以作为一个重要的替代,因为它们可以识别这些系统的脆弱性[2],并有助于提高鲁棒性[9,18]。然而,现有的人脸识别攻击方法[24,25]主要基于白盒场景,攻击者知道被攻击系统的内部结构和参数。因此,可以通过基于梯度的方法直接优化攻击目标函数。在现实世界中,当攻击者无法访问模型细节时,这种设置显然是不切实际的。相反,我们关注的是一个更加现实和通用的基于决策的黑盒设置[1],其中没有模型信息被暴露,除了攻击者只能查询目标模型并获得相应的硬标签预测。攻击的目标是通过有限的查询生成具有最小扰动的对抗性例子。这种攻击场景更具挑战性,因为无法直接计算梯度,也无法提供预测概率。另一方面,它更加现实和重要,因为大多数现实世界的人脸识别系统都是黑盒的,只提供硬标签输出。据我们所知,这是第一次尝试在这种情况下对人脸识别进行对抗性攻击。

图1. 基于决策的黑盒攻击设置的演示。给定一个黑盒模型,攻击者使用查询生成具有最小扰动的对抗性示例。

已有多种基于决策的黑盒攻击方法被提出[1,14,4]。然而,它们缺乏通常需要大量查询才能收敛的效率,或者在有限的查询预算下获得相对较大的扰动。因此,我们考虑如何通过用更少的查询对每个样本引入更小的扰动来有效地生成基于决策的黑盒攻击的对抗示例。

为了解决上述问题,我们提出了一种进化攻击方法,用于在基于决策的黑盒环境中进行查询高效的对抗攻击。在给定攻击目标函数的情况下,该方法仅通过查询就可以以黑盒方式对其进行优化。我们的方法可以通过模拟它们的局部几何形状来找到更好的搜索方向。它通过减少搜索空间的维数来进一步提高效率。在基于决策的黑盒场景下,我们应用所提出的方法综合研究了几种最先进的人脸识别模型的鲁棒性,包括SphereFace [16]、CosFace [32]和ArcFace [5]。在最流行的公共领域人脸识别数据集上进行的大量实验证明了所提出的方法的有效性,这些数据集包括野外标记人脸(LFW) [12]和巨型人脸挑战[15]。我们进一步应用我们的方法来攻击一个真实世界的人脸识别系统,以显示它的实际应用性。总之,我们的主要贡献是:

  • 在基于决策的黑盒场景下,我们提出了一种新的进化攻击方法,它可以模拟搜索方向的局部几何形状,同时降低搜索空间的维数。进化攻击方法一般适用于任何图像识别任务,并且相对于现有方法显著提高了效率。
  • 我们通过各种环境下基于决策的黑盒攻击,全面评估了几种最先进的人脸识别模型的鲁棒性。我们展示了这些人脸模型在这种环境下的脆弱性。
  • 通过成功攻击一个真实世界的人脸识别系统,我们展示了所提出方法的实际适用性。

2.Related Work

深度人脸识别 DeepFace[31]和DeepID[28]将人脸识别视为一个多类分类问题,并使用深度CNNs来学习softmax loss监督的特征。提出了三重损失[23]和中心损失[33]来增加类别之间的特征空间中的欧几里德余量。在SphereFace [16]中提出了角度软最大损失来学习角度分辨特征。CosFace [32]使用大裕度余弦损失来最大化余弦裕度。ArcFace[5]中提出了附加角裕度损失来学习高分辨特征。

对人脸识别的对抗性攻击 深层CNNs极易受到对抗性例子的影响[30,9,19]。人脸识别也显示出抵抗攻击的脆弱性。在[24]中,扰动被限制在眼镜区域,并由基于梯度的方法生成,这甚至在物理世界中也欺骗了人脸识别系统。敌对的眼镜也可以由生殖网络产生[25]。然而,这些方法依赖于人脸识别模型的白盒操作,这在现实世界的应用中是不现实的。相反,我们着重于评估人脸识别模型在基于决策的黑盒攻击环境中的鲁棒性。

黑盒攻击 黑盒攻击可以分为基于转移、基于分数和基于决策的攻击。基于转移的攻击为白盒模型生成对立的例子,并基于可转移性攻击黑盒模型[17,6]。在基于分数的攻击中,预测概率由模型给出。有几种方法依靠近似梯度来产生对立的例子[3,14]。在基于决策的攻击中,我们只能获得硬标签预测。边界攻击法是基于决策边界上的随机游走[1]。基于优化的方法[4]将该问题表述为连续优化问题,并估计用于优化的梯度。然而,它需要计算沿二分搜索法方向到决策边界的距离。在[14]中,预测概率是通过硬标签预测来估计的。然后,使用自然进化策略(NES)来最大化目标类概率或最小化真实类概率。这些方法通常需要大量的查询来生成具有最小扰动的对抗性例子,或者用很少的查询收敛到大的扰动。

3.Methodology

在这一部分,我们首先介绍了基于决策的黑盒攻击对人脸识别模型的设置,然后详细介绍了提出的进化攻击方法。

3.1.Attack Setting

f(x):X→Y(X⊂Rn)f(\boldsymbol{x}): \mathcal{X} \rightarrow \mathcal{Y}\left(\mathcal{X} \subset \mathbb{R}^{n}\right)f(x):XY(XRn) 表示预测输入人脸图像标签的人脸识别模型。对于人脸验证,该模型依靠另一张人脸图像来识别这对图像是否属于同一身份,并输出一个 Y={0,1}Y = \{0,1\}Y={01} 的二进制标签。对于人脸识别,模型 f(x)f(x)f(x) 将输入图像 xxx 与人脸图像图库集进行比较,然后将 xxx 分类为特定身份。所以可以看作是多类分类任务,其中 Y={1,2,...,K}Y = \{1,2,...,K\}Y={12...K}KKK 为恒等式个数。尽管人脸识别模型 f(x)f(x)f(x) 使用额外的人脸图像或一组人脸图像来识别 xxx ,但为了简单起见,我们没有明确描述 f(x)f(x)f(x) 对比较图像的依赖性。

给定一个真实的人脸图像 xxx​ ,攻击的目标是在 xxx​ 附近生成一个敌对的人脸图像 x∗x^*x​ ,但是被模型错误分类。它可以通过求解一个约束优化问题
min⁡x∗D(x∗,x),s.t. C(f(x∗))=1\min _{x^{*}} \mathcal{D}\left(\boldsymbol{x}^{*}, \boldsymbol{x}\right), \text { s.t. } \mathcal{C}\left(f\left(\boldsymbol{x}^{*}\right)\right)=1 xminD(x,x),s.t.C(f(x))=1
得到,其中 D(⋅,⋅)D(·,·)D(,)​​​​​ 是距离度量, C(⋅)C(·)C()​​​​​​ 是一个对抗准则,如果满足攻击要求,取111​​​​​,否则取 000​​​​​。我们用 ℓ2\ell_22​​​​​ 距离为 DDD​​​​。Eq.(1)Eq.(1)Eq.(1)​​ 中的约束问题可以等价地重新表述为以下无约束优化问题
min⁡x∗L(x∗)=D(x∗,x)+δ(C(f(x∗))=1)\min _{\boldsymbol{x}^{*}} \mathcal{L}\left(\boldsymbol{x}^{*}\right)=\mathcal{D}\left(\boldsymbol{x}^{*}, \boldsymbol{x}\right)+\delta\left(\mathcal{C}\left(f\left(\boldsymbol{x}^{*}\right)\right)=1\right) xminL(x)=D(x,x)+δ(C(f(x))=1)
其中,如果 aaa​​​​ 为真,则 δ(a)=0\delta(a)=0δ(a)=0​​​​​​ ,否则 δ(a)=+∞\delta(a)=+\infinδ(a)=+​​​​​​ 。通过优化 Eq.(2)Eq. (2)Eq.(2)​​​​​,我们可以得到一个扰动最小的图像 x∗x^*x​​​​​​ ,根据准则它也是对抗性的。请注意,在上述目标函数中,CCC​​​ 不能定义为交叉熵损失等连续标准,因为模型 f(x)f(x)f(x)​ 在此问题中仅给出离散的硬标签输出。特别是,我们根据以下两种类型的攻击来指定 CCC

躲避攻击相当于产生一个被认为是错误的或不被承认的敌对形象。躲避攻击可以用来保护个人隐私免受过度监视。对于人脸验证,给定一对属于同一身份的人脸图像,攻击者试图修改一个图像,使模型识别它们不是同一身份。所以准则是 C(f(x∗))=I(f(x∗)=0)\mathcal{C}\left(f\left(\boldsymbol{x}^{*}\right)\right)=\mathbb{I}\left(f\left(\boldsymbol{x}^{*}\right)=0\right)C(f(x))=I(f(x)=0)​​ ,其中 I\mathbb{I}I​​ 是指标函数。对于人脸识别,攻击者生成一个敌对的人脸图像,目的是将其识别为任何其他身份。标准是 C(f(x∗))=I(f(x∗)≠y)\mathcal{C}\left(f\left(\boldsymbol{x}^{*}\right)\right)=\mathbb{I}\left(f\left(\boldsymbol{x}^{*}\right) \neq y\right)C(f(x))=I(f(x)=y)​​ ,其中 yyy​ 是真实图像 xxx 的真实身份。

假冒攻击的工作原理是寻找被识别为特定身份的对抗图像,这可以用来逃避面部认证系统。对于人脸验证,攻击者试图找到被识别为另一个图像的相同身份的敌对图像,而原始图像不是来自相同的身份。准则是 C(f(x∗))=I(f(x∗)=1)\mathcal{C}\left(f\left(\boldsymbol{x}^{*}\right)\right)=\mathbb{I}\left(f\left(\boldsymbol{x}^{*}\right)=1\right)C(f(x))=I(f(x)=1) 。对于人脸识别,需要将生成的对抗图像归类为特定身份 y∗y*y,所以 C(f(x∗))=I(f(x∗)=y∗)\mathcal{C}\left(f\left(\boldsymbol{x}^{*}\right)\right)=\mathbb{I}\left(f\left(\boldsymbol{x}^{*}\right)=y^{*}\right)C(f(x))=I(f(x)=y)

3.2.Evolutionary Attack

由于我们不能访问 f(x)f(x)f(x)​ 的配置和参数,只能发送查询来探测模型,我们采用黑盒优化技术来最小化 Eq.(2)Eq.(2)Eq.(2)​ 中的目标函数。当预测概率由模型 [3,14] 给出时,梯度估计方法 [20,8,7] 通过有限差分逼近目标函数的梯度,并通过梯度下降更新解,这通常用于基于分数的黑盒攻击。然而,在硬标签输出的情况下,攻击目标函数是不连续的,输出对小的输入扰动不敏感。因此梯度估计方法不能直接使用。一些方法 [4,14] 成功地将 Eq.(2)Eq.(2)Eq.(2)​ 中的不连续优化问题重新表述为一些连续优化问题,并使用梯度估计方法进行优化。但是他们需要计算一个点到决策边界的距离,或者通过硬标签输出来估计预测的概率,这在实验中是不太有效的。因此,我们考虑如何直接有效地优化 Eq.(2)Eq.(2)Eq.(2)​ 。

本文提出了一种新的进化攻击方法来解决黑盒优化问题。我们的方法基于协方差矩阵自适应进化策略(CMA-ES) [10]的一个简单有效的变体,即 (1+1)-CMA-ES [13]。在 (1+1)-CMA-ES 的每次更新迭代中,通过添加随机噪声,从其父代(当前解)生成新的后代(候选解),评估这两个解的目标,并为下一次迭代选择更好的解。这种方法能够解决黑盒优化问题。但是,由于 x∗x^*x 的维数较高,直接应用 (1+1)-CMA-ES 对 Eq.(2)Eq.(2)Eq.(2) 进行优化效率不高。考虑到基于决策的人脸图像黑盒子攻击中的查询限制,原始的 (1+1)-CMA-ES 可能是不可行的。为了加速该算法,我们设计了一个适当的分布来采样每次迭代中的随机噪声,它可以 模拟搜索方向的局部几何形状 。考虑到该问题的特殊性质,我们还提出了几种降低搜索空间维数的技术。

算法1 概述了整个进化攻击算法。我们在 m<nm < nm<n​ 的低维空间 Rm\R^mRm​ 中进行搜索,而不是原始的 nnn​ 维输入空间。在每次迭代中,我们首先从 N(0,σ2C)\mathcal{N}\left(\mathbf{0}, \sigma^{2} \mathbf{C}\right)N(0,σ2C)​ 中采样一个随机向量 zzz​,使得 z∈Rmz\in \R^mzRm​,其中 C 是对角协方差矩阵,以模拟搜索方向的局部几何形状。然后,我们随机选择 kkk​ 个坐标进行搜索,假设只有一小部分像素对于寻找对抗图像是重要的。我们通过将其他坐标设置为 000​ 来保持所选的 zzz​ 的 kkk​ 个坐标的值。我们通过双线性插值 (详见0x)将 zzz​ 提升到输入空间,得到 z~∈Rn\tilde{\boldsymbol z}\in \R^nz~Rn​ 。我们进一步给 z~\tilde zz~ 加上一个偏差,以最小化敌对图像和原始图像之间的距离。我们最终测试是否得到更好的解决方案。如果我们确实找到了更好的解决方案,我们就跳到它上面,更新协方差矩阵。在下面,我们将详细描述算法中的每一步。

3.2.1 初始化

在算法1中,首先应该初始化 x~∗\boldsymbol{\tilde{x}}^{*}x~ (步骤1中)。如果初始 x~∗\boldsymbol{\tilde{x}}^{*}x~ 不满足对抗准则,则 L(x~∗)\mathcal{L}(\boldsymbol{\tilde{x}}^*)L(x~) 等于 +∞+∞+ 。对于后续迭代,添加一个随机向量很少能使搜索点具有对抗性,因为深度 CNNs 通常对随机噪声具有鲁棒性 [30],因此损失函数将保持为 +∞+∞+ 。所以我们用一个已经满足对抗标准的样本来初始化 x~∗\boldsymbol{\tilde{x}}^{*}x~ 。下面的更新也会保持 x~∗\boldsymbol{\tilde{x}}^{*}x~ 的对抗性,同时最小化 x~∗\boldsymbol{\tilde{x}}^{*}x~x\boldsymbol{x}x 之间的距离,对于闪避攻击,初始 x~∗\boldsymbol{\tilde{x}}^{*}x~ 可以简单的设置为随机向量。对于模拟攻击,我们使用目标图像作为 x~∗\boldsymbol{\tilde{x}}^{*}x~ 的起始点。

3.2.2 高斯分布的均值

我们解释为什么在步骤7中需要给随机向量添加一个偏差项。现在假设搜索空间的维数与输入空间的维数相同,我们选择所有坐标进行搜索(即 k=m=nk = m = nk=m=n)。在每次迭代中,从高斯分布中采样随机向量 zzz 。一般来说,分布应该是无偏的(零均值),以便在搜索空间中进行更好的探索。但是在我们的问题中,从零均值高斯分布中采样随机向量将导致更新概率接近零,如定理1所给出的 n→∞n → \infinn

定理1*(附录A中的证明)假设协方差矩阵C是正定的。设 λmax\lambda _{max}λmaxλmin\lambda _{min}λmin (>0> 0>0) 分别为 CCC 的最大和最小特征值。那么,我们有
Pz∼N(0,σ2C)(L(x~∗+z)<L(x~∗))≤4λmax⁡∥x~∗−x∥2σ2λmin⁡2n2P_{\boldsymbol{z} \sim \mathcal{N}\left(\mathbf{0}, \sigma^{2} \mathbf{C}\right)}\left(\mathcal{L}\left(\tilde{\boldsymbol{x}}^{*}+\boldsymbol{z}\right)<\mathcal{L}\left(\tilde{\boldsymbol{x}}^{*}\right)\right) \leq \frac{4 \lambda_{\max }\left\|\tilde{\boldsymbol{x}}^{*}-\boldsymbol{x}\right\|^{2}}{\sigma^{2} \lambda_{\min }^{2} n^{2}} PzN(0,σ2C)(L(x~+z)<L(x~))σ2λmin2n24λmaxx~x2

从定理1中,我们需要从零均值高斯分布中抽取 O(n2)\mathcal{O}(n^2)O(n2) 个样本,仅用于一次成功的更新,当 nnn 较大时,这是低效且昂贵的。出现这种情况是因为在高维搜索空间中,随机绘制的向量 zzz 几乎与 x~∗−x\tilde{x}^{*}-xx~x 正交,因此距离 D(x~∗+z,x)\mathcal{D}(\tilde{\boldsymbol x}^*+\boldsymbol z, \boldsymbol x)D(x~+z,x) 很少会小于 x~∗,x\mathcal{\tilde{\boldsymbol x}^*, \boldsymbol x}x~,x 。为了解决这一问题,应从偏置分布中采样随机向量 zzz ,力求最小化属于 x~∗\tilde{x}^{*}x~ 与原始图像x的距离。因此,我们在步骤7中添加一个偏向项 µ(x−x~∗)µ(x− \tilde{x}^{*})µ(xx~)到属于 zzz (与 k=m=nk = m = nk=m=n 时的 zzz 相同),其中,µµµ 是一个关键的超参数,控制着向原始图像 xxx 移动的强度。我们将在第3.2.6节中指定使用 µµµ 的更新过程。

3.2.3协方差矩阵自适应

协方差矩阵 C 的自适应适用于解决不可分离的优化问题,因为它可以模拟搜索方向的局部几何形状 [10] 。例如,适当设置的协方差矩阵可以使生成的随机向量主要在窄谷方向。在学习维度之间的所有成对依赖关系时,协方差矩阵的存储和计算复杂度至少为 O(m2)\mathcal O(m^2)O(m2) ,当协方差矩阵较大时是不可接受的。对于黑盒对抗攻击,搜索空间的维数非常大(例如,在我们的实验中,m=45×45×3m = 45 × 45 × 3m=45×45×3)。因此,为了高效计算,我们将协方差矩阵放宽为对角矩阵。受 [22] 对CMA-ES采用对角线协方差矩阵的启发,我们设计了每次成功试验后对角线协方差矩阵C(步骤10)的自适应更新规则为
pc=(1−cc)pc+cc(2−cc)zσcii=(1−ccov⁡)cii+ccov⁡(pc)i2\begin{array}{c}\boldsymbol{p}_{c}=\left(1-c_{c}\right) \boldsymbol{p}_{c}+\sqrt{c_{c}\left(2-c_{c}\right)} \frac{\boldsymbol{z}}{\sigma} \\c_{i i}=\left(1-c_{\operatorname{cov}}\right) c_{i i}+c_{\operatorname{cov}}\left(\boldsymbol{p}_{c}\right)_{i}^{2}\end{array} pc=(1cc)pc+cc(2cc)

σzcii=(1ccov)cii+ccov(pc)i2

其中 Pc∈Rm\boldsymbol P_c\in\R^mPcRm 称为进化路径,因为它存储指数衰减的成功搜索方向;对于 cii,(i=1,...,m)c_{ii},(i = 1,...,m)cii,(i=1,...,m), 是 CCC 的对角元素,(Pc)i(\boldsymbol P_c)_i(Pc)iPc\boldsymbol P_cPc 的第 III 个元素。ccc_{c}ccccovc_{cov}ccov​ 是 CMA 的两个超参数。对这次更新的一个直观解释是,沿着过去成功方向的差异应该扩大,以便将来搜索。

表 1. 人脸验证的结果。 我们报告了基于 LFW 数据集,在给定 1,0001,0001,000​​、5,0005,0005,000​、10,00010,00010,000​ 和 100,000100,000100,000​​ 次查询的情况下,针对 SphereFace、CosFace 和 ArcFace 的不同方法生成的对抗性图像的平均失真(MSEMSEMSE)。

3.2.4随机坐标选择

对于对抗攻击,添加到图像中的扰动可能非常稀疏,以欺骗深层 CNNs [27],这表明只有一小部分坐标(像素)足以找到对抗图像。如果我们能够确定重要的坐标,我们还可以加速黑盒优化。然而,在基于决策的黑盒攻击环境中,这不是小事。幸运的是,我们的算法提供了一种自然的方法来找到有用的坐标进行搜索,因为对角协方差矩阵C中的元素代表了过去成功试验的首选坐标,即,ciic_{ii}cii​​​​ 越大,根据以往的经验,沿第 iii​​​​ 个坐标搜索的成功率更高。据此,在每次迭代中,我们选择 k(k≪m)k (k ≪ m)k(km)​​​​ 坐标来生成随机向量 zzz​​​​ ,选择第 iii​​​​ 个坐标的概率与 ciic_{ii}cii​​​​ 成比例(在步骤4 - 5中)。

3.2.5降维

已经证明搜索空间的降维对于加速黑盒攻击是有用的 [3] 。基于此,我们在 m<nm < nm<n​ 的低维空间 Rm\R^mRm​ 中对随机向量 zzz​ 进行采样(在步骤3中)。然后,我们采用一个向上扩展的操作符将 zzz​ 投影到原始的空间 Rn\R^nRn​ (在步骤6中)。请注意,我们不改变输入图像的尺寸,而只是减小搜索空间的尺寸。具体来说,我们使用双线性插值方法作为向上扩展算子

3.2.6超参数调整

在提出的算法中还有几个超参数,包括 σ,μ,cc\sigma, \mu,c_{c}σ,μ,cc​​​​​​​​​​​​ 和 ccovc_{\text{cov}}ccov​​​​​​​​​​​​。我们简单设置 cc=0.01c_{c}= 0.01cc=0.01​​​​​​​​​​​​ ,ccov=0.001c_{\text{cov}}= 0.001ccov=0.001​​​​​​​​​​​​ 。基于 σ\sigmaσ 应该随着与 xxx 的距离减小而逐渐缩小的直觉,将 σσσ 设定为 0.01⋅Dx~∗,x)0.01·D\tilde{x}^{*} ,x)0.01Dx~,x)μ\muμ 是一个关键的超参数,需要仔细调整。如果 μ\muμ 太大,搜索点可能违反对抗标准,更新成功率低。另一方面,如果 μ\muμ 太小,尽管成功率很高,但我们在最小化 x~∗\tilde{x}^{*}x~xxx 之间的距离方面进展甚微。因此,我们采用 15\dfrac 1 551 成功规则 [21] ,这是进化策略中超参数控制的传统方法,更新 μ\muμμ=μ×exp⁡(Psuccess−15)\mu=\mu \times \exp(P_{\text{success}-\cfrac 1 5})μ=μ×exp(Psuccess51),其中 PsuccessP_{\text{success}}Psuccess​​​​​​​​​​​​​ 是过去几次试验的成功率。

4. Experiments

在这一部分,我们给出了实验结果,以证明所提出的进化攻击方法的有效性。我们综合评估了几种最先进的人脸识别模型在基于决策的黑盒攻击场景下的鲁棒性。我们进一步将提出的方法应用于攻击一个真实世界的人脸识别系统,以证明其实用性。

4.1. Experimental Settings

目标模型。我们研究了三种最先进的人脸识别模型,包括SphereFace[16],CosFace [32]和ArcFace [5]。在测试中,每个图像的特征表示首先由这些模型提取。然后,计算不同图像的特征表示之间的余弦相似度。最后,我们使用阈值策略和最近邻分类器分别进行人脸验证和识别。

数据集。 我们在Labeled Face in the Wild(LFW) [12]和MegaFace 15]数据集上进行实验。对于人脸验证,在每个数据集中,我们选择500对人脸图像来躲避攻击,其中每对代表相同的身份。并且,我们选择另外 500500500 对人脸图像进行模拟攻击,其中每对图像来自不同的身份。对于人脸识别,在每个数据集中,我们选择 500500500 个不同身份的 500500500 幅图像组成一个图库集,对应500幅相同身份的图像组成一个探测集。我们对探测集中的图像执行躲避和模拟攻击。对于模拟攻击,目标身份是随机选择的。输入图像大小(即输入空间的维数n)为 112×112×3112×112×3112×112×3 。三种人脸识别模型均能正确识别所选图像。

对比方法。 我们将进化攻击方法的性能与所有现有的基于决策的黑盒攻击方法进行了比较,包括边界攻击方法[1]、基于优化的方法[4]和NES在仅标记设置(NES-LO)中的扩展[14]。

评估指标。 对于所有方法,生成的对抗性例子保证是对抗性的。因此,我们用均方误差(MSE)来衡量敌对图像和原始图像之间的失真,以评估不同方法的性能。我们将所有实验中每个图像的最大查询次数设置为 100,000100,000100,000。由于空间限制,我们将MegaFace数据集的结果留在附录B中。两个数据集的结果是一致的。我们的方法一般适用于人脸识别以外的情况。我们在附录C中进一步介绍了ImageNet数据集的结果。

4.2. Experimental Results

我们在这一部分报告了LFW数据集的结果。我们通过边界、优化、NES-LO和提出的进化方法分别对球面、共面和弧面进行躲避攻击和模仿攻击。对于我们的方法,我们将搜索空间的维数设置为 m=45×45×3,k=m20m = 45×45×3,k =\dfrac m {20}m=45×45×3k=20m​​​ 用于随机坐标选择。对于其他方法,我们采用默认设置。我们计算每一种方法生成的对抗图像的平均失真(MSE)超过所选的 500500500​​​ 幅图像。并且,在图2中示出了用于面部验证的查询数量的失真曲线,而在图3中示出了用于面部识别的失真曲线。此外,或者 100010001000​​​、500050005000​​​、100001000010000​​​、100000100000100000​​​​ 次查询,我们在表1中报告了不同人脸验证方法的相应失真值,而在表2中报告了人脸识别的失真值。图4中还展示了躲避攻击和假冒攻击的两个可视化示例。

表2。人脸识别的结果。基于LFW数据集,我们报告了SphereFace、CosFace和ArcFace的不同方法生成的对抗图像的平均失真(MSEMSEMSE​),给出了 1,0001,0001,000​、5,0005,0005,000​、10,00010,00010,000​ 和 100,000100,000100,000​ 次查询。

图2. 人脸验证的结果。我们展示了基于 LFW 数据集的不同攻击方法为 sphereface、CosFace 和 arcface 生成的对抗图像在查询次数上的平均失真(MSEMSEMSE​​)曲线。

图3。人脸识别的结果。我们展示了基于 LFW 数据集的不同攻击方法为 sphereface、CosFace 和 arcface 生成的对抗图像在查询次数上的平均失真(MSE)曲线。

图4。针对 ArcFace [5] 模型的人脸验证的躲避和模仿攻击示例。初始对抗图像是随机噪声或针对每种攻击的目标图像。对抗图像与原始图像之间的失真逐渐减小。我们将显示查询的总数和每个点的均方误差。

上述结果表明,与其他方法相比,我们的方法在两个任务(即人脸验证和识别)、两个攻击设置(即躲闪和模仿)和所有人脸模型上的收敛速度更快,失真更小。例如,如表1和表2所示,在给定 500050005000​ 个查询的情况下,我们的方法得到的失真比第二好方法(即优化)生成的失真小 303030​ 倍左右,这验证了所提出方法的有效性。从图4可以看出,2,0002,0002,000 个查询足以生成视觉上不可区分的敌对示例。对于NES-洛,首先使用硬标签预测来估计预测概率(例如,252525 次查询),然后通过NES近似梯度(例如, 404040 次试验)。因此,这种方法仅一次更新就需要 100010001000 多次查询,这将导致最坏的结果。

应该注意的是,人脸识别模型极易受到对抗性例子的影响。如 图4 所示,这些模型可以被只有 1e−51e^{-5}1e5​ 失真的对抗性例子以黑箱方式愚弄,这对于人类来说是视觉上不可察觉的。

4.3. Ablation Study

我们在本节中进行消融研究,以验证建议方法中每个组件的有效性。我们在LFW数据集上进行了基于人脸验证的实验。特别地,我们分别研究了协方差矩阵自适应、随机坐标选择和降维的影响。

协方差矩阵自适应(CMA)。 为了检验CMA的有用性,我们将CMA与基线方法进行比较,协方差矩阵设置为 In\boldsymbol {\text{I}}_nIn​ 而不更新。在这一部分中,我们不包括随机坐标选择或降维,仅用于检查CMA的效果。我们在表3的前两行显示了给定 10,00010,00010,000​ 个查询的平均失真结果。CMA比基线方法改善了结果。

表3. 四种情况下进化方法的比较:无CMA或SCS;有CMA,无SCS;有CMA和SCS,其中选择概率与C中的元素成正比;与CMA和SCS,其中选择概率设置相等。我们报告了针对人脸验证的躲避/模仿攻击给出的 10,00010,00010,000​ 个查询的平均失真(MSEMSEMSE​)。

随机坐标选择(SCS)。 我们研究SCS的两个方面。首先是SCS是否有用。第二个问题是我们是否应该选择概率与协方差矩阵C中的对角元素成比例的坐标。我们进一步用SCS进行实验,其中我们将SCS的性能与C或in中的每个对角元素成比例的每个坐标的选择概率(每个坐标的概率相等)进行比较。通过比较表3的2-4行,可以看出SCS比等概率采样更有利于获得更好的结果,采样坐标与概率成正比。

降维。 最后我们研究了降维的影响。我们将搜索空间的维数 mmm 设置为 15×15×315×15×315×15×330×30×330×30×330×30×345×45×345×45×345×45×360×60×360×60×360×60×3112×112×3112×112×3112×112×3 。我们对每 mmm 个球面、共面和弧面进行闪避和模拟攻击,并比较图5中的结果。可以看出,进化方法在更低维的搜索空间中收敛更快。然而,如果搜索空间的维数太小(例如,15×15×315 × 15 × 315×15×3),则攻击会导致相对较大的失真。因此,在上述实验中,我们选择了 45×45×345×45×345×45×3 的介质尺寸。

图5。我们展示了由进化方法生成的对抗图像的平均失真(MSE)曲线在不同的搜索空间维度上的查询数量。我们对SphereFace, CosFace和ArcFace的人脸验证执行躲避和模仿攻击。

4.4. Attacks on a Real-World Application

在这一部分,我们将进化攻击方法应用于腾讯AI开放平台2中的人脸验证API。这个人脸验证API允许用户上传两张人脸图像,并输出它们的相似度得分。我们将阈值设置为90,即如果相似度得分大于90,则预测两幅图像是相同的身份;如果不是,他们被预测为不同的身份。

我们从LFW数据集中选择10对图像来执行模拟攻击。每对的原始两张人脸图像来自不同的身份。我们为其中一个图像生成一个扰动,并使应用编程接口将敌对图像识别为与另一个图像相同的身份。我们将查询的最大数量设置为10,000。我们使用提出的进化方法攻击人脸验证应用编程接口,并将结果与边界[1]和优化[4]进行比较。我们不提供NES-LO [14]的结果,因为它在10,000次查询中无法生成对抗性图像。我们在表4中显示了敌对图像和原始图像之间的平均失真。我们的方法仍然获得比其他基线方法更小的失真。我们还在图6中显示了两个例子。可以看出,我们的方法生成的对抗性图像在视觉上更接近原始图像,而其他方法生成的图像失真较大,使其与原始图像有所区别。

表4。模拟攻击的结果对真实世界的人脸验证API。本文报告了不同攻击方法对所选10对图像的平均失真率。

图6。对真实世界人脸验证API的模拟攻击的例子。我们展示了原始图像对以及由每种方法产生的对抗图像。

5. Conclusion

在本文中,我们提出了一种进化攻击算法,用于在基于决策的黑盒环境中生成对抗实例。我们的方法通过对搜索方向的局部几何形状进行建模,同时降低搜索空间的维数,从而提高了效率。我们应用提出的方法综合研究了几种先进的人脸识别模型的鲁棒性,并与其他方法进行了比较。大量实验证明了该方法的有效性。我们表明,现有的人脸识别模型极易受到黑盒方式的攻击,这为开发更鲁棒的人脸识别模型提出了安全问题。最后,利用该方法攻击了一个真实世界的人脸识别系统,验证了其实用性。

References

[1] W. Brendel, J. Rauber, and M. Bethge. Decision-based adversarial attacks: Reliable attacks against black-box machine learning models. In ICLR, 2018. 2, 5, 6, 8
[2] N. Carlini and D. Wagner. Towards evaluating the robustness of neural networks. In IEEE Symposium on Security and Privacy, 2017. 2
[3] P.-Y. Chen, H. Zhang, Y. Sharma, J. Yi, and C.-J. Hsieh. Zoo: Zeroth order optimization based black-box attacks to deep neural networks without training substitute models. In Proceedings of the 10th ACM Workshop on Artificial Intelligence and Security, pages 15–26. ACM, 2017. 2, 3, 5
[4] M. Cheng, T. Le, P.-Y. Chen, J. Yi, H. Zhang, and C.-J. Hsieh. Query-efficient hard-label black-box attack: An optimization-based approach. arXiv preprint
arXiv:1807.04457, 2018. 2, 3, 5, 6, 8
[5] J. Deng, J. Guo, and S. Zafeiriou. Arcface: Additive angular margin loss for deep face recognition. arXiv preprint arXiv:1801.07698, 2018. 1, 2, 5, 6, 7
[6] Y. Dong, F. Liao, T. Pang, H. Su, J. Zhu, X. Hu, and J. Li. Boosting adversarial attacks with momentum. In CVPR, 2018. 1, 2
[7] A. D. Flaxman, A. T. Kalai, and H. B. Mcmahan. Online convex optimization in the bandit setting:gradient descent without a gradient. In Sixteenth ACM-SIAM Symposium on Discrete Algorithms, pages 385–394, 2005. 3
[8] S. Ghadimi and G. Lan. Stochastic first- and zeroth-order methods for nonconvex stochastic programming. SIAM Journal on Optimization, 23(4):2341–2368, 2013. 3
[9] I. J. Goodfellow, J. Shlens, and C. Szegedy. Explaining and harnessing adversarial examples. In ICLR, 2015. 1, 2
[10] N. Hansen and A. Ostermeier. Completely derandomized self-adaptation in evolution strategies. Evolutionary computation, 9(2):159–195, 2001. 3, 4
[11] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016. 1
[12] G. B. Huang, M. Mattar, T. Berg, and E. Learned-Miller. Labeled faces in the wild: A database forstudying face recognition in unconstrained environments. In Workshop on faces in’Real-Life’Images: detection, alignment, and recognition, 2008. 1, 2, 5
[13] C. Igel, T. Suttorp, and N. Hansen. A computational efficient covariance matrix update and a (1+ 1)-cma for evolution strategies. In Proceedings of the 8th annual conference on Genetic and evolutionary computation, pages 453–460. ACM, 2006. 3
[14] A. Ilyas, L. Engstrom, A. Athalye, and J. Lin. Black-box adversarial attacks with limited queries and information. In ICML, 2018. 2, 3, 5, 6, 8
[15] I. Kemelmacher-Shlizerman, S. M. Seitz, D. Miller, and E. Brossard. The megaface benchmark: 1 million faces for recognition at scale. In CVPR, 2016. 1, 2, 5
[16] W. Liu, Y. Wen, Z. Yu, M. Li, B. Raj, and L. Song. Sphereface: Deep hypersphere embedding for face recognition. In CVPR, 2017. 1, 2, 5, 6

0x03 论文模型代码实现

待更…

0x04 预备知识

0x04.1 协方差矩阵[2, 3, 4]

0x04.1.1 方差与协方差

方差 是用来度量单个随机变量离散程度

方差的计算公式为:
σx2=1n−1∑i=1n(xi−xˉ)2\sigma_{x}^{2}=\frac{1}{n-1} \sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2} σx2=n11i=1n(xixˉ)2
其中, nnn​​​​ 表示样本量,xˉ\bar xxˉ​​​ 表示观测样本的均值,σx2\sigma^2_xσx2​​ 或者 var(x)\text{var}(x)var(x)​ 表示随机变量 xxx​ 的方差。

方差只能用于解释平行于特征空间轴方向的数据传播。考虑如图一所示的二维特征空间:

图一:数据的对角线分布由协方差捕获。

对于给定的这个数据,我们可以计算出在 xxx​​​​​ 方向上的方差 σ(x,x)\sigma(x,x)σ(x,x)​​ 与 yyy​​ 方向上的方差 σ(y,y)\sigma(y,y)σ(y,y)​ ,但是我们仅通过方差分别得到数据的​水平传播与垂直传播并不能清晰地解释图中非常明显的对角线关系。通过观察图2可以很明显地发现,如果一个数据点的 xxx 值增加,那么 yyy​ 值也会随之增加,产生了明显的正相关性。这种两个随机变量之间的相关性可以通过拓展方差的概念得到的数据之间的“协方差”表示:

协方差 是用来刻画 两个随机变量相似程度,换句话说,协方差是对两个随机变量联合分布线性相关程度的一种度量。

协方差的计算公式为:
σ(x,y)=E[(x−E(x))(y−E(y))]=1n−1∑i=1n(xi−xˉ)(yi−yˉ)\begin{aligned}\sigma(x, y)&=\mathbb{E}[(x-\mathbb E(x))(y-\mathbb{E}(y))]\\& =\frac{1}{n-1} \sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)\left(y_{i}-\bar{y}\right)\end{aligned} σ(x,y)=E[(xE(x))(yE(y))]=n11i=1n(xixˉ)(yiyˉ)
其中,xˉ,yˉ\bar x,\bar yxˉ,yˉ​ 分别表示两个随机变量所对应的观测样本均值。σ(x,y)\sigma(x,y)σ(x,y)​ 或者 cov(x,y)\text{cov}(x, y)cov(x,y)​ 表示随机变量 x,yx,yx,y​ 之间的协方差。

我们可以发现,方差 σx2\sigma^2_xσx2​ 可以看做是随机变量 xxx​ 关于其本身的协方差 σ(x,x)\sigma(x, x)σ(x,x)​,即:
σx2=1N−1∑i=1N(xi−μ)2=E[(x−E(x))(x−E(x))]=σ(x,x)\begin{aligned}\sigma_{x}^{2} &=\frac{1}{N-1} \sum_{i=1}^{N}\left(x_{i}-\mu\right)^{2} \\&=\mathbb{E}[(x-\mathbb{E}(x))(x-\mathbb{E}(x))] \\&=\sigma(x, x)\end{aligned} σx2=N11i=1N(xiμ)2=E[(xE(x))(xE(x))]=σ(x,x)

两个随机变量越线性相关,协方差越大, 两个变量完全线性无关,协方差为零。

由于随机变量之间的取值范围不同,两个协方差不具备可比性。

例如给定三个随机变量 x,y,zx,y,zx,y,z,若想要比较 xxxyyyxxxzzz 的线性相关程度,我们不能直接比较 σ(x,y)\sigma(x,y)σ(x,y)σ(y,z)\sigma(y, z)σ(y,z)

定义相关系数:
η=cov⁡(x,y)var⁡(x)⋅var⁡(y)\eta=\frac{\operatorname{cov}(x, y)}{\sqrt{\operatorname{var}(x) \cdot \operatorname{var}(y)}} η=var(x)var(y)

cov(x,y)
通过 xxx​​​​​ 的方差 var(x)\text{var}(x)var(x)​​​​​ 与 yyy​​​​​ 的方差 var⁡(y)\text{var}⁡(y)var(y)​​​​​ 对协方差 cov(x,y)\text{cov}(x,y)cov(x,y)​​​​​归一化, 得到相关系数 ηηη​​​​​,ηηη​​​​​ 的取值范围是[−1,1][−1,1][1,1]​​​​​。111​​​​ 表示完全线性相关,−1−11​​ 表示完全线性负相关,000​​ 表示线性无关。线性无关并不代表完全无关,更不代表相互独立。

0x04.1.2 协方差矩阵

给定 ddd​​​ 个随机变量 xk,k∈[1,d]x_k,k\in[1, d]xk,k[1,d]​ ,根据方差的定义,这些随机变量的方差为
σ(xk,xk)=1n−1∑i=1n(xki−xˉk)2,k=1,2,…,d\sigma\left(x_{k}, x_{k}\right)=\frac{1}{n-1} \sum_{i=1}^{n}\left(x_{k i}-\bar{x}_{k}\right)^{2}, k=1,2, \ldots, d σ(xk,xk)=n11i=1n(xkixˉk)2,k=1,2,,d
其中, xkix_{ki}xki 表示随机变量 xkx_kxk 中的第 iii 个观测样本, nnn 表示样本量,每个随机变量所对应的观测样本的数量均为 nnn

对于这些随机变量,我们显然可以根据协方差的定义求出随机变量们两两之间的协方差,即为:
σ(xm,xk)=1n−1∑i=1n(xmi−xˉm)(xki−xˉk)\sigma\left(x_{m}, x_{k}\right)=\frac{1}{n-1} \sum_{i=1}^{n}\left(x_{m i}-\bar{x}_{m}\right)\left(x_{k i}-\bar{x}_{k}\right) σ(xm,xk)=n11i=1n(xmixˉm)(xkixˉk)
因此,我们就可以构建出一个协方差矩阵:
Σ=[σ(x1,x1)⋯σ(x1,xd)⋮⋱⋮σ(xd,x1)⋯σ(xd,xd)]∈Rdxd\Sigma=\left[\begin{array}{ccc}\sigma\left(x_{1}, x_{1}\right) & \cdots & \sigma\left(x_{1}, x_{d}\right) \\\vdots & \ddots & \vdots \\\sigma\left(x_{d}, x_{1}\right) & \cdots & \sigma\left(x_{d}, x_{d}\right)\end{array}\right] \in \mathbb{R}^{d x d} Σ=σ(x1,x1)σ(xd,x1)σ(x1,xd)σ(xd,xd)Rdxd
其中,对角线上的元素为各个随机变量的方差,非对角线上的元素为随机变量两两之间的协方差。如果 xxx​​​ 与 yyy​​​ 是正相关的,那么 yyy​​​ 和 xxx​​​ 也是正相关的。换句话说, σ(x,y)=σ(y,x)\sigma(x,y)=\sigma(y,x)σ(x,y)=σ(y,x)​​​,因此协方差矩阵 Σ\SigmaΣ​​​ 始终是一个对称矩阵,矩阵的大小为 d×dd\times dd×d​​​ 。

对于二维正态分布数据,使用它的均值和 2×22\times 22×2 协方差矩阵就可以完全解释。同样,一个 3×33\times 33×3 协方差矩阵用于捕捉三维数据的传播,一个 N×NN\times NN×N 协方差矩阵用于捕获 NNN 维数据的传播。

图二展示了数据的整体形状如何定义协方差矩阵:

图二:协方差矩阵定义了数据的形状。对角线扩展由协方差捕获,而轴对齐扩展由方差捕获。

0x04.1.3 协方差矩阵的特征值分解

我们首先来对特征向量和特征值如何唯一地确定协方差矩阵(也即数据形状)有一个直观的认识。

如图二所示,协方差矩阵定义了我们数据的传播(方差)和方向(协方差)。因此,如果我们想用一个向量和它的大小来表示协方差矩阵,我们应该简单地尝试找到指向数据最大传播方向上的向量,其大小等于这个方向上的传播(方差)。

如果我们定义这个向量为 v⃗\vec vv

, 那么我们的数据 DDD 到这个向量上的映射为 v⃗⊤D\vec v^\top Dv

D
,映射数据的方差是 v⃗⊤Σv⃗\vec v^\top\Sigma\vec vv

Σv

。由于我们正在寻找指向最大方差方向的向量 v⃗\vec vv

,所以我们应该选择它的成分,使得映射数据的协方差矩阵 v⃗→Σv⃗\vec v^\to\Sigma \vec vv

Σv

尽可能的大。最大化 v⃗\vec vv

的形式为 v⃗⊤Σv⃗\vec v^\top \Sigma\vec vv

Σv

的任何函数,其中 v⃗\vec vv

是归一化单位向量,可以使用 Rayleigh Quotient 表示。通过设置 v⃗\vec vv

等于矩阵的最大特征特征向量 Σ\SigmaΣ 可以获得这样Rayleigh Quotient 的最大值。

换句话说,协方差矩阵的最大特征向量总是指向数据最大方差的方向,并且该向量的幅度等于相应的特征值。第二大特征向量总是正交于最大特征向量,并指向第二大数据的传播方向。

现在,让我们来看看一些例子。在文章《特征值和特征向量》中 http://blog.csdn.net/u010182633/article/details/45921929,我们看到一个线性变换矩阵 TTT 完全由它的特征向量和特征值定义。应用到协方差矩阵,这意味着:

Σv⃗=λv⃗\Sigma\vec v=\lambda \vec v Σv

=λv


其中 v⃗\vec vv

Σ\SigmaΣ 的特征向量,λ\lambdaλ 是对应的特征值。

如果我们数据的协方差矩阵是对角矩阵,使得协方差是零,那么这意味着方差必须等于特征值 λλλ​ 。如图三所示,特征向量用绿色和品红色表示,特征值显然等于协方差矩阵的方差分量。

图三:协方差矩阵的特征向量

然而,如果协方差矩阵不是对角的,使得协方差不为零,那么情况稍微更复杂一些。特征值仍代表数据最大传播方向的方差大小,协方差矩阵的方差分量仍然表示 xxx 轴和 yyy 轴方向上的方差大小。但是,因为数据不是轴对齐的,所以这些值不再与图四所示的相同。

图五:特征值和方差

通过比较图四与图五,可以清楚地看到特征值表示沿特征向量方向数据的方差,而协方差矩阵的方差分量表示沿轴的传播。如果没有协方差,则这两个值是相等的。

0x04.1.3 协方差矩阵作为线性变换

现在我们来讨论协方差矩阵如何被解释为白色数据转换成我们观察到数据的线性操作。

现在,让我们忘了协方差矩阵。图二的实例可以简单地认为是图五的一个线性变换实例:

图五:具有单位协方差矩阵的数据称为白数据。

图五所示的数据是 DDD​​,则图二所示的每个实例可以通过线性变换 DDD​ 得到:
D′=TDD'=TD D=TD

其中 TTT​​ 是变换矩阵,包括一个旋转矩阵 RRR 和缩放矩阵 SSS​​:
T=RST=RS T=RS
这些矩阵定义如下:
R=[cos⁡(θ)−sin⁡(θ)sin⁡(θ)cos⁡(θ)]R=\left[\begin{array}{cc}\cos (\theta) & -\sin (\theta) \\\sin (\theta) & \cos (\theta)\end{array}\right] R=[cos(θ)sin(θ)sin(θ)cos(θ)]

其中 θ\thetaθ​ 是旋转角度。
S=[sx00sy]S=\left[\begin{array}{cc}s_{x} & 0 \\0 & s_{y}\end{array}\right] S=[sx00sy]

sxs_xsx​​ 和 sys_ysy​​ 分别是 xxx​ 方向和 yyy 方向的比例因子。

在下面的内容中,我们将讨论协方差矩阵 Σ\SigmaΣ​ 与线性变换矩阵 T=RST= RST=RS 之间的关系。

让我们先从未缩放(缩放相当于 111​​)和未旋转的数据开始。在统计中,这往往为“白数据’,因为它的样本是从标准正态分布引出的,因此对应于白(不相关)噪声:

图六:白色数据是带有单位协方差矩阵的数据。

这个“白色”数据的协方差矩阵等于单位矩阵,使得方差和标准差等于1,协方差等于零:
Σ=[σx200σy2]=[1001]\Sigma=\left[\begin{array}{cc}\sigma_{x}^{2} & 0 \\0 & \sigma_{y}^{2}\end{array}\right]=\left[\begin{array}{ll}1 & 0 \\0 & 1\end{array}\right] Σ=[σx200σy2]=[1001]

现在让我们用因子 444​ 在 xxx 方向缩放数据:
D′=[4001]DD^{\prime}=\left[\begin{array}{ll}4 & 0 \\0 & 1\end{array}\right] \quad D D=[4001]D

数据D’现在如下:

图七:xxx 方向的变化导致水平缩放。

D′D'D 的协方差 Σ′\Sigma'Σ​ 现在是:

Σ′=[σx200σy2]=[16001]\Sigma^{\prime}=\left[\begin{array}{cc}\sigma_{x}^{2} & 0 \\0 & \sigma_{y}^{2}\end{array}\right]=\left[\begin{array}{cc}16 & 0 \\0 & 1\end{array}\right] Σ=[σx200σy2]=[16001]

D′D'D​ 的协方差 Σ′\Sigma'Σ​ 与线性变换矩阵 TTT 有关系,D=TDD=TDD=TD​,其中:
T=Σ′=[4001]T=\sqrt{\Sigma^{\prime}}=\left[\begin{array}{ll}4 & 0 \\0 & 1\end{array}\right] T=Σ

=[4001]

然而,虽然数据在 xxx​​ 和 yyy​ 方向上缩放时等式(20)成立,但是应用旋转是否依然成立呢?为了调查一般情况下线性变换矩阵T和协方差矩阵 Σ′\Sigma'Σ 之间的关系,我们试图分解协方差矩阵为旋转和缩放矩阵的乘积。

正如我们前面所看到的,我们可以用特征向量和特征值表示协方差矩阵:
Σv⃗=λv⃗\Sigma\vec v=\lambda\vec v Σv

=λv


其中 v⃗\vec vv

Σ\SigmaΣ 的特征向量,λ\lambdaλ 是对应的特征值。

等式(21)保存矩阵 Σ\SigmaΣ​​​​ 的每个特征向量和特征值。在 2D2D2D​​ 情况下,我们得到两个特征值和两个特征值。由公式(21)定义的两个等式可以有效地用矩阵符号来表示:
ΣV=VL\Sigma V=VL ΣV=VL
其中 VVV​​ 是矩阵,它的列是 Σ\SigmaΣ​ 的特征向量,LLL 是对角矩阵,其非零元素对应特征值。

这意味着我们可以将协方差矩阵表示为特征向量和特征值的函数:
Σ=VLV−1\Sigma=VLV^{-1} Σ=VLV1

方程(23)就是所谓协方差矩阵特征值分解,并可以使用奇异值分解算法来获得。而特征向量表示数据最大方差的方向,特征值表示那些方向方差的幅度。换言之, VVV 表示旋转矩阵,而 L\sqrt LL

表示一个缩放矩阵。协方差矩阵可以进一步分解为:

Σ=RSSR−1\Sigma=RSSR^{-1} Σ=RSSR1
其中 R=VR=VR=V 是一个旋转矩阵,S=LS=\sqrt LS=L

​ 是一个缩放矩阵。

在等式(14)中,我们定义了一个线性变换 T=RST= RST=RS​​​​。由于 SSS​​​ 是对角缩放矩阵,所以 S=STS=STS=ST​​ 。此外,由于 RRR​ 为正交矩阵,R−1=RTR-1=RTR1=RT。因此, 协方差矩阵可以写为:
Σ=RSSR−1=TT⊤\Sigma=RSSR^{-1}=TT^\top Σ=RSSR1=TT
换言之,如果我们应用由 T=RST=RST=RS​​​​​​ 定义的线性变换到图六所示的原始白数据,我们得到了旋转和缩放的数据 D′D'D​ 及协方差矩阵 TT⊤=Σ′=RSSR−1TT^\top=\Sigma'=RSSR^{-1}TT=Σ=RSSR1 。如图八所示:

图八:协方差矩阵表示原始数据的线性变换。

图八的彩色箭头表示特征向量。最大特征向量,即与最大特征值对应的特征向量,总是指向数据最大方差的方向,并由此确定其方位。次特征向量总是正交于最大特征向量,因为旋转矩阵的正交性。

0x04.2 协方差矩阵自适应调整的进化策略(CMA-ES)[5, 6, 7 ]

0x04.2.1 进化策略

进化策略(ES)是一种黑箱优化算法,属于进化算法的大家庭。ES 的优化目标是实数的向量,x∈Rnx\in \mathbb{R}^nxRn​。

进化算法是一种基于种群划分的优化算法,其灵感来自自然选择。自然选择认为,具有有利于生存的特性的个体可以世代生存,并将好的特性传给下一代。进化是在选择过程中逐渐发生的,进化使种群生长得能更好地适应环境。

图1. 自然选择是如何运作的。

进化算法作为一种通用的优化方案,可以归纳为以下格式:

假设我们想优化一个函数 f(x)f(x)f(x)​​​ 但 f(x)f(x)f(x)​​ 的梯度难以求解。并且只能得到在特定 xxx​ 下 f(x)f(x)f(x) 的确定值。

我们认为随机变量 xxx​​​​​​​ 的概率分布 pθ(x)p_\theta(x)pθ(x)​​​​​​ 是函数 f(x)f(x)f(x)​​​​​ 优化问题的一个较优的解,θθθ​​​​ 是分布 pθ(x)p_\theta(x)pθ(x)​​​ 的参数。我们最终的目标是找到 θθθ 的最优设置。

在给定固定分布形式(例如,高斯分布)的情况下,参数 θθθ​ 包含了最优解的知识,在一代一代间进行迭代更新。

初始化参数 θθθ ,我们可以通过以下三步循环连续地更新 θθθ

  1. 产生初始采样种群 D={(xi,f(xi))},xi∼pθ(x)D=\{ (x_i,f(x_i))\},x_i\sim p_\theta(x)D={(xi,f(xi))},xipθ(x)
  2. 评估采样种群的“适应度”值。
  3. 选择最优子集来更新参数 θθθ​​​​ ,最优子集的选择通常是根据适应度值得出或者排序。

0x04.2.2 简单高斯进化策略

简单高斯进化策略是进化策略的最基础和最经典的版本。它将 pθ(x)p_\theta(x)pθ(x)​​​​​ 建模为一个 nnn​​​​​ 维的各向同性的高斯分布,在高斯分布中 θθθ​​​​​ 指的是均值 μ\muμ​​​​​ 和标准差 σ\sigmaσ​ :
θ=(μ,σ),pθ(x)∼N(μ,σ2I)=μ+σN(0,I)\theta=(\mu,\sigma),p_\theta(x)\sim \mathcal N(\mu,\sigma^2I)=\mu+\sigma\mathcal N(0,I) θ=(μ,σ),pθ(x)N(μ,σ2I)=μ+σN(0,I)
简单高斯进化策略的流程如下,给定 x∈Rnx\in\mathcal R^nxRn

  1. 初始化参数 θ=θ0\theta=\theta_0θ=θ0 ,计数器 t=0t=0t=0

  2. 从高斯分布中采样种群大小为 Λ\LambdaΛ 的后代种群:
    D(t+1)={xi(t+1)∣xi(t+1)=μ(t)+σ(t)yi(t+1)where yi(t+1)∼N(x∣0,I),i=1,…,Λ}D^{(t+1)}=\left\{x_{i}^{(t+1)} \mid x_{i}^{(t+1)}=\mu^{(t)}+\sigma^{(t)} y_{i}^{(t+1)} \text { where } y_{i}^{(t+1)} \sim \mathcal{N}(x \mid 0, \mathbf{I}), i=1, \ldots, \Lambda\right\} D(t+1)={xi(t+1)xi(t+1)=μ(t)+σ(t)yi(t+1)whereyi(t+1)N(x0,I),i=1,,Λ}

  3. 选择出使得 f(xi)f(x_i)f(xi)​​​​ 最优的 λλλ​​​ 个样本组成的子集,该子集被称为「精英集」。为了不失一般性,我们可以考虑 D(t+1)D^{(t+1)}D(t+1)​ 中适应度排名靠前的 kkk​ 个样本,将它们放入「精英集」。我们可以将其标注为:
    Delite (t+1)={xi(t+1)∣xi(t+1)∈D(t+1),i=1,…,λ,λ≤Λ}D_{\text {elite }}^{(t+1)}=\left\{x_{i}^{(t+1)} \mid x_{i}^{(t+1)} \in D^{(t+1)}, i=1, \ldots, \lambda, \lambda \leq \Lambda\right\} Delite(t+1)={xi(t+1)xi(t+1)D(t+1),i=1,,λ,λΛ}

  4. 然后使用精英群体估计下一代的新均值和标准差 :
    μ(t+1)=avg⁡(Delite (t+1))=1λ∑i=1∧xi(t+1)σ(t+1)2=var⁡(Delite (t+1))=1λ∑i=1λ(xi(t+1)−μ(t))2\begin{array}{c}\mu^{(t+1)}=\operatorname{avg}\left(D_{\text {elite }}^{(t+1)}\right)=\frac{1}{\lambda} \sum_{i=1}^{\wedge} x_{i}^{(t+1)} \\\sigma^{(t+1)^{2}}=\operatorname{var}\left(D_{\text {elite }}^{(t+1)}\right)=\frac{1}{\lambda} \sum_{i=1}^{\lambda}\left(x_{i}^{(t+1)}-\mu^{(t)}\right)^{2}\end{array} μ(t+1)=avg(Delite(t+1))=λ1i=1xi(t+1)σ(t+1)2=var(Delite(t+1))=λ1i=1λ(xi(t+1)μ(t))2

  5. 重复(2)-(4)步,直到结果足够好。

0x04.2.3 协方差自适应进化策略

0x04.2.3.1 基本原理

标准差 σσσ​ 决定了我们探索的程度:当 σσσ​ 越大时,显然我们就可以在更大的搜索空间中对后代种群进行采样。在简单高斯进化策略中,σ(t+1)σ(t+1)σ(t+1)​ 与 σ(t)σ(t)σ(t)​ 密切相关,因此算法不能在需要的时候(适应度改变时)迅速调整探索空间。

「协方差矩阵自适应进化策略」(CMA-ES)通过使用协方差矩阵 CCC​ 跟踪分布上得到的样本两两之间的依赖关系,解决了这一问题。新的分布参数变为了:
θ=(μ,σ,C),pθ(x)∼N(μ,σ2C)∼μ+σN(0,C)\theta=(\mu, \sigma, C), p_{\theta}(x) \sim \mathcal{N}\left(\mu, \sigma^{2} C\right) \sim \mu+\sigma \mathcal{N}(0, C) θ=(μ,σ,C),pθ(x)N(μ,σ2C)μ+σN(0,C)
其中,σ\sigmaσ 控制分布的整体尺度,我们通常称之为「步长」。

在我们深入研究 CMA-ES 中的参数更新方法前,不妨先回顾一下多元高斯分布中协方差矩阵的工作原理。作为一个对称阵,协方差矩阵 CCC 有下列良好的性质:

  • CCC​ 始终是对角矩阵
  • CCC 始终是半正定矩阵
  • 所有的特征值都是非负实数
  • 所有特征值都是正交的
  • CCC​ 的特征向量可以组成 Rn\R^nRn​ 的一个标准正交基

令矩阵 CCC 有一个特征向量 B=[b1,b2,...,bnB=[b_1,b_2,...,b_nB=[b1,b2,...,bn] 组成的标准正交基,相应的特征值分别为 λ12,λ22,...,λn2\lambda_1^2,\lambda_2^2,...,\lambda_n^2λ12,λ22,...,λn2D=diag(λ1,…,λn)D=\text{diag} (λ_1,…,λ_n)D=diag(λ1,,λn)
C=B⊤D2B=[∣∣∣b1b2…bn∣∣∣][λ120…00λ22…0⋮…⋱⋮0…0λn2][−b1−−b2−−bn−]C=B^{\top} D^{2} B=\left[\begin{array}{cccc}\mid & \mid & & \mid \\b_{1} & b_{2} & \ldots & b_{n} \\\mid & \mid & & \mid\end{array}\right]\left[\begin{array}{cccc}\lambda_{1}^{2} & 0 & \ldots & 0 \\0 & \lambda_{2}^{2} & \ldots & 0 \\\vdots & \ldots & \ddots & \vdots \\0 & \ldots & 0 & \lambda_{n}^{2}\end{array}\right]\left[\begin{array}{ccc}- & b_{1} & - \\- & b_{2} & - \\- & b_{n} & -\end{array}\right] C=BD2B=b1b2bnλ12000λ22000λn2b1b2bn
CCC 的平方根为:
C12=B⊤DBC^{\frac{1}{2}}=B^{\top} D B C21=BDB

相关的符号和意义如下:

Symbol Meaning
xi(t)∈Rnx_i^{(t)} \in \mathbb{R}^nxi(t)Rn 第 (ttt) 代的第 iii 个样本
yi(t)∈Rny_i^{(t)} \in \mathbb{R}^nyi(t)Rn xi(t)=μ(t−1)+σ(t−1)yi(t)x_i^{(t)} = \mu^{(t-1)} + \sigma^{(t-1)} y_i^{(t)}xi(t)=μ(t1)+σ(t1)yi(t)
μ(t)\mu^{(t)}μ(t) (t(t(t) 代的平均值
σ(t)\sigma^{(t)}σ(t) 步长
C(t)C^{(t)}C(t) 协方差矩阵
B(t)B^{(t)}B(t) 一个由 CCC 的特征向量作为行向量的矩阵
D(t)D^{(t)}D(t) 一个具有 CCC 特征值的对角矩阵。
pσ(t)p_\sigma^{(t)}pσ(t) 第 (ttt) 代时 σ\sigmaσ 的评估路径
pc(t)p_c^{(t)}pc(t) 第 (ttt) 代时 CCC 的评估路径
αμ\alpha_\muαμ μ\muμ 更新的学习率
ασ\alpha_\sigmaασ pσp_\sigmapσ 的学习率
dσd_\sigmadσ 更新 σ\sigmaσ 的阻尼因子
αcp\alpha_{cp}αcp pcp_cpc 的学习率
αcλ\alpha_{c\lambda}αcλ CCCrank-min(λ,n)\text{rank-min}(λ,n)rank-min(λ,n) 更新的学习率
αc1\alpha_{c1}αc1 CCCrank-1\text{rank-1}rank-1 更新的学习速率

0x04.2.3.2 更新均值

μ(t+1)=μ(t)+αμ1λ∑i=1λ(xi(t+1)−μ(t))\mu^{(t+1)}=\mu^{(t)}+\alpha_{\mu} \frac{1}{\lambda} \sum_{i=1}^{\lambda}\left(x_{i}^{(t+1)}-\mu^{(t)}\right) μ(t+1)=μ(t)+αμλ1i=1λ(xi(t+1)μ(t))

CMA-ES 使用 αμ≤1\alpha_\mu\leq 1αμ1​​ 的学习率控制均值 μμμ​ 更新的速度。通常情况下,该学习率被设置为 111,从而使上述等式与简单高斯进化策略中的均值更新方法相同。

0x04.2.3.3 控制步长

采样过程可以与均值和标准差的更新解耦:
xi(t+1)=μ(t)+σ(t)yi(t+1),where yi(t+1)=xi(t+1)−μ(t)σ(t)∼N(0,C)x_{i}^{(t+1)}=\mu^{(t)}+\sigma^{(t)} y_{i}^{(t+1)}, \text { where } y_{i}^{(t+1)}=\frac{x_{i}^{(t+1)}-\mu^{(t)}}{\sigma^{(t)}} \sim \mathcal{N}(0, C) xi(t+1)=μ(t)+σ(t)yi(t+1),whereyi(t+1)=σ(t)xi(t+1)μ(t)N(0,C)
参数 σσσ​​​​​ 控制着分布的整体尺度。它是从协方差矩阵中分离出来的,所以我们可以比改变完整的协方差更快地改变步长。步长较大会导致参数更新较快。为了评估当前的步长是否合适,CMA-ES 通过将连续的移动步长序列相加 1λ∑iλyi(j),j=1,2,...,t\displaystyle \small \frac{1}{\lambda}\sum _i^\lambda y_i^{(j)},j=1,2,...,tλ1iλyi(j),j=1,2,...,t​​​​​ 构建了一个进化路径(evolution path) pσp_\sigmapσ​​ 通过比较该路径与随机选择(意味着每一步之间是不相关的)状态下期望会生成的路径长度,我们可以相应地调整 σσσ​(详见下图)。

图 2. 单步如何以不同方式关联的三种场景及其对步长更新的影响。

每次进化路径都会以同代中的平均移动步长 yiy_iyi​ 进行更新。
1λ∑i=1λyi(t+1)=1λ∑i=1λxi(t+1)−λμ(t)σ(t)=μ(t+1)−μ(t)σ(t)1λ∑i=1λyi(t+1)∼1λN(0,λC(t))∼1λC(t)12N(0,I)Thus λC(t)−12μ(t+1)−μ(t)σ(t)∼N(0,I)\begin{aligned}& \displaystyle \cfrac{1}{\lambda} \sum_{i=1}^{\lambda} y_{i}^{(t+1)}=\frac{1}{\lambda} \cfrac{ \displaystyle \sum_{i=1}^{\lambda} x_{i}^{(t+1)}-\lambda \mu^{(t)}}{\sigma^{(t)}}=\cfrac{\mu^{(t+1)}-\mu^{(t)}}{\sigma^{(t)}} \\&\displaystyle \cfrac{1}{\lambda} \sum_{i=1}^{\lambda} y_{i}^{(t+1)} \sim \cfrac{1}{\lambda} \mathcal{N}\left(0, \lambda C^{(t)}\right) \sim \cfrac{1}{\sqrt{\lambda}} C^{(t)^{\cfrac{1}{2}}} \mathcal{N}(0, I) \\& \text { Thus } \sqrt{\lambda} C^{(t)^{-\cfrac{1}{2}} \cfrac{ \displaystyle \mu^{(t+1)}-\mu^{(t)}}{ \displaystyle \sigma^{(t)}}} \sim \mathcal{N}(0, I)\end{aligned} λ1i=1λyi(t+1)=λ1σ(t)i=1λxi(t+1)λμ(t)=σ(t)μ(t+1)μ(t)λ1i=1λyi(t+1)λ1N(0,λC(t))λ

1C(t)21N(0,I)Thusλ

C(t)21σ(t)μ(t+1)μ(t)N(0,I)

通过与 C−12C^{-\cfrac 1 2}C21​ 相乘,我们将进化路径转化为与其方向相独立的形式。

C(t)−12=B(t)TD(t)−12B(t)C^{(t)-\cfrac 1 2}=B^{(t)^T}D^{(t)^{-\cfrac 1 2}B(t)}C(t)21=B(t)TD(t)21B(t)​​ 原理如下:

  1. B(t)B(t)B(t) 包含 CCC​ 的特征向量的行向量。它将原始空间投影到了正交的主轴上。
  2. D(t)−12=diag⁡(1λ1,…,1λn)\displaystyle D^{(t)^{-\frac{1}{2}}}=\operatorname{diag}\left(\frac{1}{\lambda_{1}}, \ldots, \frac{1}{\lambda_{n}}\right)D(t)21=diag(λ11,,λn1) 将各主轴的长度放缩到相等的状态。
  3. B(t)TB^{(t)^T}B(t)T 将空间转换回原始坐标系.

为了给最近几代的种群赋予更高的权重,我们使用了「Polyak 平均 」算法(平均优化算法在参数空间访问轨迹中的几个点),以学习率 ασ\alpha_\sigmaασ 更新进化路径。同时,我们平衡了权重,从而使在 pσp_\sigmapσ 更新前和更新后都为服从 N(0,I)\mathcal{N}(0, I)N(0,I)​ 的共轭分布(更新前后的先验分布和后验分布类型相同)。
pσ(t+1)=(1−ασ)pσ(t)+1−(1−ασ)2λC(t)−12μ(t+1)−μ(t)σ(t)=(1−ασ)pσ(t)+cσ(2−ασ)λC(t)−12μ(t+1)−μ(t)σ(t)\begin{aligned}p_{\sigma}^{(t+1)} &=\left(1-\alpha_{\sigma}\right) p_{\sigma}^{(t)}+\sqrt{1-\left(1-\alpha_{\sigma}\right)^{2}} \sqrt{\lambda} C^{(t)^{-\cfrac{1}{2}} \cfrac{\mu^{(t+1)}-\mu^{(t)}}{\sigma^{(t)}}} \\&=\left(1-\alpha_{\sigma}\right) p_{\sigma}^{(t)}+\sqrt{c_{\sigma}\left(2-\alpha_{\sigma}\right) \lambda} C^{(t)^{-\cfrac{1}{2}} \cfrac{\mu^{(t+1)}-\mu^{(t)}}{\sigma^{(t)}}}\end{aligned} pσ(t+1)=(1ασ)pσ(t)+1(1ασ)2

λ

C(t)21σ(t)μ(t+1)μ(t)=(1ασ)pσ(t)+cσ(2ασ)λ

C(t)21σ(t)μ(t+1)μ(t)

随机选择得到的 pσp_\sigmapσ​​​​​​ 的期望长度为 E∥N(0,I)∥E\|\mathcal{N}(0, I)\|EN(0,I)​​​​​​,该值是服从 N(0,I)\mathcal{N}(0, I)N(0,I)​​​​​​ 的随机变量的 ℓ2\ell_22​​​​​​​ 范数的数学期望。按照图 2 中的思路,我们将根据 ∥pσ(t+1)∥E∥N(0,I)∥\dfrac {\|p_σ(t+1)\|} {E\|\mathcal N (0,I)\|}EN(0,I)pσ(t+1)​​​​​ 的比值调整步长:
ln⁡σ(t+1)=ln⁡σ(t)+ασdσ(∥pσ(t+1)∥E∥N(0,I)∥−1)σ(t+1)=σ(t)exp⁡(ασdσ(∥pσ(t+1)∥E∥N(0,I)∥−1))\begin{aligned}\ln \sigma^{(t+1)} &=\ln \sigma^{(t)}+\frac{\alpha_{\sigma}}{d_{\sigma}}\left(\frac{\left\|p_{\sigma}^{(t+1)}\right\|}{\mathbb{E}\|\mathcal{N}(0, I)\|}-1\right) \\\sigma^{(t+1)} &=\sigma^{(t)} \exp \left(\frac{\alpha_{\sigma}}{d_{\sigma}}\left(\frac{\left\|p_{\sigma}^{(t+1)}\right\|}{\mathbb{E}\|\mathcal{N}(0, I)\|}-1\right)\right)\end{aligned} lnσ(t+1)σ(t+1)=lnσ(t)+dσασEN(0,I)pσ(t+1)1=σ(t)expdσασEN(0,I)pσ(t+1)1

0x04.2.3.4 自适应协方差矩阵

我们使用精英样本的 yiy_iyi​​​ 从头开始了来估计协方差矩阵 (yi∼N(0,C))(y_i\sim \mathcal N(0,C))(yiN(0,C))​​:​​
Cλ(t+1)=1λ∑i=1λyi(t+1)yi(t+1)⊤=1λσ(t)2∑i=1λ(xi(t+1)−μ(t))(xi(t+1)−μ(t))⊤C_{\lambda}^{(t+1)}=\frac{1}{\lambda} \sum_{i=1}^{\lambda} y_{i}^{(t+1)} y_{i}^{(t+1)^{\top}}=\frac{1}{\lambda \sigma^{(t)^{2}}} \sum_{i=1}^{\lambda}\left(x_{i}^{(t+1)}-\mu^{(t)}\right)\left(x_{i}^{(t+1)}-\mu^{(t)}\right)^{\top} Cλ(t+1)=λ1i=1λyi(t+1)yi(t+1)=λσ(t)21i=1λ(xi(t+1)μ(t))(xi(t+1)μ(t))
只有当我们选择出的种群足够大,上述估计才会更加可靠。然而在每一代中,我们希望能够使用较小的样本种群进行快速的迭代。为此 CMA-ES 发明了一种更加可靠,但是非常复杂的方式去更新 CCC​​​​​。它包含两种独立的进化路径:

  1. rank-min(λ,n)\text{rank-min} (λ, n)rank-min(λ,n)​​​​ 更新:直接使用 {Cλ}\{C_\lambda\}{Cλ}​​​​​ 中的历史估计,在每一代中都是从头开始估计。
  2. rank-1\text{rank-1}rank-1​ 更新:根据历史估计来移动步长 yiy_iyi​ 以及符号信息。

第一条路径根据 {Cλ}\{C_\lambda\}{Cλ}​ 的全部历史考虑 CCC​ 的估计。例如,如果我们拥有很多代种群的经验:C(t+1)≈avg(Cλ(i);i=1,…,t)\displaystyle C^{(t+1)} \approx \text{avg}(C_\lambda^{(i)}; i=1,\dots,t)C(t+1)avg(Cλ(i);i=1,,t)​ 就是一种很好的估计方式。类似于 pσp_\sigmapσ​​,我们也可以使用「polyak」平均,并且通过学习率引入历史信息:
C(t+1)=(1−αcλ)C(t)+αcλCλ(t+1)=(1−αcλ)C(t)+αcλ1λ∑i=1λyi(t+1)yi(t+1)⊤C^{(t+1)} = (1 - \alpha_{c\lambda}) C^{(t)} + \alpha_{c\lambda} C_\lambda^{(t+1)} = (1 - \alpha_{c\lambda}) C^{(t)} + \alpha_{c\lambda} \frac{1}{\lambda} \sum_{i=1}^\lambda y^{(t+1)}_i {y^{(t+1)}_i}^\top C(t+1)=(1αcλ)C(t)+αcλCλ(t+1)=(1αcλ)C(t)+αcλλ1i=1λyi(t+1)yi(t+1)
通常我们选择的学习率为:αcλ≈min⁡(1,λ/n2)\alpha_{c\lambda} \approx \min(1, \lambda/n^2)αcλmin(1,λ/n2)

第二条路径试图解决 yiyi⊤=(−yi)(−yi)⊤y_i{y_i}^\top = (-y_i)(-y_i)^\topyiyi=(yi)(yi)​ 丢失符号信息的问题。与我们调整步长 σσσ​ 的方法相类似,我们使用了一个进化路径 pcp_cpc​ 来记录符号信息,pcp_cpc​ 仍然是种群更新前后都服从于 N(0,C)\mathcal N (0,C)N(0,C) 的共轭分布。

我们可以认为我们可以认为 pcp_cpc​ 是另一种计算 avgi(yi)\text{avg}_i(y_i)avgi(yi)​ 的(请注意它们都服从于 N(0,C)\mathcal N (0,C)N(0,C)​),此时我们使用了完整的历史信息,并且能够保留符号信息。请注意,在上一节中,我们已经知道了是另一种计算 的(请注意它们都服从于 N(0,C)\mathcal N (0,C)N(0,C)​),此时我们使用了完整的历史信息,并且能够保留符号信息。请注意,在上一小节中,我们已经知道了 kμ(t+1)−μ(t)σ(t)∼N(0,C)\sqrt{k}\dfrac{\mu^{(t+1)} - \mu^{(t)}}{\sigma^{(t)}} \sim \mathcal{N}(0, C)k

σ(t)μ(t+1)μ(t)N(0,C)​ 的计算方法如下:
pc(t+1)=(1−αcp)pc(t)+1−(1−αcp)2λμ(t+1)−μ(t)σ(t)=(1−αcp)pc(t)+αcp(2−αcp)λμ(t+1)−μ(t)σ(t)\begin{aligned} p_c^{(t+1)} &= (1-\alpha_{cp}) p_c^{(t)} + \sqrt{1 - (1-\alpha_{cp})^2}\;\sqrt{\lambda}\;\frac{\mu^{(t+1)} - \mu^{(t)}}{\sigma^{(t)}} \\ &= (1-\alpha_{cp}) p_c^{(t)} + \sqrt{\alpha_{cp}(2 - \alpha_{cp})\lambda}\;\frac{\mu^{(t+1)} - \mu^{(t)}}{\sigma^{(t)}} \end{aligned} pc(t+1)=(1αcp)pc(t)+1(1αcp)2

λ

σ(t)μ(t+1)μ(t)
=(1αcp)pc(t)+αcp(2αcp)λ

σ(t)μ(t+1)μ(t)

接下来,通过 pcp_cpc​ 来更新协方差矩阵:
C(t+1)=(1−αc1)C(t)+αc1pc(t+1)pc(t+1)⊤C^{(t+1)} = (1-\alpha_{c1}) C^{(t)} + \alpha_{c1}\;p_c^{(t+1)} {p_c^{(t+1)}}^\top C(t+1)=(1αc1)C(t)+αc1pc(t+1)pc(t+1)
kkk​ 较小时,rank-1\text{rank-1}rank-1​ 更新方法相较于 rank-min(λ,n)\text{rank-min}(λ, n)rank-min(λ,n) 更新有很大的性能提升。这是因为我们在这里利用了移动步长的符号信息和连续步骤之间的相关性,而且这些信息可以随着种群的更新被一代一代传递下去。

最后,我们将两种方法结合起来:
C(t+1)=(1−αcλ−αc1)C(t)+αc1pc(t+1)pc(t+1)⊤⏟rank-one update+αcλ1λ∑i=1λyi(t+1)yi(t+1)⊤⏟rank-min(lambda, n) updateC^{(t+1)} = (1 - \alpha_{c\lambda} - \alpha_{c1}) C^{(t)} + \alpha_{c1}\;\underbrace{p_c^{(t+1)} {p_c^{(t+1)}}^\top}_\textrm{rank-one update} + \alpha_{c\lambda} \underbrace{\frac{1}{\lambda} \sum_{i=1}^\lambda y^{(t+1)}_i {y^{(t+1)}_i}^\top}_\textrm{rank-min(lambda, n) update} C(t+1)=(1αcλαc1)C(t)+αc1rank-one update

pc(t+1)pc(t+1)+αcλrank-min(lambda, n) update

λ1i=1λyi(t+1)yi(t+1)

在上面所有的例子中,我们认为每个优秀的样本对于权重的贡献是相等的,都为 1λ\dfrac 1 λλ1​。该过程可以很容易地被扩展至根据具体表现为抽样得到的样本赋予不同权重 w1,…,wλw_1, \dots, w_\lambdaw1,,wλ​ 的情况。

图3. CMA-ES 如何处理二维优化问题的图示(颜色越浅越好)。 黑点是一代的样本。 样本最初分布得更广,但是当模型在后期阶段对找到好的解决方案时,样本变得非常集中在全局最优解上。

0x04.3 CMA-ES 实现代码

下面列举一些CMA-ES的程序:

  • 一个python的库pypi-cma,是N. Hansen本人更新维护。
  • CMA-ES 源代码的主页CMA-ES Source Code,包含各种语言写的程序,尤其是多种C++的实现(包含并行libcmaes)和Matlab的版本CMA-ES Matlab。
  • Shark Machine Learning Library,这个包含着上面的网页中,单独拿出来说是因为这是一个广泛的包含多种机器学习和进化计算方面的 C++ 库。

Wiki 主页上有一个非常简短的 Matlab 程序 CMA-ES - Wikipedia,只有最基本的算法实现,可以用于了解算法。如果使用的话,应该尽可能使用上面的完整的 Code,包含了多种变体,对约束、噪声的处理,以及 restart 策略处理复杂优化问题。

0x04.4 (1+1)-CMA-ES

[13] C. Igel, T. Suttorp, and N. Hansen. A computational effi-
cient covariance matrix update and a (1+ 1)-cma for evolution strategies. In Proceedings of the 8th annual conference on Genetic and evolutionary computation, pages 453–460. ACM, 2006.

0x04.3 双线性插值法[8, 9, 10]

0x04.3.1 插值

插值是一种在一组离散的已知数据点的范围内构建新数据点的方法。 图像插值是指对缺失位置的强度值进行“猜测”。

插值是对原图像的像素重新分布,从而来改变像素数量的一种方法。在图像放大过程中,像素也相应地增加,增加的过程就是“插值”发生作用的过程,“插值”程序自动选择信息较好的像素作为增加、弥补空白像素的空间,而并非只使用临近的像素,所以在放大图像时,图像看上去会比较平滑、干净。不过需要说明的是插值并不能增加图像信息,尽管图像尺寸变大,但效果也相对要模糊些。

0x04.3.2 单线性插值

问题描述:给定两个点的坐标 P1(x1,y1),P2(x2,y2)P_1(x_1,y_1),P_2(x_2,y_2)P1(x1,y1),P2(x2,y2)​​​​ ,计算 [x1,x2][x_1,x_2][x1,x2]​​​​ 区间内的某一位置的 xxx​​​​ 在过 P1,P2P_1,P_2P1,P2​​ 的直线上的 yyy​​​​ 值。

显然可以直接使用两点式得出直线的公式:
y−y1x−x1=y2−y1x2−x1\dfrac{y-y_1}{x-x_1}=\dfrac{y_2-y_1}{x_2-x_1} xx1yy1=x2x1y2y1
整理即可得到:
y=x2−xx2−x1y1+x−x1x2−x1y2y=\frac {x_2-x}{x_2-x_1}y_1+\frac{x-x_1}{x_2-x_1}y_2 y=x2x1x2xy1+x2x1xx1y2
考虑我们实际插值的需要是根据两个已知的像素值求得位置点的像素值,设 f(P)f(P)f(P)​ 表示在 P(x,y)P(x,y)P(x,y)​ 点处的像素值 fff,则有:
f(P)=x2−xx2−x1f(P1)+x−x1x2−x1f(P2)f(P) = \dfrac{x_2 - x}{x_2 - x_1} f(P_1) + \dfrac{x - x_1}{x_2 - x_1} f(P_2) f(P)=x2x1x2xf(P1)+x2x1xx1f(P2)
α=x−x1x2−x1\alpha=\dfrac{x-x_1}{x_2-x_1}α=x2x1xx1

则有
f(P)=(1−α)f(P1)+αf(P2)f(P)=(1-\alpha)f(P_1)+\alpha f(P_2) f(P)=(1α)f(P1)+αf(P2)

0x04.3.3 双线性插值

❑❑ 问题描述

已知 Q11(x1,y1),Q12(x1,y2),Q21(x2,y1),Q22(x2,y2)Q_{11}(x_1,y_1),Q_{12}(x_1,y_2),Q_{21}(x_2,y_1),Q_{22}(x_2,y_2)Q11(x1,y1),Q12(x1,y2),Q21(x2,y1),Q22(x2,y2),求其中点P(x,y)P(x,y)P(x,y)​ 的值。

❑❑双线性插值

双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。

双线性插值,顾名思义就是两个方向的线性插值加起来(这解释过于简单粗暴,哈哈)。所以只要了解什么是线性插值,分别在x轴和y轴都做一遍,就是双线性插值了。

线性插值的概念也非常简单粗暴,就是两个点A,B,要在AB中间插入一个点C(点C坐标在AB连线上),就直接让C的值落在AB的值的连线上就可以了。

如A点坐标(0,0),值为3,B点坐标(0,2),值为5,那要对坐标为(0,1)的点C进行插值,就让C落在AB线上,值为4就可以了。

但是如果C不在AB的线上肿么办捏,所以就有了双线性插值。如图,已知Q12,Q22,Q11,Q21,但是要插值的点为P点,这就要用双线性插值了,首先在x轴方向上,对R1和R2两个点进行插值,这个很简单,然后根据R1和R2对P点进行插值,这就是所谓的双线性插值。

❑❑ xxx 方向单线性插值

直接带入前一步单线性插值最后的公式
f(R1)=x2−xx2−x1f(Q11)+x−x1x2−x1f(Q21)f(R_1) = \frac{x_2 - x}{x_2 - x_1} f(Q_{11}) + \frac{x - x_1}{x_2 - x_1} f(Q_{21}) f(R1)=x2x1x2xf(Q11)+x2x1xx1f(Q21)

f(R2)=x2−xx2−x1f(Q12)+x−x1x2−x1f(Q22)f(R_2) = \frac{x_2 - x}{x_2 - x_1} f(Q_{12}) + \frac{x - x_1}{x_2 - x_1} f(Q_{22}) f(R2)=x2x1x2xf(Q12)+x2x1xx1f(Q22)

其中 R1(x,y1),R2(x,y2)R1(x,y_1),R_2(x,y_2)R1(x,y1),R2(x,y2)​。

(注:维基百科在双线性插值词条中的公式里使用的全部都是约等号 ≈\approx,详见 https://zh.wikipedia.org/wiki/%E5%8F%8C%E7%BA%BF%E6%80%A7%E6%8F%92%E5%80%BC)

❑❑ yyy 方向单线性插值
f(P)=y2−yy2−y1f(R1)+y−y1y2−y1f(R2)f(P) = \frac{y_2 - y}{y_2 - y_1} f(R_1) + \frac{y - y_1}{y_2 - y_1} f(R_2) f(P)=y2y1y2yf(R1)+y2y1yy1f(R2)
将第一步结果带入第二步
f(x,y)=f(Q11)(x2−x1)(y2−y1)(x2−x)(y2−y)+f(Q21)(x2−x1)(y2−y1)(x−x1)(y2−y)+f(Q12)(x2−x1)(y2−y1)(x2−x)(y−y1)+f(Q22)(x2−x1)(y2−y1)(x−x1)(y−y1)f(x, y)=\frac{f(Q_{11})}{(x_2-x_1)(y_2-y_1)} (x_2-x)(y_2-y) + \frac{f(Q_{21})}{(x_2-x_1)(y_2-y_1)} (x-x_1)(y_2-y) + \frac{f(Q_{12})}{(x_2-x_1)(y_2-y_1)} (x_2-x)(y-y_1) + \frac{f(Q_{22})}{(x_2-x_1)(y_2-y_1)} (x-x_1)(y-y_1) f(x,y)=(x2x1)(y2y1)f(Q11)(x2x)(y2y)+(x2x1)(y2y1)f(Q21)(xx1)(y2y)+(x2x1)(y2y1)f(Q12)(x2x)(yy1)+(x2x1)(y2y1)f(Q22)(xx1)(yy1)

在计算中有这样的关系 x2=x1+1,y2=y1+1x_2 = x_1 + 1,y_2 = y_1 + 1x2=x1+1,y2=y1+1​​ 时,令上面的公式中的分母全都为 000​,可得:
f(x,y)=f(Q11)(x2−x)(y2−y)+f(Q21)(x−x1)(y2−y)+f(Q12)(x2−x)(y−y1)+f(Q22)(x−x1)(y−y1)f(x, y)=f(Q_{11})(x_2-x)(y_2-y) + f(Q_{21})(x-x_1)(y_2-y) + f(Q_{12})(x_2-x)(y-y_1) + f(Q_{22})(x-x_1)(y-y_1) f(x,y)=f(Q11)(x2x)(y2y)+f(Q21)(xx1)(y2y)+f(Q12)(x2x)(yy1)+f(Q22)(xx1)(yy1)
在有些资料中,会写成权重的形式,上面的展开式是下面的权重表达式的正确求法
f(x,y)=f(Q11)w11+f(Q21)w21+f(Q12)w12+f(Q22)w22f(x, y)=f(Q_{11})w_{11} + f(Q_{21})w_{21} + f(Q_{12})w_{12} + f(Q_{22})w_{22} f(x,y)=f(Q11)w11+f(Q21)w21+f(Q12)w12+f(Q22)w22

这种权重的表达式也不难理解,观察一下可以发现每个点的权重都和待求点和对角点的距离有关,比如 f(Q11)f(Q_{11})f(Q11) 的权重与 f(Q22)f(Q_{22})f(Q22)的坐标有关。

如果选择一个坐标系统使得 fff 的四个已知点坐标分别为 (0,0),(0,1),(1,0),(1,1)(0,0),(0,1),(1,0),(1,1)(0,0),(0,1),(1,0),(1,1),那么插值公式就可以化简为:
f(x,y)=f(0,0)(1−x)(1−y)+f(1,0)x(1−y)+f(0,1)(1−x)y+f(1,1)xy.f(x, y)=f(0,0)(1-x)(1-y)+f(1,0) x(1-y)+f(0,1)(1-x) y+f(1,1) x y . f(x,y)=f(0,0)(1x)(1y)+f(1,0)x(1y)+f(0,1)(1x)y+f(1,1)xy.
或者用矩阵运算表示为:
f(x,y)=[1−xx][f(0,0)f(0,1)f(1,0)f(1,1)][1−yy]f(x, y) =\left[\begin{array}{ll}1-x & x\end{array}\right]\left[\begin{array}{ll}f(0,0) & f(0,1) \\f(1,0) & f(1,1)\end{array}\right]\left[\begin{array}{c}1-y \\y\end{array}\right] f(x,y)=[1xx][f(0,0)f(1,0)f(0,1)f(1,1)][1yy]

与这种插值方法名称不同的是,这种插值方法的结果通常不是线性的,它的形式是
b1+b2x+b3y+b4xy.b_{1}+b_{2} x+b_{3} y+b_{4} x y . b1+b2x+b3y+b4xy.
常数的数目都对应于给定的 fff​ 的数据点数目
b1=f(0,0)b2=f(1,0)−f(0,0)b3=f(0,1)−f(0,0)b4=f(1,1)−f(1,0)−f(0,1)+f(0,0)\begin{aligned}&b_1=f(0,0)\\& b_2=f(1,0)-f(0,0)\\&b_3=f(0,1)-f(0,0)\\&b_4=f(1,1)-f(1,0)-f(0,1)+f(0,0)\end{aligned} b1=f(0,0)b2=f(1,0)f(0,0)b3=f(0,1)f(0,0)b4=f(1,1)f(1,0)f(0,1)+f(0,0)
线性插值的结果与插值的顺序无关。首先进行 yyy​​ 方向的插值,然后进行 xxx 方向的插值,所得到的结果是一样的。

0x04.3.4 五种插值的 opencv(Python)代码实现

❑❑ 语法

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst
interpolation 选项 所用的插值方法
INTER_NEAREST 最近邻插值
INTER_LINEAR 双线性插值(默认设置)
INTER_AREA 使用像素区域关系进行重采样(它可能是图像抽取的首选方法,因为它会产生无云纹理的结果。 但是当图像缩放时,它类似于INTER_NEAREST方法)
INTER_CUBIC 4x4像素邻域的双三次插值
INTER_LANCZOS4 8x8像素邻域的Lanczos插值

❑❑​​ INTER_LINEAR | 双线性插值(默认设置)

在两个方向分别进行一次线性插值。
f(x,y1)≈x2−xx2−x1f(Q11)+x−x1x2−x1f(Q21)f(x,y2)≈x2−xx2−x1f(Q12)+x−x1x2−x1f(Q22)\begin{array}{l}f\left(x, y_{1}\right) \approx \dfrac{x_{2}-x}{x_{2}-x_{1}} f\left(Q_{11}\right)+\dfrac{x-x_{1}}{x_{2}-x_{1}} f\left(Q_{21}\right) \\f\left(x, y_{2}\right) \approx \dfrac{x_{2}-x}{x_{2}-x_{1}} f\left(Q_{12}\right)+\dfrac{x-x_{1}}{x_{2}-x_{1}} f\left(Q_{22}\right)\end{array} f(x,y1)x2x1x2xf(Q11)+x2x1xx1f(Q21)f(x,y2)x2x1x2xf(Q12)+x2x1xx1f(Q22)

在图像处理的时候,我们先根据
srcX = dstX×(srcWidthdstWidth)srcY = dstY×(srcHeightdstHeight)\text{srcX = dstX} \times (\dfrac{ \text {srcWidth}} {\text{dstWidth}})\\ \\ \text{srcY = dstY} \times (\dfrac{ \text {srcHeight}} {\text{dstHeight}}) srcX = dstX×(dstWidthsrcWidth)srcY = dstY×(dstHeightsrcHeight)

来计算目标像素在源图像中的位置,这里计算的 srcX\text{srcX}srcX​ 和 srcY\text{srcY}srcY 一般都是浮点数,比如 f(1.2, 3.4) 这个像素点是虚拟存在的,先找到与它临近的四个实际存在的像素点
(1,3)(2,3)(1,4)(2,4)(1,3)\ (2,3)\\(1,4)\ (2,4) (1,3)(2,3)(1,4)(2,4)

写成 f(i+u,j+v)的形式,则 u=0.2,v=0.4, i=1, j=3
f(i+u,j+v)=(1−u)(1−v)f(i,j)+(1−u)vf(i,j+1)+u(1−v)f(i+1,j)+uvf(i+1,j+1)\begin{aligned}f(i + u, j + v) &= (1 - u)(1 - v)f(i, j) + (1 - u)vf(i, j + 1) \\&\ \ \ \ \ + u(1 - v)f(i + 1, j) + uvf(i + 1, j + 1)\end{aligned} f(i+u,j+v)=(1u)(1v)f(i,j)+(1u)vf(i,j+1)+u(1v)f(i+1,j)+uvf(i+1,j+1)
保证了 空间对称性(Alignment),在 RoI Align 中使用。

❑❑​​ INTER_LANCZOS4 | 8x8像素邻域的Lanczos插值

x,yx,yx,y​​​ 方向分别对相邻的八个点进行插值,也就是计算加权和,所以它是一个 8×88\times 88×8​ 的描述子。

# coding=utf-8import cv2
"""
INTER_NEAREST | 最近邻插值
INTER_LINEAR | 双线性插值(默认设置)
INTER_AREA |  使用像素区域关系进行重采样
INTER_CUBIC  | 4x4像素邻域的双三次插值
INTER_LANCZOS4 |  8x8像素邻域的Lanczos插值
"""if __name__ == '__main__':img = cv2.imread("girl.jpg")height, width = img.shape[:2]# 缩小图像size = (int(width*0.8), int(height*0.7))shrink_NEAREST = cv2.resize(img, size, interpolation=cv2.INTER_NEAREST)shrink_LINEAR = cv2.resize(img, size, interpolation=cv2.INTER_LINEAR)shrink_AREA = cv2.resize(img, size, interpolation=cv2.INTER_AREA)shrink_CUBIC = cv2.resize(img, size, interpolation=cv2.INTER_CUBIC)shrink_LANCZOS4 = cv2.resize(img, size, interpolation=cv2.INTER_LANCZOS4)# 放大图像fx = 1.2fy = 1.1enlarge_NEAREST = cv2.resize(img, (0, 0), fx=fx, fy=fy, interpolation=cv2.INTER_NEAREST)enlarge_LINEAR = cv2.resize(img, (0, 0), fx=fx, fy=fy, interpolation=cv2.INTER_LINEAR)enlarge_AREA = cv2.resize(img, (0, 0), fx=fx, fy=fy, interpolation=cv2.INTER_AREA)enlarge_CUBIC = cv2.resize(img, (0, 0), fx=fx, fy=fy, interpolation=cv2.INTER_CUBIC)enlarge_LANCZOS4 = cv2.resize(img, (0, 0), fx=fx, fy=fy, interpolation=cv2.INTER_LANCZOS4)# 保存图像cv2.imwrite("shrink_NEAREST.jpg", shrink_NEAREST)cv2.imwrite("shrink_LINEAR.jpg", shrink_LINEAR)cv2.imwrite("shrink_AREA.jpg", shrink_AREA)cv2.imwrite("shrink_CUBIC.jpg", shrink_CUBIC)cv2.imwrite("shrink_LANCZOS4.jpg", shrink_LANCZOS4)cv2.imwrite("enlarge_NEAREST.jpg", enlarge_NEAREST)cv2.imwrite("enlarge_LINEAR.jpg", enlarge_LINEAR)cv2.imwrite("enlarge_AREA.jpg", enlarge_AREA)cv2.imwrite("enlarge_CUBIC.jpg", enlarge_CUBIC)cv2.imwrite("enlarge_LANCZOS4.jpg", enlarge_LANCZOS4)

0x05 参考资料

[1] Y. Dong et al., “Efficient Decision-Based Black-Box Adversarial Attacks on Face Recognition,” 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2019, pp. 7706-7714, doi: 10.1109/CVPR.2019.00790.

[2] 如何直观地理解「协方差矩阵」? https://zhuanlan.zhihu.com/p/37609917

[3] A geometric interpretation of the covariance matrix https://www.visiondummy.com/2014/04/geometric-interpretation-covariance-matrix/](https://www.visiondummy.com/2014/04/geometric-interpretation-covariance-matrix/)

[4] 协方差与协方差矩阵 https://blog.csdn.net/xueluowutong/article/details/85334256

[5] Evolution Strategies https://lilianweng.github.io/lil-log/2019/09/05/evolution-strategies.html

[6] CMA-ES算法流程 https://blog.csdn.net/qq_40019838/article/details/99882885

[7] 协方差自适应调整的进化策略(CMA-ES) https://blog.csdn.net/weixin_39478524/article/details/105149590

[8] 一篇文章为你讲透双线性插值 https://zhuanlan.zhihu.com/p/110754637

[9] 图像处理之双线性插值法 https://blog.csdn.net/qq_37577735/article/details/80041586

[10] 图像处理: 五种 插值法 https://blog.csdn.net/JNingWei/article/details/78822026

《繁凡的论文精读》(一)CVPR 2019 基于决策的高效人脸识别黑盒对抗攻击(清华朱军)相关推荐

  1. 繁凡的对抗攻击论文精读(三)ICLR2019 利用先验知识进行高效黑盒对抗攻击的 bandits 算法(MIT)

    点我轻松弄懂深度学习所有基础和各大主流研究方向入门综述! <繁凡的深度学习笔记>,包含深度学习基础和 TensorFlow2.0,PyTorch 详解,以及 CNN,RNN,GNN,AE, ...

  2. 论文盘点:CVPR 2019 - 文本检测专题

    作者丨燕小花 研究方向丨计算机视觉 CRAFT 论文主要思想 本文的主要思路是先检测单个字符(character region score)及字符间的连接关系(affinity score),然后根据 ...

  3. CVPR 2019 | 针对人脸识别系统的高效黑盒对抗攻击算法

    本工作提出了一种高效的基于决策的黑盒对抗攻击算法,在业内第一次以完全黑盒的方式成功地实现对人脸识别系统的对抗攻击.本工作由腾讯 AI Lab 主导,与清华大学,香港科技大学联合完成,发表于 CVPR ...

  4. 博士论文——基于卷积神经网络的人脸识别研究 __张燕红

    论文题目 作者 年份 关键词 链接 备注 基于卷积神经网络的人脸识别研究 张燕红 2018 人脸识别:卷积神经网络:特征提取:分块策略:正则化 博士论文 摘要:随着信息技术的蓬勃发展,人们的学习和生活 ...

  5. [EGNN] Exploiting Edge Features for Graph Neural Networks 利用图神经网络的边特征 论文详解 CVPR 2019

    文章目录 1 简介 1.1 GAT和GCN的局限性 1.2 EGNN的创新点 2 相关工作 3 EGNN网络 3.1 符号定义 3.2 EGNN和GNN的对比 3.3 Doubly stochasti ...

  6. CVPR 2019 | 基于骨架表达的单张图片三维物体重建方法

    现有的单视角三维物体重建方法通过采用不同的几何形状表达方式取得了不同程度的成功,但它们都难以重建出拓扑复杂的物体形状.为此,华南理工大学,香港中文大学(深圳)以及微软亚研院联合提出一种以骨架(meso ...

  7. CVPR 2019 | 基于密集语义对齐的行人重识别模型:有效解决语义不对齐

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自微软研究院AI头条. 编者按:行人重识别(Person Re-identification),也称行人再识别,旨在利用计算机视觉技术实现基于图 ...

  8. 任何网络都能山寨!新型黑盒对抗攻击可模拟未知网络进行攻击 | CVPR 2021

    来源:AI科技评论本文约3500字,建议阅读9分钟本文解读对抗攻击与元学习联姻的两篇典型的论文. 最近几年,元学习风生水起,这阵风也刮到了对抗攻击领域.本文解读对抗攻击与元学习联姻的两篇典型的论文(本 ...

  9. AAAI 2020 开源论文 | 一种针对图嵌入模型的受限黑盒对抗攻击框架

    AAAI(人工智能促进协会年会)是人工智能领域的顶级国际会议之一.今年的 AAAI 2020 是第 34 届,于 2 月 7 日至 12 日在美国纽约举行.今年,第 3 次参会的腾讯 AI Lab 共 ...

最新文章

  1. Ansible自动化运维笔记1(安装配置)
  2. 在caffe上跑自己的数据
  3. 【代码笔记】iOS-removeFromSuper
  4. 解决 connect to host github.com port 22 operation timed out
  5. python散点图图例只显示一个标记点_python – Matplotlib图例:如何分配多个散点值...
  6. 认识mysql总结_从根上理解Mysql - 读后个人总结1-搜云库
  7. Spark基础学习笔记13:Scala函数
  8. flutter android 和 ios 发布
  9. 数据库 MySQL 之 表操作、存储引擎
  10. 昨天发生的四件大事!
  11. python转cython_Cython的简单使用
  12. 二叉树的深度(剑指 Offer 55 - I)
  13. mysql sql文件在哪里打开_mysql怎么打开sql文件
  14. 第jiu届蓝桥杯单片机省赛真题_2018第九届蓝桥杯省赛真题 C语言B组 第二题
  15. 小米路由R4A千兆版安装breed+OpenWRT教程以及救砖(全脚本无需硬改)
  16. matlab hurst代码,Hurst指数法matlab程序求助
  17. Android手机解网络锁软件,GalaxSIM解锁工具 GalaxSim Unlock
  18. android通讯录项目分析,Android 通讯录展示
  19. chrome、Firefox、IE浏览器和驱动下载地址
  20. VMware Horizon Client 远程控制桌面无法输入中文

热门文章

  1. 漂亮,LSTM模型结构的可视化
  2. 基础 | 深度学习与神经网络-介绍
  3. L-SNET:从区域定位到尺度不变的医学图像分割
  4. 【OpenCV 4开发详解】轮廓外接多边形
  5. java中的关键字static(静态变量)和final定义常量
  6. Redis 数据结构-字典源码分析
  7. JPA(七):映射关联关系------映射双向多对一的关联关系
  8. Big Data Security Part One: Introducing PacketPig
  9. 【JQuery】可直接编辑的表格
  10. linux终端程序如何编写,[LINUX]利用Ncursesw编写支持中文的终端程序