【AI隐私保护.论文笔记】DELPHI: A Cryptographic Inference Service for Neural Networks

这篇论文整体较简单,就是把复杂的同态转换到预处理的过程,还使用了NAS的方法找到了一个最优的模型架构。

一、背景和介绍

Delphi是一个实现安全推理的框架,使用各种混合协议提高了安全推理的效率和通信量。
提出了安全推理的使用场景,即家庭监控系统。客户不希望泄露自己的隐私,服务器不希望泄露自己的模型,因此可以把模型部署在云上,同过密码协议和客户交互实现安全的推理。然而这种安全推理的技术距离实际应用还有一段的距离。因为它需要复杂的计算和高通信量。即使是当前最先进的安全推理协议Gazelle运行在ResNet-32上也要用82s,560MB的通信量。
在这里插入图片描述
贡献:提出了Delphi这种框架,Delphi提供了一种新的混合密码预测协议,以及一个可以调整机器学习算法以充分利用该协议的性能-准确性权衡的规划器。这种技术能够使开发者比以前工作中考虑在更真实的网络架构上执行密码预测。例如,在ResNet-32上使用delphi进行密码预测在在线阶段只需要3.8秒和60MB的通信,比Gazelle分别提高了22×和9×。

技术

这篇论文相对于Gazelle主要减少了在线阶段的计算消耗,提高了整体的效率。其是在Gazelle的基础上发展而来的。Gazelle使用LHE同态加密技术计算线性层,使用GC混淆电路计算,还描述了如何有效的使用秘密分享技术在这两个协议之间转换。
本篇论文的优化:
线性层:为了降低线性运算的在线计算成本,将LHE密文上的复杂的密码运算移到预处理阶段。服务器上的模型是已经知道的,因此,可以使用LHE在预处理过程中创建模型的秘密共享,然后用户输入数据后,所有的操作都可以使用秘密共享完成,而不是复杂的密码学计算,而且也不需要相互作用来进行矩阵向量相乘。这种技术的好处有两方面。首先,在线阶段只需要传输秘密共享而不是密文,这立即导致线性层在线通信减少8倍。第二,由于在线阶段只对素数域的元素进行计算,并且我们的系统使用具体的32位素数来实现这一目的,该系统可以利用最先进的CPU和GPU库来计算线性层。
非线性层:Gazelle使用的Relu协议是使用GC实现的,GC的开销仍然是比较大的。Delphi框架采用了多项式近似的方案。由于这些协议在每次乘法运算中只需要传输少量恒定数目的字段元素,使用二次近似可以显著减少每次激活层的通信开销,而不需要引入额外的通信轮数。同样,由于底层的乘法协议只需要少量廉价的有限域操作,计算成本也减少了几个数量级。具体来说,在线通信和安全计算二次近似的计算成本分别比相应的GC混淆电路的成本小192×和10000×。
然而,这种近似不可避免的会产生训练上的误差,已经证明,这种误差可能导致训练精度快速下降还可能使训练时间快速增加。为了克服这个问题,作者开发了一个混合密码协议,同时使用ReLU协议和二次近似协议达到较好的精度和较好的效率。
把这两种协议混在一起使用,必然要考虑的是何时使用Relu何时使用二次近似。作者设计一个计划器,自动的把某些Relu以二次近似替代,以便使精度仍然保持在阈值之上。计划器采用的技术是NAS(神经网络搜索)和超参数优化。神经网络架构搜索(NAS)是自动机器学习里面一个热门的研究领域。它致力于自动寻找自动神经网络架构。
在这里插入图片描述

规划器输出一个满足此目标的优化体系结构,然后DELPHI使用该体系结构实例化一个具体的密码预测协议,该协议利用了我们上面提到的密码技术。

二、系统预览

威胁模型仍然是半诚实的。在Delphi的设置下,用户能够知道的信息有两个:推理的结果,模型的结构:比如网络中每一层的尺寸和类型。由于规划器是根据训练数据决定哪里使用近似函数的,所以揭示了模型结构可能会泄露训练数据的信息。更具体地,对于一个l层网络,规划器要进行l次二元选择,会透露l位信息,但是这种透露是可以忽略的。Delphi不隐藏预测结果的信息,作者不考虑如何应对这种攻击。

系统架构

Delphi主要包括两个组件:计算神经网络的混合密码组件和一个神经网络规划器。Delphi最适合于以下应用程序:具有足够的预处理计算能力,推理对延迟敏感,但执行得不够频繁,不会耗尽预处理数据的储备。这类应用的其他例子包括像谷歌镜头这样的系统中的图像分类。

三、密码学基础

GC混淆电路:这里描述的混淆电路与之前的有点不同。
线性同态加密,茫然传输,加法秘密共享,Beaver乘法三元组及基于三元组的秘密共享上的乘法方案。
乘法三元组的生成可以使用线性同态加密。很多方案以前都介绍过了,不进行详细介绍。

四、密码学协议

首先,Delphi把线性层分成了两个阶段,预处理阶段和在线阶段。把复杂的密码计算转移到离线阶段,提高了效率。使用两种方法计计算非线性层,使用纯GC协议计算Relu,或者使用安全的近似函数协议计算。前一种开销大,没有误差,后一种效率高,有误差。

预处理阶段

这个阶段需要用户的参与,但是不需要输入数据。下面介绍协议的过程。
在这里插入图片描述

1.用户运行HE.KeyGen函数生成同态加密使用的公钥 p k p_k pk,私钥 s k s_k sk
2.对于i,0<=i<l,客户和服务器随机生成各自的随机遮罩向量 r i r_i ri s i s_i si
3.客户发送 HE.Enc( p k p_k pk, r i r_i ri)给服务器。服务器计算HE.Enc( p k p_k pk, M i M_i Mi· r i r_i ri s i s_i si) 使用HE.Eval函数,然后把秘闻发送给客户。
4.客户端解密上述密文,获得每一层的( M i M_i Mi· r i r_i ri s i s_i si)。服务器持有每一层 s i s_i si,因此,客户端和服务器持有一个 M i M_i Mi· r i r_i ri的加法秘密共享。
5.取决于激活函数的类型。
对于Relu类型:
由服务器生成混淆电路,发送给客户端。下图是混淆电路C的结构。在这个阶段,客户需要获得( M i M_i Mi· r i r_i ri s i s_i si)和 r i + 1 r_{i+1} ri+1的label。
在这里插入图片描述

对于近似的类型:生成乘法三元组。

在线阶段

在线阶段分为两个阶段,一个是建立一个是计算。
在这里插入图片描述

建立阶段,用户输入为x,它发送x- r i r_i ri给服务器。
计算阶段
线性层的计算:
服务器接收x- r i r_i ri,计算 M i M_i Mi x i x_i xi- r i r_i ri) + s i s_i si。用户则利用之前预计算好的( M i M_i Mi· r i r_i ri s i s_i si)。这时,我们说,服务器和用户分别持有 M i M_i Mi* x i x_i xi的秘密分享。
非线性层的计算:
混淆电路的方案:
1.服务器把 M i M_i Mi x i x_i xi- r i r_i ri) + s i s_i si对应的混淆电路的Label发送给客户
2.客户使用预计算阶段的( M i M_i Mi· r i r_i ri s i s_i si)和 r i + 1 r_{i+1} ri+1的label还有服务器发送的label计算混淆电路,把输出OTP( x i + 1 − r i + 1 x_{i+1}-r_{i+1} xi+1ri+1),发送给服务器。这样两方又都持有 x i + 1 x_{i+1} xi+1的秘密共享了。
3.服务器使用秘钥解密得到 x i + 1 − r i + 1 x_{i+1}-r_{i+1} xi+1ri+1
二元近似函数的计算:
1.使用Beaver乘法三元组计算近似函数,输出 x i + 1 x_{i+1} xi+1的秘密共享
2.客户端把秘密共享加上r_{i+1}发送给服务端,服务端把得到 x i + 1 − r i + 1 x_{i+1}-r_{i+1} xi+1ri+1
备注:
截断的方案和SecureMl一样,然后在服务器上做秘密共享的向量和模型参数的参数不超过64位的范围,可以采用最先进的GPU和CPU计算线性代数。

安全证明:
当客户端被攻陷:
使用模型混合安全和UC通用安全证明的方法,设置一个仿真器,它能够得到用户的输入,输入理想函数,得到输出结果。再把结果处理送给用户,用户在整个过程中,按照协议的过程执行。
最后,我们说理想函数和协议执行是不可区分的。
当服务器被攻陷:
类似于上面的过程,仿真器和服务器交互,但是这里没有用到理想函数,因为服务器得不到输出,所以整个过程都使用随机值就好了。

规划器

DELPHI的规划器采用服务器的神经网络模型(以及其他约束),并产生一个新的神经网络体系结构,以满足神经网络的准确性和效率目标。这个规划器的核心是一个神经体系结构搜索(NAS)算法,它使服务提供者能够自动找到这样的网络体系结构。下面我们将对这个关键组件进行高层次的概述,并描述我们的规划器如何使用它。伪代码如下
在这里插入图片描述

背景:神经网络结构搜索
NAS的目标是自动发现最能满足用户指定的一组约束的神经网络体系结构。大多数NAS算法通过训练大量不同的神经网络,评估它们的准确性,并选择性能最好的。这种方法的限制就是硬件计算量。
规划器预览
Delphi的规划器在输入基线all-ReLU神经网络时,有两种工作模式.当重新训练不可能或不需要时(例如,训练数据不可用,或者供应商负担不起NAS所需的额外计算),该规划器直接工作在第一种模式,即直接输出基线网络。如果再训练(因此NAS)是可行的,那么规划器需要额外的输入训练数据,和一个约束的最小可接受的预测精度,然后使用NAS发现二阶近似的数量最大化,同时实现精度大于t的网络配置,。我们的规划器然后进一步优化这个配置的超参数。详细的说,在第二模式中,我们计划使用NAS去优化下列网络配置属性当给定t精度: (a)二阶近似的数量,(b)放置这些近似层的位置(即层ReLUs近似取代),和©训练超参数比如动量和学习率。
下面,将描述如何解决需要解决的挑战,使NAS适应这种设置,我们选择的具体NAS算法,并详细介绍最终算法的伪代码。

为了Delphi调整NAS

挑战1:
训练备选网络:二元近似函数有较大的误差,直觉的认为是较大的梯度引起的,因此采取下列手段:
1.梯度和激活函数剪裁:
对梯度裁剪,使用这种手段防止梯度爆炸。例如,裁剪所有值小于2的梯度。而且,使用ReLU6
激活函数,确保后激活值的大小最多为6。这就避免了在推理和训练过程中产生错误。
2.逐步激活交换
实验发现即使裁剪了梯度,梯度也会很快爆炸。直觉上讲,ReLU6和二次逼近ReLU应该共享相对类似的梯度,因此它应该可以使用ReLU6最初指导下降到一个稳定的梯度较小的范围,然后使用近似的梯度在这个范围进行细粒度调整。我们通过修改训练过程来利用这一观点,逐步将一个已经训练好的allReLU6网络转换为具有所需数量和放置二次逼近的网络。更详细地说,训练过程将每个激活表示为二次激活和ReLU6激活的加权平均值。这种技术还改进了NAS的运行时间,因为它不再需要从头训练每个候选网络配置。

挑战2:
有效的优化配置:NAS的目的是找到二元近似函数的数量,位置和好的训练超参数。试图在单个NAS执行中优化所有这些变量会导致大量的搜索空间,而在这个搜索空间中找到高效的网络需要相应的较长时间。为了解决这个问题,我们将单个的NAS执行划分为负责优化不同变量的独立运行。例如,对于一个有n个非线性层的体系结构,对于m < n的相关选择,我们首先执行NAS来找到有m个近似层的高分体系结构,然后再次执行NAS来优化这些体系结构的训练超参数。在这一过程的最后,我们的规划器输出各种不同性能-准确性权衡的网络。
挑战3:
优先级高效配置:
提出了一个新的NAS得分函数,优化了效率和配置。
在这里插入图片描述

选择一个NAS算法

到目前为止的讨论都与NAS算法的选择无关。在我们的实现中,我们决定使用流行的基于人群的训练算法,因为它可以直接为我们的用例定制它,而且它享受许多优化的实现。
基于人群的训练算法保持一个候选神经网络的种群,它通过一系列时间步来训练。在每个时间步的最后,它通过用户指定的评分函数来衡量每个候选网络的性能,并将表现最差的候选网络替换为表现最好的候选网络的变异版本(变异函数由用户指定)。在优化过程的最后,PBT输出它所发现的性能最好的候选网络架构(以及训练它们的超参数)。
作者只简单叙述了这种方法,具体的论文参考:“Population Based Training of Neural Networks"这篇论文2017年发表。

六、实验

实验用C++和Rust写得。
同态:SEAL库
GC:https://github.com/GaloisInc/fancy-garbling/
planner:python和tune

一个值得注意的问题就是Gazelle无法提供电路的隐私性。原文中提到增加一大的参数,但这样会使效率下降。

七、实验结果

就是证明效率确实高了,在ResNET-32上实验,和Gazelle对比。

八、实验

https://github.com/mc2-project/delphi
参考文献:
NAS神经网络搜索:https://blog.csdn.net/qq_41997920/article/details/92760903

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值