余方超 ,方贤进* ,张又文 ,杨高明 ,王 丽
(1.安徽理工大学计算机科学与工程学院,淮南,232000;2.安徽大学计算机科学与技术学院,合肥,230601)
近些年来,以深度学习为代表的机器学习技术在诸多领域得到了广泛的应用.例如,在计算机视觉领域[1],深度学习解决了图像识别、分割、标注等方面的诸多难题,促进了计算机视觉技术的产业化和落地;在语音识别领域[2],深度学习框架多层非线性变换的深层结构有强大的表达与建模能力,使语音识别模型对复杂数据的挖掘和学习能力得到了较大的提升.
然而,随着研究的不断深入,深度学习模型中存在的隐私泄露问题也逐渐暴露[3]:一方面,深度学习模型所具有的发现数据之间潜在关系的能力为攻击者获取敏感信息提供了机会;另一方面,由于深度神经网络有大量的隐藏层,这些隐藏层会形成较大的有效容量,足以将某些数据的细节编码为模型参数,甚至记忆整个数据集[4].最新的研究表明,深度学习模型面临成员推断[5-8]、属性推断[9-11]以及模型窃取[12-13]等多种攻击的风险.成员推断攻击是指给定一条数据,攻击者结合已发布的深度学习模型和相关的背景知识能够推断出该数据是否存在于模型的训练数据中,这种攻击方式对模型的训练数据威胁较大;属性推断攻击的攻击场景不同,其攻击目标是推断出指定样本中缺失的敏感属性的值;而模型窃取攻击的目标是窃取模型的参数信息.
对于这些潜在的安全威胁,目前的解决方案都是以提高模型的鲁棒性来增强深度学习模型对抗攻击的能力,包括对抗训练、教师学生模型等[14-17],但这些解决方案通常存在以下几个问题:(1)每种解决方案大都针对某一种特定类型的攻击,不适用于防御其他类型的攻击;(2)这些防御机制大多建立在假设攻击者具有一定背景知识的基础上,而在实际情况中事先无法估计攻击者对攻击目标以及模型的了解程度;(3)已有解决方案的训练过程都较为复杂.
针对以上解决方案存在的各种问题,本文尝试从差分隐私[18-20]的角度来构建深度学习模型的防御机制.差分隐私的优势在于其建立在坚实的数学基础上,对隐私保护进行了严格的定义并提供了量化评估;而且差分隐私假设攻击者获得了最大背景知识,无须针对特定场景对攻击者的背景知识进行假设,因为这些背景知识不可能提供比最大背景知识更丰富的信息.
目前主流的应用在深度学习领域的差分隐私算法是Abadi et al[21]提出的DPSGD 算法(Stochastic Gradient Descent with Differential Privacy).该算法的核心思想是结合Dwork and Roth[22]的(ε,δ)-差异隐私,在神经网络反向传播的过程中对SGD(Stochastic Gradient Descent)算法中更新的梯度值添加服从高斯分布的噪声;同时,为了解决传统差分隐私组合机制在深度神经网络迭代训练过程中的隐私损失问题,提出Moment Accountant[21]作为一种新的隐私损失度量机制.这些工作将差分隐私和深度学习结合起来,取得了很好的效果.但该算法仍然存在一些局限性:首先,DPSGD 基于SGD 算法对深度神经网络模型进行优化,而一直以来SGD 算法的参数设置问题饱受诟病,尤其是对学习率的选择.若学习率设置过大,学习曲线将会剧烈震荡,模型无法快速收敛;如果初始学习率太低,模型可能会保持一个相当高的代价,造成训练模型预测精度的损失.所以,如果希望获得好的收敛效果,需要在训练过程中频繁地对学习率进行修正,这在一定程度上加剧了模型训练的复杂性.其次,基于(ε,δ)-差异隐私的Moment Accountant[21]隐私预算度量机制,计算过程较为复杂,并且从理论角度来看其分析方法不够简洁、完美.针对这些问题,本文提出了一些改进措施,主要贡献包括:
(1)为解决DPSGD 算法中参数难以设置的问题,提出基于差分隐私的深度学习算法DPADAM(Adam with Differential Privacy).DPADAM利用指数移动平均对梯度进行估计,通过偏差修正得到更新的梯度值,然后对梯度更新值添加服从高斯分布的噪声使其满足差分隐私.
(2)利用Bun and Steinke[23]的Zero-Concentrated Differential Privacy(zCDP)中的组合机制对算法迭代过程的隐私损失进行更清晰严密的理论分析,使计算过程更简单快速,并对基于zCDP的隐私损失度量机制给出了形式化的证明.
(3)在实验部分,对DPADAM 与DPSGD 算法在隐私损失以及参数设置等方面进行了对比和分析,并通过大量的实验进行了验证.
1.1 深度学习深度学习通过建立具有层级结构的人工神经网络对输入信息进行逐层提取和筛选,可以实现端到端的监督学习和非监督学习,可用于学习结构复杂和样本较大的高维数据,它是目前机器学习领域应用最广泛、影响最深远的技术.一个典型的神经网络通常包含n(n>1)层,每一层包含权重w(l)和偏置b(l)这两类参数,学习的目的就是通过最小化损失函数L来更新每一层的参数θ={w(l),b(l)|1≤l≤n},直到获得局部的最优解(对于非凸优化问题,一般无法获得全局最优解).
建立深度学习模型时优化算法的选择至关重要,常见的优化算法主要包括SGD,Adam[24]等.SGD 算法在每次迭代更新时,首先从训练集中获取随机批量样本{(x(1),y(1)),…,(x(m),y(m))},样本数量为m,计算该时刻(假设为t)的梯度估计值:然后利用梯度估计值对θ进行更新.而在Adam算法中,计算完梯度估计值之后,还需分别计算一阶矩估计s1(用于存储历史梯度的指数衰减平均值)和二阶矩估计s2(用于存储历史梯度平方的指数衰减平均值).由于s1和s2用零向量初始化,所以当衰减率γ1,γ2接近1 时,s1和s2趋向0,需要通过计算偏差修正来抵消这个问题,最后利用修正后的矩估计来更新梯度值.
1.2 差分隐私差分隐私保护模型的基本思想是对原始数据或对原始数据的转换添加噪声来达到隐私保护效果.该机制确保在相邻数据集(即至多相差一条数据的两个数据集)中进行同样的查询操作,其查询结果基本一致,即单条数据的存在与否不会影响任何计算结果.差分隐私的形式化定义如下:
定义1 差分隐私[19]给定数据集D和D',二者之间至多相差一条记录.给定一个随机算法A,Range(A)为A的取值范围,若算法A在数据集D和D'上任意输出结果O(O∈Range(A))满足下列不等式,则A满足(ε,δ)-差分隐私:
当满足δ=0 时,随机算法A满足ε-差分隐私.本文将(ε,δ)-差分隐私简写为(ε,δ)-DP.
差分隐私的核心思想是添加噪声进行扰动,噪声大小与随机算法的敏感度相关.敏感度衡量的是删除数据集中任一条记录对查询结果造成的最大改变,其形式化定义如下:
定义2 全局敏感度[19]设函数f:R←Rd,输入为一数据集,输出为d维实数向量,对于任意临近数据集D和D',函数f的全局敏感度满足下式:
其中,‖f(D)-f(D') ‖是f(D)和f(D') 之间的一阶或二阶范数距离.
本文采用的添加噪声的方式为高斯噪声机制,且噪声满足均值为0、方差为Δ2σ2的高斯分布,全局敏感度Δ采用二阶范数距离.
定义3 高斯噪声机制[19]给定数据集D,设函数f:R←Rd敏感度为Δ且ε∈(0,1),δ2≥则随机算法A(D)满足(ε,δ)-DP:
定理1 序列组合性[19]设k个算法A1,…,Ak(i=1,…,k)并且Ak满足(ε,δ)-DP,那么由这些算法构成的组合算法A(A1,…,Ak)满足-差分隐私.
1.3 集中差异隐私随着研究的不断深入,研究人员认识到(ε,δ)-DP 存在很多缺陷.首先,(ε,δ)-DP 的数学抽象不够简洁优雅.其次,(ε,δ)-DP 组合机制的界限不够紧密,即使对简单的计算也难以进行严格的分析;更严重的是,(ε,δ)-DP 在处理具有大量迭代过程的计算时,通常为了确保小的累积损失,每个查询的损失阈值设置得非常低,这导致计算过程中产生大量的噪声,降低了计算结果的可用性.尽管Dwork and Roth[22]提出了一些缓解措施,但这些问题始终没有得到很好的解决.
针对上述问题,近期Dwork and Rothblum[25]提出了更好的解决方案:集中差异隐私(Concentrated Differential Privacy,CDP).CDP 旨在使隐私保护算法适用于大量计算,同时提供强大的隐私保证.它降低了计算过程中对单个查询隐私损失的关注度,同时提高累积损失概率界限,与(ε,δ)-DP 相比,C DP 对多次计算的累积损失可以提供更清晰更准确的分析.本文采用集中差分隐私的另一种表述zCDP[23].
定义4 Zero -Concentrated Differential Privacy[23]给定数据集D和D',二者之间至多相差一条记录且α∈(1,∞).随机算法A满足ρzCDP,当且仅当
其中,Dα(A(D)‖A(D'))表示A(D)和A(D') 间的α-renyi距离,L(O)表示运算结果为O时,算法A在相邻数据集D和D'间产生的隐私损失,即:
和传统的()ε,δ-DP 相比,zCDP 提供了更多的灵活性,它对单一查询的关注度降低,提高了累积损失的概率界限,因此允许更高的准确性和更小的噪声,并在使用组合特性时累积隐私损失更小.关于zCDP 有两个基本推论:
推论1如果算法A满足ρ-zCDP,那么对于任意的δ>0,算法A满足DP.
推论2高斯噪声机制N(0,Δ2σ2I)满足(1/2σ2)-zC DP.
定理2 序列组合性[23]设有k个算法A1,…,Ak(i=1,…,k),并且Ai满足ρi-zCDP,那么由这些算法构成的组合算法A()A1,…,Ak满足
从以下几个方面对本文提出的DPADAM 算法进行解读:DPADAM 算法的设计思路、zCDP累积隐私损失度量机制的解读以及在DPADAM中的应用.
2.1 Adam 算法2015 年,Kingma and Ba[24]提出Adam 算法,解决了传统梯度优化算法收敛速度慢、参数难以设置等问题,并且适合解决包含大规模数据和参数的优化以及包含很高噪声或稀疏梯度的问题.目前,Adam 已成为深度学习领域最常用的优化算法之一.Adam 算法的梯度优化主要包含以下过程:首先假设当前时刻为t,类似SGD 算法,Adam 需要从训练集中获取m个随机批量样本并计算其梯度估计值gt,然后由梯度估计值计算一阶矩估计:
其中,γ1表示衰减率(一般取0.9),s1存储历史梯度的指数衰减平均值.通常SGD 算法在训练过程中其学习曲线会出现大幅震荡,导致模型难以收敛,这是梯度更新的不稳定造成的.为了避免此类现象的发生,Adam 算法通过从历史梯度中获得经验,利用历史梯度的指数衰减平均值作为当前时刻梯度更新的依据,可以很大程度地缓解学习曲线的震荡问题,加速模型收敛.接着,由梯度估计值计算二阶矩估计:
其中,γ2表示衰减率(一般取0.999),s2存储历史梯度平方的指数衰减平均值.通常SGD 算法在训练过程中保持单一的学习率来更新所有的权重,学习率在训练过程中不会改变,这会导致模型陷入大量的局部次优解,影响最终的拟合效果.虽然通过一些方法可以在训练过程中对学习率进行调节,但这样会增加模型训练的复杂度.Adam利用历史梯度平方的指数衰减平均值来更新学习率,可以在训练过程中根据不同的参数设计独立的自适应性学习率,所以Adam 降低了对参数设置的依赖,能得到更好的收敛结果.为了防止s1,s2趋向0,需要通过计算其偏差来进行修正:
其中,η表示学习率,θt表示该时刻的梯度值,θt+1表示下一时刻的梯度值,ξ为常数(一般取10-8).
2.2 DPADAM 算法Adam 解决了SGD 算法存在的诸多问题,使模型训练过程更加灵活、简单,在大部分情况下能获得更好的拟合效果.目前,基于SGD 的差分隐私优化算法DPSGD 在参数设置以及拟合效果上存在的问题均是由SGD算法自身的缺陷所引起的,从这个角度考虑,Adam 是一种很好的解决方案.如果能够基于Adam算法设计一种满足差分隐私定义的优化算法,使该算法继承Adam 的优良特性,应该能很好地解决DPSGD 存在的问题.基于这一想法,本文提出DPADAM 算法,算法1 给出了DPADAM 算法的描述,主要包含以下步骤:
Data Batch:深度学习中获取批量训练样本的方法主要包括随机重组(random reshuffling)和随机采样(random sampling with replacement),这两种方法在训练过程中的隐私损失不同.Yu et al[26]指出,使用随机采样获取批量训练样本时会增加训练数据的随机性,随机采样时无法采用CDP 表征其隐私放大效应,且该情况下的隐私损失很大程度上取决于采样率,而噪声尺度对其产生的影响较小,因此不在本文讨论的范围内.对于随机重组,隐私损失不依赖于采样率,而由σ决定.在这种情况下实现隐私性和模型精度之间的折衷更为关键,这正是本文主要解决的问题.
Compute Gradient:根据损失函数,通过反向传播算法计算每个样本的代价函数在神经网络中各层的梯度值.
Clip Gradient:计算样本梯度的L2范数,比较梯度的L2范数与梯度阈值的大小.如果则最终的梯度值为C.算法中Clip Gradient 的作用有两个:首先,Clip Gradient 通过设置阈值将梯度变化控制在一定范围内,能有效地缓解梯度爆炸问题;其次,Cipping Bound 与噪声大小有关,如果Clipping Bound 的界限较高会导致添加的噪声变大.
Stochastic Optimization:该步骤基本遵循Adam 算法的执行过程.首先计算该批次样本梯度的平均值,然后分别更新一阶矩估计和二阶矩估计,最后,为了防止矩估计值向初值的偏移,需要对矩估计值进行修正.
Add Noise:将学习率相乘,将其作为本轮迭代最终的梯度值对θt进行更新.作为最终累积的梯度值,添加服从N(0,Δ2σ2I)高斯分布的噪声,然后计算加噪后的平均值.将加噪之后的平均值与
2.3 累计隐私损失度量假设算法A的隐私损失为随机变量Z,即,用来衡量根据A(D)和A(D') 的输出结果来分辨D和D'的能力.传统的差分隐私定义可以得到P[Z>ε]=0,但这种“纯粹”的隐私定义太过于严苛,并且缺乏灵活性.可以将(ε,δ)-DP 理解为传统差分隐私的一种放松.(ε,δ)-DP 允许存在一定程度的误差,即保证P[Z>ε]<δ,但这种放松形式隐私损失的边界定义不严密,特别是在处理迭代查询问题时.假设ε,δ,δ'>0,算法A满足(ε,δ)-DP 差分隐私.如果对算法A进行k次查询,根据差分隐私组合机制,该累积算法满足(kε,kδ)-DP.在使用增强性的组合机制下该算法仍然满足如果ε,σ的取值太小,会导致注入的噪声过大;如果ε,δ的取值过大,又会造成很大的隐私损失.
zCDP 作为传统差分隐私的另外一种放松形式,对累积隐私损失有更加清晰严密的分析,即zCDP 满足P[Z>λ+ρ]<e-λ2/2ρ,λ>0.简单地说,当隐私损失变量Z服从均值为ρ/方差为2ρ的高斯分布时,算法A满足ρ-zCDP.当算法A满足(ε,δ)-DP 时,由推论1 可知算法A满足如果对算法A进行k次查询,根据zCDP 的组合机制,该累积算法满足,其等价于由此可知,zCDP 对累积隐私的分析更严密,有利于实现算法在隐私性和可用性之间的平衡.
本文将zCDP 作为DPADAM 隐私损失度量的依据.由推论2 可知,高斯噪声机制满足zCDP的定义,所以DPADAM 算法在迭代过程中通过向梯度添加服从高斯分布的噪声的方式满足zCDP.对累积过程中的隐私损失进行分析,可以得到以下结论:
定理3[26]假设算法A由一系列自适应机制A1,…,Ak组成,且Ai满足ρizCDP.将数据集D随机拆分成D1,…,Dk,则A(D)=(A1(D∩D1),…,Ak(D∩Dk))满 足
训练深度学习模型时,为了达到好的训练效果往往进行多轮训练.在每一轮的训练过程中进行多次迭代,每次获取训练集的部分样本来更新神经网络中的权重和偏置.由定理1 可知,采用基于差分隐私的Adam 算法对模型进行训练时,每一轮训练过程中由于添加噪声而消耗的隐私预算等于该轮多次迭代过程消耗的隐私预算的均值.假设在算法的每次迭代过程中对梯度添加满足N(0,Δ2σ2I)高斯分布的噪声,结合定理3 和推论2可以得出,一轮迭代结束算法满足如果迭代轮数为T,根据定理2 可知,算法满足zCDP,即图1 展示了σ=10 时随着迭代次数的增加,训练过程中ρ-zCDP 隐私预算的变化情况,同时展示其对应的ε-DP 的隐私预算.
图1 zCDP 隐私预算Fig.1 The privacy budget of zCDP
为了展现DPADAM 良好的性能,对比不同参数设置情况下DPADAM 和DPSGD 训练所得模型的拟合效果,实验中训练所得模型在训练集或者测试集上的预测准确率和均方误差是评估算法优劣的标准.此外,通过观察训练过程的学习曲线可以对算法的收敛性能进行比较.实验相关设置如下:
MNIST 数据集:该手写数字数据集包含60000 个训练样本,10000 个测试样本.在每个样本由28×28 个像素点构成,每个像素点用一个灰度值表示.
网络模型:实验中构造的神经网络包含两个卷积层(卷积核的个数分别为16 和32)和两个全连接层(神经元个数均为30).批次训练样本个数m=600,在没有采用隐私保护算法的情况下,100轮训练结束后模型的预测准确率为98.6%(注:本文中训练集的误差和预测准确率表示的是训练集在一轮训练结束后获得的模型上的表现).
隐私损失度量:为了突出展现DPADAM 与其他算法在拟合效果等方面的差异,实验中统一采用zCDP 作为隐私损失度量机制,其隐私预算
训练隐私保护深度学习模型的过程中需要设置的模型参数众多,包括噪声大小σ、梯度阈值C、学习率η、Epoch等,它们都在一定程度上对最终模型的拟合效果产生影响.DPSGD 算法依赖良好的参数设置,只有当模型参数设置合理时才能训练出较为优异的模型,而本文提出的DPADAM 算法能解决这一问题.所以,为了展现DPADAM 算法的优异性能,对比不同参数设置情况下两种算法构造的模型的优劣.实验中主要考察的参数包括每次迭代过程添加的噪声大小σ、梯度阈值C以及学习率η.
(1)噪声大小σ.保持批次训练样本个数m=600,梯度阈值C=2,学习率η=0.15,训练轮数Epoch=100,σ分别取4,8,10 三个值,实验结果如图2 至图7 所示.
图2 σ=4 时的训练集损失(a)和预测准确率(b)Fig.2 Training set loss (a)and prediction accuracy (b)when σ=4
图3 σ=8 时的训练集损失(a)和预测准确率(b)Fig.3 Training set loss (a)and prediction accuracy (b)when σ=8
图4 σ=10 时的训练集损失(a)和预测准确率(b)Fig.4 Training set loss (a)and prediction accuracy (b)when σ=10
图5 σ=4 时的测试集损失(a)和预测准确率(b)Fig.5 Testing set loss (a)and prediction accuracy (b)when σ=4
图6 σ=8 时的测试集损失(a)和预测准确率(b)Fig.6 Testing set loss (a)and prediction accuracy (b)when σ=8
图7 σ=10 时的测试集损失(a)和预测准确率(b)Fig.7 Testing set loss (a)and prediction accuracy (b)when σ=10
σ的大小与添加的噪声的大小成正比.可以看出,两种算法生成的模型在训练集和测试集中的表现大致相同,说明训练过程中未出现明显的过拟合.σ=4 时,在初始阶段DPADAM 算法的收敛速度更快;随着迭代次数的增多,二者的学习曲线都出现一定程度的波动,最终训练出来的模型在均方误差和预测准确率两个方面都比较接近.σ=8 时,DPSGD 算法训练的模型在Epoch=20 时基本趋于稳定,在Epoch=60 之前DPSGD算法的表现优于DPADAM;但是Epoch=60 之后,DPADAM 算法训练的模型在各方面的性能更好.并且,和σ=4 时相比,σ=8 时DPSGD 算法训练出来的模型其性能有明显下降,这是噪声增大的缘故,但DPADAM 算法仍然保持较高的准确率和较小的损失.σ=10 时这种现象更明显,随着迭代次数的增多,DPSGD 算法训练出来的模型的性能出现了大幅下降,而DPADAM 依然保持较好的拟合效果.由此看来,噪声的扰动对DPSGD 产生了较大的影响,而DPADAM 虽然在一定程度上受到噪声的干扰,但它受到的影响小得多.
(2)梯度阈值C.结合上面的实验结果,保持批次训练样本个数m=600,噪声大小σ=4,学习率η=0.15,训练轮数Epoch=100,C分别取2,4 两个值(C=2 参照上面的实验),图8 和图9展示了C=4 时两种算法的实验结果.
迭代过程中添加噪声的大小与梯度阈值C有关,C越大添加的噪声越大,同时C决定了梯度更新的范围,在一定程度上会影响模型的收敛速度.可以看出,增大梯度阈值C,两种算法的性能都有所下降,但DPADAM 受到的影响要小于DPSGD,依然可以产生拟合效果好的模型.
(3)学习率η.结合上面的实验结果,保持批次训练样本个数m=600,噪声大小σ=8,梯度阈值C=2,训练轮数Epoch=100,η分别取0.15,0.05 两个值(η=0.15 参照上面的实验),图10 和图11 是η=0.05 时两种算法的实验结果.
图8 C=4 时的训练集损失(a)和预测准确率(b)Fig.8 Training set loss (a)and prediction accuracy (b)when C=4
图10 η=0.05 时的训练集损失(a)和预测准确率(b)Fig.10 Training set loss (a)and prediction accuracy (b)when η=0.05
图11 η=0.05 时的测试集损失(a)和预测准确率(b)Fig.11 Testing set loss (a)and prediction accuracy (b)when η=0.05
学习率决定梯度更新的速率,合适的学习率会加速模型收敛的速度,学习率较小时模型的收敛速度会减缓.可以看出,当学习率由0.15 下降为0.05 时,虽然模型收敛的速度减缓,但和DPSGD 相比,DPADAM 算法依然能保持较快的收敛速度,在迭代次数相同时能达到更好的拟合效果.
综上所述,在三种不同参数设置情况下,与DPSGD 相比,DPADAM 在测试集和训练集中的拟合效果都有较大程度的提升.这是由于DPADAM 良好的优化策略以及自适应调整学习率的能力,使它在不同参数设置情况下总能得到更快更好的收敛.
为了解决深度学习模型中存在的隐私泄漏问题,本文从差分隐私的角度出发,针对DPSGD 在隐私损失度量、参数设置以及可用性等方面的不足提出具有隐私保护的DPADAM 优化算法.一方面,本文对Adam 算法进行改造,利用历史梯度的指数平均对梯度进行更新,然后对梯度更新值添加服从高斯分布的噪声使其满足差分隐私的定义.改造后的算法很好地继承了Adam 算法的优良特性,可以在训练过程中自适应地调整学习率,降低了对于参数设置的依赖,加速了模型的迭代过程,使训练模型可以更快地收敛,还不会造成模型预测精度的损失.另一方面,本文引入zCDP 对模型训练中迭代过程的隐私损失进行度量,提供了一种更加灵活和准确的度量方法.在数据集MNIST 上的测试结果表明,在相同参数设置情况下DPADAM 算法在收敛速度、预测准确率等方面均优于DPSGD 算法,实现了深度学习模型在隐私性和可用性之间的平衡.
本文的局限性在于没有对DPADAM 算法在各种攻击场景中的表现进行评估,未来的工作将深入探讨DPADAM 算法在成员推断、属性推断等攻击场景中的防御性能.