Optimized Privacy-Preserving CNN Inference With Fully Homomorphic Encryption

(1) 本文实现了使用多项式来计算卷积运算的同态方案。

Abstract

随着隐私保护问题的出现,研究具有数据隐私保护的机器学习模型具有重大意义。由于FHE可以提供严格的数据隐私保护,因此基于FHE实现的安全模型推理具有显著的实用性。本文针对FHE评估卷积运算提出了一种有效的算法,可以实现无论卷积核大小,该算法的计算代价都保持不变,从而在各种卷积核下将运行时间改善12—46倍。

将该FHE卷积运算算法与CKKS的自举算法结合,可以在CIFAR10/100和ImageNet数据集上实现20层的CNN分类器同态评估,运行时间可以减少18.9%和48.1%。可以看到,该算法对密集型卷积操作评估CNN和探索此类CNN是非常有效的。

1. Introduction

本文对FHE中卷积和卷积层的评估方法进行了一些根本性的改进,具体如下:

(1) 将卷积运算表示为CKKS明文空间R:=Z[X]/(XN+1)R:=\Z[X]/(X^N+1)R:=Z[X]/(XN+1)上的多项式算术运算。更准确地说,本文将输入元素打包为环上多项式的系数,这样卷积就可以通过多项式乘法来实现,而不需要任何旋转。

(2) 进一步可以将该算法推广为批处理卷积,然后利用它将尽可能多的卷积输出打包到每个输入密文中。

(3) 进一步修改FHE的自举算法,可以实现卷积运算评估在系数域中,而激活函数评估在槽域中。

2. Preliminaries

A. Notation

Z,R,C\mathbb{Z},\mathbb{R},\mathbb{C}Z,R,C分别表示整数环、实数环和复数环。R:=Z[X]/(XN+1)R:=\Z[X]/(X^N+1)R:=Z[X]/(XN+1)表示多项式环。

B. CKKS

需要掌握CKKS同态加密的一些基本知识。

(1) Enc/Dec and Addition/Multiplication

(2) Encoding/Decoding and Rotation

(3) Computational Cost of FHE: 对于任意给定的函数,FHE评估的代价主要取决于该函数要求的乘法和旋转的次数。此外,CKKS密文都有一个级别,可以通过降低级别来截断消息的最低有效数字。若要执行L级深度的乘法,则需要L级的密文作为输入,密文大小和运行成本随着密文级别的增加而增加。

(4) Bootstrapping : 为了对0级别的密文继续操作,则需要对密文进行自举运算,然后刷新密文为L级别。

C. Homomorphic Convolution

术语"同态卷积"表示对FHE加密的消息评估卷积运算的方法。

(1) 2D-Convolution:

给定输入I∈Rw×wI\in \R^{w\times w}IRw×w,核K∈Rk×kK\in \R^{k\times k}KRk×k。则2D-卷积Conv(I,K)∈Rd×dConv(I,K)\in\R^{d\times d}Conv(I,K)Rd×d可以定义为:
Conv(I,K)i,j:=∑0≤i′,j′≤kKi′,j′⋅Ii+i′,j+j′(1) Conv(I,K)_{i,j}:=\sum_{0\leq i',j'\leq k}K_{i',j'}·I_{i+i',j+j'}\tag{1} Conv(I,K)i,j:=0i,jkKi,jIi+i,j+j(1)
其中(i,j)(i,j)(i,j)表示矩阵第iii行,第jjj列的元素,且0≤i,j<d:=w−k+10\leq i,j< d:=w-k+10i,j<d:=wk+1​。

在这里插入图片描述

(2) 批卷积:给定BB′BB'BB个核,K(B,B′):=(K0,0,K0,1,...,KB−1,B−1)K^{(B,B')}:=(K^{0,0},K^{0,1},...,K^{B-1,B-1})K(B,B):=(K0,0,K0,1,...,KB1,B1),B个输入I(B)=(I0,I1,...,IB−1)I^{(B)}=(I^0,I^1,...,I^{B-1})I(B)=(I0,I1,...,IB1),其中Ki,j∈Rk×k, Ii∈Rw×wK^{i,j}\in \R^{k\times k}, \ I^i\in \R^{w\times w}Ki,jRk×k, IiRw×w。则批卷积的输出为:
Conv(I(B),K(B,B′))b′=∑0≤i<BConv(Ii,Ki,b′)(2) Conv(I^{(B)},K^{(B,B')})^{b'}=\sum_{0\leq i < B}Conv(I^i,K^{i,b'})\tag{2} Conv(I(B),K(B,B))b=0i<BConv(Ii,Ki,b)(2)
其中,0≤b′<B′0\leq b' < B'0b<Bb′b'b表示第b′b'b个批次,iii表示第iii​个批次。

在这里插入图片描述

可以看到批输入III(w,w,B)(w,w,B)(w,w,B),批核KKK(k,k,B,B)(k,k,B,B)(k,k,B,B)

3. ConvFHE

本文提出算法ConvFHE,该算法新颖的将输入矩阵元素与卷积核元素打包为FHE中明文多项式的系数,下面具体介绍该算法。

A. 消息的系数编码

CKKS的明文空间是R:=Z[X]/(XN+1)R:=\Z[X]/(X^N+1)R:=Z[X]/(XN+1)​。不同于CKKS的原来的encoding/decoding算法,本文提出了一种将消息向量直接打包到明文多项式的系数上的encode/decode算法,算法描述如下:
CF−EcdΔ([r0,r1,...,rN−1])→⌊Δ⋅(r0+r1X+...+rN−1XN−1)⌉ CF-Ecd_{\Delta}([r_0,r_1,...,r_{N-1}])\rightarrow\lfloor\Delta·(r_0+r_1X+...+r_{N-1}X^{N-1})\rceil CFEcdΔ([r0,r1,...,rN1])Δ(r0+r1X+...+rN1XN1)⌉

CF−DcdΔ(m0+m1X+...+mN−1XN−1)→[m0/Δ,m1/Δ,...,mN−1/Δ] CF-Dcd_{\Delta}(m_0+m_1X+...+m_{N-1}X^{N-1})\rightarrow[m_0/\Delta,m_1/\Delta,...,m_{N-1}/\Delta] CFDcdΔ(m0+m1X+...+mN1XN1)[m0,m1,...,mN1]

该编码算法允许同态计算包含N个实数作为系数的多项式加法/乘法,而通常的CKKS只允许包含N/2个实数的向量之间的运算。

B. 卷积运算的简明表示

我们将证明卷积Conv(I,K)Conv(I,K)Conv(I,K)可以由RRR上的两个明文多项式的乘积来表示。为了简单起见,我们假设输入III和核KKK的大小不会超过环维度N,以确保输入和核可以打包到一个密文中。

(1) Single Convolution

等式(1) 代表的2D-卷积可以表示为R:=Z[X]/(XN+1)R:=\Z[X]/(X^N+1)R:=Z[X]/(XN+1)中的两个多项式的乘积。

Theorem 1: 对于输入I∈Zw×wI\in \Z^{w\times w}IZw×w和核K∈Zk×kK\in\Z^{k\times k}KZk×k,其中max(w2,k2)≤Nmax(w^2,k^2)\leq Nmax(w2,k2)N。令I(X),K(X)∈RI(X),K(X)\in RI(X),K(X)R定义如下:
I(X):=∑0≤i,j<wIi,j⋅X(i−k)w+jK(X):=∑0≤i,j<kKi,j⋅Xwk−(iw+j) I(X):=\sum_{0\leq i,j<w}I_{i,j}·X^{(i-k)w+j} \\ K(X):=\sum_{0\leq i,j<k}K_{i,j}·X^{wk-(iw+j)} I(X):=0i,j<wIi,jX(ik)w+jK(X):=0i,j<kKi,jXwk(iw+j)
其中,当t<0t<0t<0时,XtX^tXt表示−XN+t-X^{N+t}XN+t。则I(X)⋅K(X)I(X)·K(X)I(X)K(X)的第(iw+j)(iw+j)(iw+j)个系数为Conv(I,K)i,jConv(I,K)_{i,j}Conv(I,K)i,j​​。

Corollary 1: 给定输入I∈Zw×wI \in \Z^{w\times w}IZw×w、核K∈Zk×kK\in\Z^{k\times k}KZk×k,正整数sss,且(sw2,sk2)=N(sw^2,sk^2)=N(sw2,sk2)=N。令Isp(X):=I(Xs)I_{sp}(X):=I(X^s)Isp(X):=I(Xs)Ksp(X):=K(Xs)K_{sp}(X):=K(X^s)Ksp(X):=K(Xs),其中I(X)I(X)I(X)K(X)K(X)K(X)如Theorem 1中描述。则Isp(X)⋅Ksp(X)I_{sp}(X)·K_{sp}(X)Isp(X)Ksp(X)的第s(iw+j)s(iw+j)s(iw+j)个系数为Conv(I,K)i,jConv(I,K)_{i,j}Conv(I,K)i,j​。

注意,当且仅当l=0 mod sl=0\ mod \ sl=0 mod s时,Isp(X)⋅Ksp(X)I_{sp}(X)·K_{sp}(X)Isp(X)Ksp(X)的第lll个系数为0,我们称这种多项式为稀疏打包。

(2) Batch Convolution

回想等式2,批卷积实际上就是一系列单卷积的求和。我们提出的批卷积算法即将批输入和批核编码到一个多项式中。然后通过两个多项式的乘法计算它们的卷积与加和。其关键是对每个单输入Isp(X)I_{sp}(X)Isp(X)与核Ksp(X)K_{sp}(X)Ksp(X)均使用稀疏打包,然后每个卷积都被稀疏的计算,进而加和到一起,如图3和算法1所示:

在这里插入图片描述

图3分析: 输入I=(2,2,4)I=(2,2,4)I=(2,2,4),核K=(1,1,4,4)K=(1,1,4,4)K=(1,1,4,4),这里仅使用核的第i个批次Ki=(1,1,4)K^i=(1,1,4)Ki=(1,1,4),即结果为Conv(I,Ki)=Conv(I0,K0i)+Conv(I1,K1i)+Conv(I2,K2i)+Conv(I3,K3i)Conv(I,K^i)=Conv(I_0,K^i_0)+Conv(I_1,K^i_1)+Conv(I_2,K^i_2)+Conv(I_3,K^i_3)Conv(I,Ki)=Conv(I0,K0i)+Conv(I1,K1i)+Conv(I2,K2i)+Conv(I3,K3i)

表达为多项式的乘积后,结果如下:

在这里插入图片描述

发现,实际上这里的x3x^3x3次项,x7x^7x7次项,x11x^{11}x11次项和x15x^15x15次项的系数正好是第iii个批次的批卷积结果。

下面分析算法1:
在这里插入图片描述

Theorem 1(算法1的正确性): 对于批输出I(B)∈Zw×w×BI^{(B)}\in\Z ^{w\times w\times B}I(B)Zw×w×B和批核K(B,B)∈Zk×k×B×BK^{(B,B)}\in\Z^{k\times k\times B\times B}K(B,B)Zk×k×B×B,假设满足条件max(w2B,k2B)=Nmax(w^2B,k^2B)=Nmax(w2B,k2B)=N,令rb(X)r_b(X)rb(X)为算法1的输出,其中b={0,1,...,B−1}b=\{0,1,...,B-1\}b={0,1,...,B1},则有rb(X)r_b(X)rb(X)的第B(iw+j)B(iw+j)B(iw+j)个系数等于Conv(I(B),K(B,B))i,jbConv(I^{(B)},K^{(B,B)})^b_{i,j}Conv(I(B),K(B,B))i,jb

注意,算法1输出的是B个批次中的其中一个批次的结果,因此为了获得全部的结果,我们需要遍历b={0,1,...,B−1}b=\{0,1,...,B-1\}b={0,1,...,B1},即运行B次算法1。然而,这样的问题是完整的结果由RRR上的B个多项式组成,即分别包含在B个密文中。为了解决该问题,我们可以使用文献[5]中的工作,将这些多项式中我们需要的系数打包到一个多项式中。


文献[5]算法描述:

我先去阅读一下这篇文章.


Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐