作者:Florian Trame?r, Dan Boneh [Standford University] [ICLR 2019]
为保护机器学习中隐私性和数据完整性,通常可以利用可信执行环境(Trusted Execution Environment),利用硬件和软件的保护机制来使敏感数据的计算独立出来,但这种方式存在效率上的损失。因此这篇论文提出将计算过程分到可信设备和不可信设备中,以高性能执行深度神经网络的。Slalom,将DNN中的所有线性层计算工作外包到不可信但快速的设备中,同时能够保证DNN的privacy和integrity。
以上三种方式对隐私性的保护不是必要的(2,3训练模型和数据都存在本地),但对于数据完整性是必须的。
$u$代表用户,DNN用$F(x):Xrightarrow Y$表示,$P_T$代表可信处理器,$P_U$代表不可信而高效的处理器。
$n times n$的矩阵$A$,$B$和$tilde{C}$在定义域$mathbb{F}$,验证$tilde{C}=AB$是否成立可以使用一个随机向量$r$,从而验证$tilde{C}r=A(Br)$。比较矩阵乘法,需要花费$O(n^3)$次运算(可以改进到$O(n^{2.81})$)。Freivald算法可以通过三次矩阵-向量乘法,只需花费$O(n^2)$次运算。
令$D:=tilde{C}-AB$,向量$r$是从$S^n$中随机选的,False Positive(FP,被模型预测为正的负样本)概率:
$$Pr[tilde{C}r=A(Br)|tilde{C}neq AB]=Pr[Dr=0|Dneq 0]leq cfrac{1}{|S|}$$
证明。通过重复检验$k$次,使得出错概率小于$1/{|S|^k}$。
输入的隐私保护可以通过同态加密的方式来保护,但开销较大。如图中,$P_T$对每一层的输入都加上随机向量,并把修改后的输入交给$P_U$来做计算,将结果$tilde{Z}_i$返回给$P_T$。在$P_T$中计算$Z_i=tilde{Z}_i-R_iW_i$,$R_i$可以预先计算。最后的输出为$Z_n$。论文的大致方案如下图所示,接下来讨论具体的实施方案。
在他们的框架中,他们对浮点数进行处理,将其转化为整数,整数的值域在$mathbb{Z}_p$。转换浮点数$x$为一个固定点表示(fixed-point representation)$tilde{x}=FP(x;k):=left lfloor {2^kcdot x} right rceil$,代表取最近的整数。$tilde{W}=FP(W,k)$、偏重$tilde{b}=FP(W,2k)$。对结果缩小$2^k$倍。对参数和输入数据的变换,DNN所有计算中值不超过$2^{24}$为保证没有精度损失。论文对VGG16和MobileNet两个模型进行评估,模型准确率大约有少于0.5%的损失。
论文笔记[Slalom: Fast, Verifiable and Private Execution of Neural Networks in Trusted Hardware]
原文:https://www.cnblogs.com/lijianming180/p/12230902.html