1、深度学习的概念
深度学习是机器学习中一种基于对数据进行表征学习的方法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。深度学习的好处是用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。
同机器学习方法一样,深度学习方法也有监督学习和无监督学习之分,不同的学习框架下建立的学习模型很是不同。例如,卷积神经网络(Convolutional neural networks)就是一种深度的监督学习下的机器学习模型,而深度置信网(DBNs)就是一种无监督学习下的机器学习模型。
讨论深度学习,所谓的深度是指,网络的层数。深度超过8层的神经网络才叫深度学习。含多个隐层的多层学习模型是深度学习的架构。深度学习可以通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。 因此,“深度模型”是手段,“特征学习”是目的。深度学习强调了模型结构的深度,突出了特征学习的重要性,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。
2、深度学习的特性
2.1、其基本的架构是人工神经网络,针对不同的应用目标会有不同的表达结构,目的是为了更好的提取相应领域的特征。
2.2、神经网络具有四个基本特征:
2.2.1 非线性
非线性关系是自然界的普遍特征。大脑的智慧就是一种非线性现象。人工神经元处于激活或抑制二种不同的状态,这种行为在数学上表现为一种非线性关系。具有阈值的神经元构成的网络具有更好的性能,可以提高容错性和存储容量。
2.2.2 非局限性
一个神经网络通常由多个神经元广泛连接而成。一个系统的整体行为不仅取决于单个神经元的特征,而且可能主要由单元之间的相互作用、相互连接所决定。
2.2.3 非常定性
人工神经网络具有自适应、自组织、自学习能力。神经网络不但处理的信息可以有各种变化,而且在处理信息的同时,非线性动力系统本身也在不断变化。经常采用迭代过程描写动力系统的演化过程。
2.2.4 非凸性
一个系统的演化方向,在一定条件下将取决于某个特定的状态函数,例如能量函数,它的极值相应于系统比较稳定的状态。非凸性是指 这种函数有多个极值,故系统具有多个较稳定的平衡态,这将导致系统演化的多样性。
2.3 神经网络中包含语义信息的部分并不是在每个独立的神经元,而是整个空间
2.4 神经网络学习到的从输入到输出的映射在很大程度上是不连续的
3、深度学习的优点
1、深度学习提出了一种让计算机自动学习出模式特征的方法,并将特征学习融入到了建立模型的过程中,从而减少了人为设计的不完备性。
2、把特征学习纳入到整个过程,使目标进行归一化,围绕着一个目标来进行就行了。
3、有点像数学中的级数,能够不断逼近。是一个万能函数逼近器。(但是要生成怎样一个函数,视任务而定)。(体现了连续性归纳比离散性好)。
4、深度学习的缺点
1、对数据量要求高。为了达到很好的精度,需要大数据支撑,因为所要学习的参数多了。
2、模型正确性验证复杂且麻烦。
3、存在对抗样本问题
5、对抗样本概念
对抗样本的概念:对抗样本是指在数据集中通过故意添加细微的干扰所形成的输入样本,会导致模型以高置信度给出一个错误的输出。(这里怎么理解呢?原先样本是能通过网络分类正确的,但是经过一个细微的扰动,却分类错误了,同时这里也可以看到并不是所有使网络分类错误的样本都叫对抗样本,有些仅仅是网络欠拟合)。
6、对抗样本产生的原因分析
1)2013年,Szegedy等人在题为《Intriguing properties of nerual networks》的论文中指出了神经网络的两个有趣的特性:其一: 神经网络中包含语义信息的部分并不是在每个独立的神经元,而是整个空间; 其二是:神经网络学习到的从输入到输出的映射在很大程度上是不连续的。首先提出了对抗样本。
2)GoodFellow等人在2014年发表的《Explaining and harnessing adversarial examples》,文中提出了产生对抗攻击根本的原因猜测: 深度学习在高维空间的线性特性已经足以产生这种攻击行为。
3)在16年Boundary tilting perspective论文中提到高维空间的线性模型并没有更容易出现对抗样本现象,也并非所有线性模型都会有对抗样本存在,作者认为存在的根本原因是分类器的分类器决策面(红色)和样本manifold (黑色)不严格重合但是很贴近,稍微很小的扰动就从一个界面到另一个界面。如图:
4)在19年Andrew等人认为,对抗样本的产生可直接归因于非稳健特征的出现:某些来自数据分布模式的特征具备高度预测性,但对于人类来讲是脆弱且难以理解的。
对抗脆弱性是模型对数据中泛化较好的特征具备敏感性的直接结果。
他们的假设也对 对抗可迁移性给出了解释,对抗可迁移性即为一个模型计算的对抗扰动通常可以迁移到另一个独立训练的模型。由于任意两个模型有可能学习类似的非稳健特征,因此操控此类特征的扰动可以应用于二者。最后,该研究提出的新观点将 对抗脆弱性作为 完全{以人为中心}(human-centric)的现象,因为从标准监督学习的角度来看,非稳健特征和稳健特征具备同等的重要性。
6、如何理解对抗攻击(从高维空间线性原因理解)
GoodFellow提出的这种方法的根基是目前神经网络为了提高训练效率所使用的激活函数在局部都过于线性,怎么理解呢?
在局部看起来确实接近直线,这与前面看到的Olah对神经网络与拓扑学的对比中有些类似,在最后的表征层都是通过直线或超平面完成的分类。
GoodFellow对高维空间线性假设的实验如图:
解释一下这张图,这张图是对数据集CIFAR-10的分类器的决策边界示意图,其中每个小格子代表是CIFAR-10样本,每个小格子中,横向从左往右代表的是FGSM算法的梯度方向,纵向代表的是FGSM梯度的正交方向,白色表示模型能分类正确的情况,而彩色代表预测出错的情况,不同的颜色代表不同的错误预测分类。可以明显看出,在出错的区域都程线性分布,另外,如果横轴的方向走的不够远,即使再往其他方向都无法使模型出错,而一旦进入这个区域,就会出现大量的对抗样本。
7、对抗样本生成
当前业界主要有两大类生成对抗样本的方法,第一类是基于优化的方法,最大化模型输出error,同时最小化样本的改变,这里我们通常使用梯度下降法来进行优化;
第二类是基于模型输入输出之间的雅可比矩阵,找出对模型输出影响最大的输入进行改变。两种方法都需要知道模型的参数以实现计算。
基于的一个前提知识:
其中w是训练好的参数向量,x表示真实样本数据向量,n表示给图像加入的噪音向量,x表示加入噪音后新生成的样本,当加入足够小的n时,肉眼无法区分出x的变化,直观上左边的式子可能也不会变化很大,然而n方向与w的方向完全一致的时候,即使很小,也会使整个激活值变化很大,有多大呢?如果w是一个n维向量,而其权重的平均大小为m,那么激活值将会增加enm(e为参数)。但是神经网络是非线性的,所以直接与w同方向可能不可用。
1、FGSM
论文介绍:
生成公式:
原理解释:J是代表损失函数,其实,作者发现,y=wx+wn+b,当w维度很高的时候,wn的值就会很大。所以,在生成攻击,我们的目的是使y不一样。为啥要用损失函数呢? 在误差反向传播的过程中,x是定的,y是定的,我们是将y与y(pre)之间差距,然后,用最小二乘法反向回参数,修改的是参数w。 现在,其实我们,我们的目的是w是不变的(定的),变量是x与y,我们对y无法估算,所以用的是损失函数。将损失函数的指向性传给x,从而达到改变y的目的。
在论文中还说到,对于线性模型来说,FGSM是有效的,但是神经网络就不是百分之百成立。
2、deepfool
介绍:
deepfool这篇论文,提出robustness的量化与计算,并提出了deepfool算法。
原理解释:
这里作者,是从点到面的距离角度去考虑的。就是作者认为,将一个样本沿着分类界面的法向量方向是一定能将样本进行误分类的(如果想改变其中某点的分类结果,一定要跨过分割平面)。
作者在推导过程中是二分类问题到多分类,多分类到多分类非线性。(其中生成过程是个迭代的过程)。
1、二分类:
2、多分类:
如果是非线性的话,想法与二分类相同。
值得注意的是,本算法的输出不是最优的,但实验中已经能够大概率实现小幅度扰动了.
3、CW攻击
论文: Towards evaluating the robustness of neural networks
介绍:CW攻击是一种基于优化的攻击,攻击的名称是两个作者的首字母。
该算法将对抗样本当成是一个变量,那么现在如果要使得攻击成功就要满足两个条件(其实FGSM也是看成变量):(1)对抗样本和对应的干净样本应该差距越小越好; (2)对抗样本应该使得模型分类错,且错的那一类的概率越高越好。
公式解释: Rn对应着干净样本和对抗样本的差(即前面是对抗样本,后面是干净样本),但这里有个小trick,他把对抗样本映射到了tanh空间里面,这样做有什么好处呢?如果不做变换,那么x只能在(0,1)这个范围内变换,做了这个变换,x可以在-inf 到+inf做变换,有利于优化。
再来说说第二部分,公式中的Z(x)表示的是样本x通过模型未经过softmax的输出向量,对于干净的样本来说,这个向量的最大值对应的就是正确的类别(如果分类正确的话),现在我们将类别t(也就是我们最后想要攻击成的类别)所对应的逻辑值记为Z(x')t,将最大的值(对应类别不同于t)记为,如果通过优化使得变小,攻击不就离成功更近嘛。那么式子中的k是什么呢?k其实就是置信度(confidence),可以理解为,k越大,那么模型分错,且错成的那一类的概率越大。最后就是常数c这是一个超参数,用来权衡两个loss之间的关系,文中使用二分查找来确定c值。
CW是一个基于优化的攻击,主要调节的参数是c和k。
4、PGD
介绍:对FGSM的迭代扩展。
Towards Deep Learning Models Resistant to Adversarial Attacks
https://www.zybuluo.com/wuxin1994/note/916616
5、UAP
介绍: 一步攻击推导分类界面。
6、R-FGSM
论文: Adversarial Training
7、JSMA(jacobian Sailency Map)
论文:The Limitations of Deep Learning in Adversarial Setting
介绍:这篇 文章由papernot 等人发表在EuroS&P 2016会议上,是对抗样本攻击研究中非常重要的一篇文章。不同于该领域之前对抗样本的构造方法,本文主要介绍了一种新的对抗样本攻击方法,利用输入特征到输出值之间的对抗性显著性,达到只需要修改少量的输入值即可误分类的目的。该攻击方法属于targeted攻击
前向导数越大的地方越容易构建对抗样本。
算法的主要步骤有三个:
1、计算前向导数: ;
值得注意的是,前向导数计算的梯度与Backpropagation反向传播计算的梯度不同,分别是:
(1)本文前向导数是直接对神经网络函数F进行梯度计算,而Backprogation计算的梯度是对代价函数而言的;
(2)本文是对输入特定求偏导数,而Backpropagation是对神经网络的参数求偏导数的。
2、基于前向导数构造显著图S;
利用之前显著图的研究,作者扩展成对抗性显著图,用来表示输入空间中哪些特征对输出结构影响最大。为了达到将对抗样本误分类成t的目的,的概率必须不断增大,且当j=/t时 F(x)应该不断减少,直到t = argmaxiFj(x).
3、
通过对抗性显著图确定需要修改的输入特征后,对应的特征(像素点)应该修改为多少呢?文章引入参数 表示输入特征的修改量。在MNIST实验中,作者设置参数为 。
8、对抗样本的防御
8.1、检测样本
8.2、修改网络
8.2.1防御性蒸馏
防御性蒸馏是papernot等人基于蒸馏学习(一种迁移学习)中训练深度神经网络的蒸馏法提出来的。首先简单的介绍一下蒸馏法的原理。在机器学习领域中有一种最为简单的提升模型效果的方式,在同一训练集上训练多个不同的模型,在预测阶段采用综合均值作为预测值。但是运用这样的组合模型需要太多的计算资源,特别是当单个模型都非常复杂的时候,已经有相关的研究表明,复杂模型或者组合模型中的“知识”通过合适的方式是可以迁移到一个相对简单模型之中,进而方便模型推广。有一种直观的概念就是,越是复杂的网络具有越好的描述能力,可以用来解决更为复杂的问题。我们所说的模型学习得到“知识”就是模型参数,说到底我们想要学习的是一个输入向量到输出向量的映射,而不必太过于关心中间的映射过程。
防御性蒸馏的思想就是希望将训练好的模型推广能力“知识”迁移到一个结构更为简单的网络中,或者通过简单的网络去学习复杂模型中“知识”。防御的具体思路就是:首先根据原始训练样本X和标签Y训练一个初始的深度神经网络,得到概率分布F(X)。然后在利用样本X并且将第一步的输出结果F(X)作为新的标签 训练一个架构相同、蒸馏温度T也相同的蒸馏网络,得到新的概率分布Fd(X),再利用整个网络来进行分类或预测,这样就可以有效的防御对抗样本的攻击:
原理解释:
我们在分析防御性蒸馏的原理之前,先来看一下对抗样本产生的工作框架。(cw之前的工作框架)
对抗样本的产生主要分为两步:(1)方向敏感性估计(Direction Sensitivity Estimation),是指攻击者会评估DNN模型对X样本每一个输入分量所做的改变的敏感性信息,例如FGSM这种方法就是根据神经网络的输入计算代价函数的梯度来得到敏感性信息。JSMA是根据雅可比显著图来找出影响特征点。 (2)扰动选择,是说攻击者会根据第一步中计算所得的敏感性信息选择可以以最小的扰动达到攻击目的的维度添加扰动,来生成对抗样本。 所以对于基于梯度的攻击方法的攻击效果与模型的梯度陡峭程度非常相关。
如果梯度方向陡峭,小扰动就会对模型产生很大的影响,为了防止这种扰动,必须通过网络更好地泛化训练数据集以外的样本来平滑训练过程中学到的模型梯度。当遇到这种对抗样本攻击时,改变网络结构,重新训练出一个更复杂的模型固然能防御这种攻击。防御性蒸馏就满足了这种要求。
8.2.2 去噪网络
去噪的思想是使得去噪后的对抗样本更接近于原始样本,相当于想把生成对抗样本的加入的噪声去掉,尽可能恢复成原始样本,从而对对抗样本能够准确地分类。
作者尝试使用了两个不同架构的神经网络作为去噪器来进行去噪一个是Denoising Autoencoder(DAE),另一个是Denoising Additive U-Net(DUNET)。两者结构如下:
作者首先提出了一种以像素为导向的去噪器(PGD),去噪器的损失函数为:
其中x表示原始图片,x'表示去噪后的图片,所以损失函数表示原始图片和去噪后的图片的差异,然后最小化损失函数就可以得到尽可能接近原始图片的去噪后图片。但是这种去噪器在实验过程中,出现了一个现象,就是输入经过去噪以后,正确率反而有点下降,通过实验进行分析,首先给模型输入一个干净图片,再输入一个对抗图片,然后计算每一层网络在这两张图片上表示的差异,因为去噪器不可能完全消除扰动,剩下的微小扰动在预训练好的卷积网络模型中是逐层放大的,对卷积网络的高维特征产生较大的扰动,最终使得网络得出错误的分类结果。
所以针对这个问题 作者又提出了一种以高级表示为导向的去噪器(HGD),结构如下图所示:
从图中可以看出,HGD与PGD最大的区别在于不再以去噪后图片与原始图片的差异作为损失函数,而是将去噪后的图片和原始图片都输入到预训练好的深度神经网络模型中,将最后几层的高级特征的差异作为损失函数来训练去噪器,这样就避免了PGD的扰动逐层放大的问题。定义的损失函数是:
--------------------------
对抗样本是我研究的一个小方向 以上部分含有自己观点仅供参考。