Zama TFHE-rs白皮书(2)

前序博客有:

  • 基于[Discretized] Torus的全同态加密指引(1)
  • 基于[Discretized] Torus的全同态加密指引(2)
  • TFHE——基于[Discretized] Torus的全同态加密 代码解析
  • Zama TFHE-rs
  • Zama TFHE-rs白皮书(1)

Zama TFHE-rs白皮书,见:

  • Zama团队Ilaria Chillotti、Marc Joye、Pascal Paillier论文《Programmable Bootstrapping Enables Efficient Homomorphic Inference of Deep Neural Networks∗》。

4. Programmable Bootstrapping可编程自举

Programmable Bootstrapping可编程自举为bootstrapping技术的扩展,支持重置噪声到某固定级别,与此同时,对输入密文做某函数evaluate。

本节将详细介绍如何做常规bootstrapping,然后继续到可编程自举,同时展示如何将任意函数表示为look-up table来做evaluate。当可编程自举中的 f f f为identity函数时,其就是常规自举。

4.1 blind rotation

Gentry的bootstrapping为:

  • 对某密文自身的解密密钥加密,使用该加密后的解密密钥,来对该密文进行同态解密,与此同时降低该密文中的噪声。

4.1.1 Intuition

Intuition:
对于 L W E ‾ \overline{LWE} LWE密文 c ˉ ← L W E ‾ s ( μ ˉ ) = ( a ˉ 1 , ⋯ , a ˉ n , b ˉ ) ∈ ( Z / q Z ) n + 1 \bar{c}\leftarrow\overline{LWE}_{\mathbf{s}}(\bar{\mu})=(\bar{a}_1,\cdots,\bar{a}_n,\bar{b})\in(\mathbb{Z}/q\mathbb{Z})^{n+1} cˉLWEs(μˉ)=(aˉ1,,aˉn,bˉ)(Z/qZ)n+1,其中:

  • a ˉ j ← § Z / q Z \bar{a}_j\xleftarrow{\S} \mathbb{Z}/q\mathbb{Z} aˉj§ Z/qZ
  • b ˉ = ∑ j = 1 n s j a ˉ j + μ ˉ ∗ \bar{b}=\sum_{j=1}^{n}s_j\bar{a}_j+\bar{\mu}^* bˉ=j=1nsjaˉj+μˉ,其中 μ ˉ ∗ = μ ˉ + e ˉ \bar{\mu}^*=\bar{\mu}+\bar{e} μˉ=μˉ+eˉ,离散噪声 e ˉ = ⌈ e q ⌋ ( m o d q ) \bar{e}=\lceil eq\rfloor(\mod q) eˉ=eq(modq) e ← N ( 0 , σ 2 ) e\leftarrow \mathcal{N}(0,\sigma^2) eN(0,σ2)
  • 密文 c ˉ \bar{c} cˉ,为基于私钥 s = ( s 1 , ⋯ , s n ) ∈ B n \mathbf{s}=(s_1,\cdots,s_n)\in\mathbb{B}^n s=(s1,,sn)Bn,对明文 μ ˉ ∈ Z / q Z \bar{\mu}\in \mathbb{Z}/q\mathbb{Z} μˉZ/qZ的加密。
  • 使用私钥 s \mathbf{s} s,对密文 c ˉ \bar{c} cˉ解密分为2步:
    • μ ˉ ∗ ← b ˉ − ∑ j = 1 n s j a ˉ j \bar{\mu}^*\leftarrow \bar{b}-\sum_{j=1}^{n}s_j\bar{a}_j μˉbˉj=1nsjaˉj
    • μ ˉ ← U p p e r q , p ( μ ˉ ∗ ) \bar{\mu}\leftarrow Upper_{q,p}(\bar{\mu}^*) μˉUpperq,p(μˉ)

为bootstrap,可将(无rounding)的解密看成是:
− μ ˉ ∗ = − b ˉ + ∑ j = 1 n s j a ˉ j ( m o d q ) -\bar{\mu}^*= -\bar{b}+\sum_{j=1}^{n}s_j\bar{a}_j(\mod q) μˉ=bˉ+j=1nsjaˉj(modq)

将该值作为 X X X的指数,获得单项式 X − μ ˉ ∗ X^{-\bar{\mu}^*} Xμˉ。注意, μ ˉ ∗ \bar{\mu}^* μˉ q q q个可能的取值。粗略的思想为,对于所有可能的 μ ˉ ∗ \bar{\mu}^* μˉ值,构建多项式——test polynomial,使得其每个系数都编码了对应 μ ˉ ∗ \bar{\mu}^* μˉ的无噪声值,即 μ ˉ = U p p e r q , p ( μ ˉ ∗ ) \bar{\mu}= Upper_{q,p}(\bar{\mu}^*) μˉ=Upperq,p(μˉ)
特别地,假设该test polynomial为degree- q q q多项式 v ˉ = v ˉ 0 + v ˉ 1 X + ⋯ + v ˉ q − 1 X q − 1 \bar{v}=\bar{v}_0+\bar{v}_1X+\cdots+\bar{v}_{q-1}X^{q-1} vˉ=vˉ0+vˉ1X++vˉq1Xq1,则其第 i i i个系数设置为 v ˉ i = U p p e r q , p ( i m o d q ) \bar{v}_i=Upper_{q,p}(i\mod q) vˉi=Upperq,p(imodq)

通过对该test polynomial v ˉ \bar{v} vˉ rotate μ ˉ ∗ \bar{\mu}^* μˉ 个位置, μ ˉ \bar{\mu} μˉ值就移至了常量系数位置,然后剩下的就是extract该值了。如下图所示:
在这里插入图片描述
当然,该rotation是同态进行的,因此名为blind rotation。同时,由于 X − μ ˉ ∗ ⋅ v ˉ X^{-\bar{\mu}^*}\cdot \bar{v} Xμˉvˉ为多项式,这正是 G L W E ‾ \overline{GLWE} GLWE加密所要处理的。

G L W E ‾ \overline{GLWE} GLWE中的多项式都是基于模 X N + 1 X^N+1 XN+1定义的。这即意味着 X X X Z N [ X ] \mathbb{Z}_N[X] ZN[X]中order为 2 N 2N 2N的multiplicative元素。【 X N + i ≡ − X i ( m o d X N + 1 ) X^{N+i}\equiv -X^i(\mod X^N+1) XN+iXi(modXN+1),从而有 X N ≡ − 1 ( m o d X N + 1 ) X^{N}\equiv -1(\mod X^N+1) XN1(modXN+1),以及 X 2 N ≡ 1 ( m o d X N + 1 ) X^{2N}\equiv 1(\mod X^N+1) X2N1(modXN+1)
但是在 L W E ‾ \overline{LWE} LWE加密中, μ ˉ ∗ \bar{\mu}^* μˉ是基于模 q q q定义的。因此,需要将其rescale为模 2 N 2N 2N。因此,不适用relation − μ ˉ ∗ = − b ˉ + ∑ j = 1 n s j a ˉ j ( m o d q ) -\bar{\mu}^*= -\bar{b}+\sum_{j=1}^{n}s_j\bar{a}_j(\mod q) μˉ=bˉ+j=1nsjaˉj(modq),而实际依赖于其近似值:
− μ ~ ∗ = − b ~ + ∑ j = 1 n s j a ~ j ( m o d 2 N ) -\tilde{\mu}^*= -\tilde{b}+\sum_{j=1}^{n}s_j\tilde{a}_j(\mod 2N) μ~=b~+j=1nsja~j(mod2N)
其中:

  • b ~ = ⌈ 2 N ( b ˉ m o d q ) q ⌋ \tilde{b}=\lceil \frac{2N(\bar{b}\mod q)}{q}\rfloor b~=q2N(bˉmodq)
  • a ~ j = ⌈ 2 N ( a ˉ j m o d q ) q ⌋ \tilde{a}_j=\lceil \frac{2N(\bar{a}_j\mod q)}{q}\rfloor a~j=q2N(aˉjmodq)

这种近似可能会生成一个小的额外error添加到噪声中。称该额外error为drift:

  • drift 同时依赖 L W E ‾ \overline{LWE} LWE的size n n n,和, G L W E ‾ \overline{GLWE} GLWE中的ring size N N N
  • 可通过小心选择参数,可处理drift对结果的影响。

同时,因为test polynomial v ˉ \bar{v} vˉ 属于 Z ^ N [ X ] \hat{\mathbb{Z}}_N[X] Z^N[X],因此其由 N N N个系数,最多可编码 N N N μ ~ ∗ \tilde{\mu}^* μ~值——对应的解决方案为,确保 μ ~ ∗ \tilde{\mu}^* μ~的最高有效位为 0 0 0,即要求参数 w ˉ ≥ 1 \bar{w}\geq 1 wˉ1。此时, μ ~ ∗ \tilde{\mu}^* μ~最多有 N N N个可能值,该test polynomial v ˉ = v ˉ 0 + ⋯ + v ˉ N − 1 X N − 1 \bar{v}=\bar{v}_0+\cdots+\bar{v}_{N-1}X^{N-1} vˉ=vˉ0++vˉN1XN1,其中:
v ˉ i = U p p e r q , p ( q 2 N i m o d q ) \bar{v}_i=Upper_{q,p}(\frac{q}{2N}i\mod q) vˉi=Upperq,p(2Nqimodq)

4.1.2 implementation

接下来将解释在 G L W E ‾ \overline{GLWE} GLWE加密情况下,如何计算 X − μ ~ ∗ X^{-\tilde{\mu}^*} Xμ~与test polynomial v ˉ \bar{v} vˉ 之间的乘积——可通过一系列CMux gates来实现。

用于加密 L W E ‾ \overline{LWE} LWE密文的私钥bits s j s_j sj是不可公开的。基于某加密密钥 s ′ ∈ B N [ X ] k \mathfrak{s}'\in\mathbb{B}_N[X]^k sBN[X]k,对 L W E ‾ \overline{LWE} LWE私钥逐bit做 G G S W ‾ \overline{GGSW} GGSW加密,可获得bootstrapping keys——对于所有的 j = 1 , ⋯ , n j=1,\cdots,n j=1,,n,有:
b s k [ j ] ← G G S W ‾ s ′ ( s j ) bsk[j]\leftarrow \overline{GGSW}_{\mathfrak{s}'}(s_j) bsk[j]GGSWs(sj)

对应的blind rotation算法见Algorithm 1:
在这里插入图片描述
Blind rotation算法中,循环结束时, A C C ACC ACC包含了,基于key s ′ \mathfrak{s}' s X − μ ~ ∗ ⋅ v ˉ X^{-\tilde{\mu}^*}\cdot \bar{v} Xμ~vˉ G L W E ‾ \overline{GLWE} GLWE 加密的密文。

c ˉ j ′ \bar{\mathfrak{c}}_j' cˉj来表示Algorithm 1中 i = j i=j i=j时 accumulator A C C ACC ACC 的值。则有:
c ˉ j ′ ← G L W E ‾ s ′ ( X − b ~ + ∑ i = 1 j s i a ~ i ⋅ v ˉ ) \bar{\mathfrak{c}}_j'\leftarrow \overline{GLWE}_{\mathfrak{s}'}(X^{-\tilde{b}+\sum_{i=1}^{j}s_i\tilde{a}_i}\cdot \bar{v}) cˉjGLWEs(Xb~+i=1jsia~ivˉ)

c ˉ ′ = c ˉ n \bar{\mathfrak{c}}'=\bar{\mathfrak{c}}_n cˉ=cˉn,则有:
c ˉ ′ ← G L W E ‾ s ′ ( X − b ~ + ∑ i = 1 n s i a ~ i ⋅ v ˉ ) ⏟ = G L W E ‾ s ′ ( X − μ ~ ∗ ⋅ v ˉ ) ← G L W E ‾ s ′ ( u ˉ ) \bar{\mathfrak{c}}'\leftarrow \underbrace{\overline{GLWE}_{\mathfrak{s}'}(X^{-\tilde{b}+\sum_{i=1}^{n}s_i\tilde{a}_i}\cdot \bar{v})}_{=\overline{GLWE}_{\mathfrak{s}'}(X^{-\tilde{\mu}^*}\cdot \bar{v})}\\ \leftarrow \overline{GLWE}_{\mathfrak{s}'}(\bar{u}) cˉ=GLWEs(Xμ~vˉ) GLWEs(Xb~+i=1nsia~ivˉ)GLWEs(uˉ)

其中,多项式 u ˉ ∈ Z ^ N [ X ] \bar{u}\in\hat{\mathbb{Z}}_N[X] uˉZ^N[X]的常量项为 μ ˉ \bar{\mu} μˉ,即 u ˉ : = X − μ ~ ∗ ⋅ v ˉ = u ˉ 0 + u ˉ 1 X + ⋯ + u ˉ N − 1 X N − 1 \bar{u}:=X^{-\tilde{\mu}^*}\cdot \bar{v}=\bar{u}_0+\bar{u}_1X+\cdots+\bar{u}_{N-1}X^{N-1} uˉ:=Xμ~vˉ=uˉ0+uˉ1X++uˉN1XN1,其中 u ˉ 0 = μ ˉ \bar{u}_0=\bar{\mu} uˉ0=μˉ

bootstrapping剩余的步骤包含:

  • sample extraction:
    • 提取 u ˉ = X − μ ~ ∗ ⋅ v ˉ \bar{u}=X^{-\tilde{\mu}^*}\cdot \bar{v} uˉ=Xμ~vˉ 作为 μ ˉ \bar{\mu} μˉ L W E ‾ \overline{LWE} LWE密文。
    • 其实际是简单的提取 c ˉ ′ \bar{\mathfrak{c}}' cˉ G L W E ‾ \overline{GLWE} GLWE密文 中的一些系数。

sample extraction的实现细节为:

  • 1)令 s ′ = ( s 1 ′ , ⋯ , s k ′ ) ∈ B N [ X ] k \mathfrak{s}'=(\mathfrak{s}'_1,\cdots,\mathfrak{s}'_k)\in\mathbb{B}_N[X]^k s=(s1,,sk)BN[X]k,其中对于 1 ≤ j ≤ k 1\leq j\leq k 1jk,有:
    s j ′ = s j , 0 ′ + ⋯ + s j , N − 1 ′ X N − 1 \mathfrak{s}'_j=s_{j,0}'+\cdots +s_{j,N-1}'X^{N-1} sj=sj,0++sj,N1XN1
  • 2)将 c ˉ ′ ← G L W E ‾ s ′ ( u ˉ ) ∈ Z ^ N [ X ] k + 1 \bar{\mathfrak{c}}' \leftarrow \overline{GLWE}_{\mathfrak{s}'}(\bar{u})\in\hat{\mathbb{Z}}_N[X]^{k+1} cˉGLWEs(uˉ)Z^N[X]k+1解析为 ( a ˉ 1 ′ , ⋯ , a ˉ k ′ , b ˉ ′ ) (\bar{\mathfrak{a}}_1',\cdots,\bar{\mathfrak{a}}_k',\bar{\mathfrak{b}}') (aˉ1,,aˉk,bˉ),其中对于 1 ≤ j ≤ k 1\leq j\leq k 1jk,有:
    a ˉ j ′ = a ˉ j , 0 ′ + ⋯ + a ˉ j , N − 1 ′ X N − 1 \bar{\mathfrak{a}}_j'=\bar{a}_{j,0}'+\cdots+\bar{a}_{j,N-1}'X^{N-1} aˉj=aˉj,0++aˉj,N1XN1
    b ˉ ′ = b ˉ 0 ′ + ⋯ + b ˉ N − 1 ′ X N − 1 \bar{\mathfrak{b}}'=\bar{b}_{0}'+\cdots+\bar{b}_{N-1}'X^{N-1} bˉ=bˉ0++bˉN1XN1
  • 3)可验证, c ˉ ′ : = ( a ˉ 1 , 0 ′ , − a ˉ 1 , N − 1 ′ , ⋯ , − a ˉ 1 , 1 ′ , ⋯ , a ˉ k , 0 ′ , − a ˉ k , N − 1 ′ , − a ˉ k , 1 ′ , b ˉ 0 ′ ) ∈ ( Z / q Z ) k N + 1 \bar{c}':=(\bar{a}_{1,0}',-\bar{a}_{1,N-1}',\cdots,-\bar{a}_{1,1}',\cdots,\bar{a}_{k,0}',-\bar{a}_{k,N-1}',-\bar{a}_{k,1}',\bar{b}_0')\in(\mathbb{Z}/q\mathbb{Z})^{kN+1} cˉ:=(aˉ1,0,aˉ1,N1,,aˉ1,1,,aˉk,0,aˉk,N1,aˉk,1,bˉ0)(Z/qZ)kN+1,为,基于key s ′ = ( s 1 ′ , ⋯ , s k N ′ ) ∈ B k N \mathbf{s}'=(s_1',\cdots,s'_{kN})\in\mathbb{B}^{kN} s=(s1,,skN)BkN,对 μ ˉ \bar{\mu} μˉ L W E ‾ \overline{LWE} LWE加密。其中对于 1 ≤ j ≤ k 1\leq j\leq k 1jk 0 ≤ l ≤ N − 1 0\leq l\leq N-1 0lN1,有 s l + 1 + ( j − 1 ) N ′ : = s j , l ′ s'_{l+1+(j-1)N}:=s'_{j,l} sl+1+(j1)N:=sj,l

4.1.3 key switching

经以上blind rotation和sample extraction之后,会将输入密文 c ˉ ← L W E ‾ s ( μ ˉ ) ∈ ( Z / q Z ) n + 1 \bar{c}\leftarrow\overline{LWE}_{\mathbf{s}}(\bar{\mu})\in(\mathbb{Z}/q\mathbb{Z})^{n+1} cˉLWEs(μˉ)(Z/qZ)n+1,转换为输出密文 c ˉ ′ ← L W E ‾ s ′ ( μ ˉ ) ∈ ( Z / q Z ) n + 1 \bar{c}'\leftarrow\overline{LWE}_{\mathbf{s}'}(\bar{\mu})\in(\mathbb{Z}/q\mathbb{Z})^{n+1} cˉLWEs(μˉ)(Z/qZ)n+1,二者加密的是相同的明文 μ ˉ \bar{\mu} μˉ,但使用的是不同的加密密钥,且具有不同的格式。

为将 c ˉ ′ \bar{c}' cˉ转换为原始的 c ˉ \bar{c} cˉ,需要额外的操作:

  • key switching

FHE中,key switching是经典技术,可用于:

  • 在不同的参数设置下,对加密密钥进行switch。

实现key switching技术时,需用到key-switching keys。所谓key-switching keys,其本质为:

  • 基于原始加密密钥 s \mathbf{s} s,对 s ′ \mathbf{s}' s逐bit做 L W E ‾ \overline{LWE} LWE加密。
    在这里插入图片描述

理论上看,key switching看起来与bootstrapping非常相似:

  • bootstrapping:降低噪声,以满足计算要求。
  • key switching:增加噪声,使得evaluate更便宜。

Remark 2:
如上所属,输入明文会经过3个转换:

  • 1)blind rotation:有噪声的
  • 2)sample extraction:无噪声的
  • 3)key switching:有噪声的
    c ˉ ( o u t ) ← K e y S w i t c h ∘ S a m p l e E x t r a c t ∘ B l i n d R o t a t e ( c ˉ ( i n ) ) \bar{c}^{(out)}\leftarrow KeySwitch \circ SampleExtract \circ BlindRotate (\bar{c}^{(in)}) cˉ(out)KeySwitchSampleExtractBlindRotate(cˉ(in))
    在这里插入图片描述
    同时,在Florian Bourse等人2018年论文 Fast homomorphic evaluation of deep discretized neural networks中,作者发现,[nosiy] key switching流程可四处移动。
    考虑到输入输出密文均属于 ( Z / q Z ) k N + 1 (\mathbb{Z}/q\mathbb{Z})^{kN+1} (Z/qZ)kN+1,则bootstrapping流程也可表示为:
    c ˉ ′ ( o u t ) ← S a m p l e E x t r a c t ∘ B l i n d R o t a t e ∘ K e y S w i t c h ( c ˉ ′ ( i n ) ) \bar{c}'^{(out)}\leftarrow SampleExtract \circ BlindRotate \circ KeySwitch (\bar{c}'^{(in)}) cˉ(out)SampleExtractBlindRotateKeySwitch(cˉ(in))

由于sample extraction是无噪声的,输出密文中包含的唯一噪声源自blind rotation。与key switching相对应的噪声不会相加。

4.2 Look-up Table Evaluation

之前章节中,blind rotation用于做bootstrapping。
此外,blind rotation技术还可调整用于对函数evaluate。函数会被evaluate为某编码进test polynomial的look-up table。

特别地,对于具有domain D \mathscr{D} D的任意函数 f f f,基于已加密数据进行evaluate,并想象有 F \mathscr{F} F
f : D → F , x ↦ y = f ( x ) f:\mathscr{D}\rightarrow \mathscr{F},x\mapsto y=f(x) f:DF,xy=f(x)

假设已知编码函数 E n c o d e : D → Z / q Z Encode: \mathscr{D}\rightarrow \mathbb{Z}/q\mathbb{Z} Encode:DZ/qZ E n c o d e ′ : F → Z / q Z Encode': \mathscr{F}\rightarrow \mathbb{Z}/q\mathbb{Z} Encode:FZ/qZ,及其相应的解码函数 D e c o d e Decode Decode D e c o d e ′ Decode' Decode

之前章节中提到,通过选择test polynomail v ˉ = v ˉ 0 + v ˉ 1 X + ⋯ + v ˉ N − 1 X N − 1 \bar{v}=\bar{v}_0+\bar{v}_1X+\cdots+\bar{v}_{N-1}X^{N-1} vˉ=vˉ0+vˉ1X++vˉN1XN1,其中 v ˉ i = U p p e r q , p ( q 2 N i m o d q ) \bar{v}_i=Upper_{q,p}(\frac{q}{2N}i\mod q) vˉi=Upperq,p(2Nqimodq),可将某 μ ˉ \bar{\mu} μˉ的密文,转换为具有更低噪声的、对相同 μ ˉ \bar{\mu} μˉ的密文。

对于 0 ≤ i ≤ N − 1 0\leq i \leq N-1 0iN1,定义具有pairs ( i , T [ i ] ) (i,T[i]) (i,T[i])的look-up table,其中:
T [ i ] = E n c o d e ′ ∘ f ∘ D e c o d e ∘ U p p e r q , p ( q 2 N i m o d q ) T[i]=Encode' \circ f\circ Decode\circ Upper_{q,p}(\frac{q}{2N}i\mod q) T[i]=EncodefDecodeUpperq,p(2Nqimodq)
在这里插入图片描述
如上图所示,有test polynomail v ˉ = v ˉ 0 + v ˉ 1 X + ⋯ + v ˉ N − 1 X N − 1 \bar{v}=\bar{v}_0+\bar{v}_1X+\cdots+\bar{v}_{N-1}X^{N-1} vˉ=vˉ0+vˉ1X++vˉN1XN1,其中 v ˉ i = T [ i ] \bar{v}_i=T[i] vˉi=T[i]。剩下的处理流程与4.1节中的一致,保持不变。

这样,up to the drift, μ ˉ \bar{\mu} μˉ的输入密文( μ ˉ \bar{\mu} μˉ为对某 s ∈ D s\in\mathscr{D} sD值的编码),将被转换为编码了 f ( x ) f(x) f(x)值的密文。此外,作为bootstrapping的输出,最终的密文具有低级别的噪声。以上整个流程称为programmable bootstrapping。

Remark 3:

  • 常规的bootstrapping,要求编码参数 w ˉ ≥ 1 \bar{w}\geq 1 wˉ1
  • 当look-up table中的元素是negacyclic时,可将常规bootstrapping提升为programmable bootstrapping。所谓negacyclic,是指 T [ i + N ] ≡ − T [ i ] ( m o d 2 N ) T[i+N]\equiv -T[i](\mod 2N) T[i+N]T[i](mod2N),此时 2 N 2N 2N值实际是programmed。

5. 神经网络应用

至此,所有工具均已列出。本节,将把这些工具用于对神经网络进行同态evaluate。

Neural Network(NN,神经网络)最初是在计算机科学中通过类比人脑来构建的,目的是解决机器以前无法解决的复杂问题。神经网络可以被训练,然后用于对物体进行分类、探测疾病、进行人脸识别等。神经网络如下图所示,由相互连接的人工神经元组成,这些神经元会分层:

  • 第一层包含初始数据,称为输入层。
  • 最后一层称为输出层。
  • 输入层与输出层之间的层用于计算,称为hidden隐藏层。
    在这里插入图片描述
    如下图展示了单个人工神经元示例结构。人工神经元模仿生物神经元。神经元接收:
  • d d d个输入信号 x i x_i xi,每个信号由参数 w i w_i wi(量化其各自的影响)加权
  • 1个输入偏置参数$b。
  • 输出信号为 z = f ( s ) z=f(s) z=f(s),其中 s = ∑ d i = w i x i + b s=\sum_d^i=w_i x_i+b s=di=wixi+b。函数 f f f是非线性的,并被称为激活函数。

神经网络中的不同层通常旨在从输入数据中连续提取辨别特征或模式。层的数量和在每层中执行的操作类型取决于神经网络试图实现的任务。

接下来回顾一些常用于构建神经网络的层。该清单并非详尽无遗。本文技术是通用的,支持所有已知类型的层。每个层接收来自前一层的输入,执行一些计算,并产生输出。输出然后作为输入流到下一层。在处理加密数据时,可以区分两种类型的层:

  • 1)可使用分级运算(leveled operations)进行同态评估的层;【只要噪声超过某个阈值,第一类型的层也可以对一些中间值进行自举操作。】
  • 2)涉及非线性或更复杂操作的层,在这种情况下,需要一个或多个可编程自举(PBS,Programmable bootstrappings)。

5.1 没有PBS的层

没有PBS的层有:

  • 1)Dense/linear密集/线性层
  • 2)convolution卷积层
  • 3)addition加法层
  • 4)Flatten拍平层
  • 5)Global average pooling全局平均池化层

5.1.1 Dense/linear致密/线性层

(全连接)密集层,计算输入和权重矩阵之间的点积。可添加一个偏置向量。激活函数然后按逐个元素应用以产生输出。当没有激活函数时,密集层也称为线性层。

当以同态方式进行评估时,权重和偏置向量是明文停工的。因此,对密集层(激活除外)的评估包括一系列常数乘法和加法运算,这些运算都是leveled operations。

激活函数将在下一节中进行处理(请参见激活层)。

5.1.2 convolution卷积层

卷积层将输入层与由权重张量组成的卷积核(也称为filters滤波器)进行卷积,以产生输出张量。可以将偏差添加到输出中。此外,激活函数可以应用于输出。下图一个2D卷积。
在这里插入图片描述
filters是明文提供的。与密集层类似,对卷积层(激活除外)的评估包括一系列常数乘法和加法运算,这些运算都是leveled operations。

5.1.3 addition加法层

加法层会逐元素做加法运算。基于已加密数据,这些都是leveled operations。

5.1.4 Flatten拍平层

拍平层,会将输入,重整为低维度数组——如,喂入随后的密基层。
基于已加密数据,拍平函数简单地对输入密文进行重排。无需同态运算。

5.1.5 Global average pooling全局平均池化层

全局平均池化层,计算输入元素的平均值。若 n n n表示元素个数, a i a_i ai表示第 i i i个元素的值,则全局平均池化函数计算:
( ∑ i = 1 n a i ) / n (\sum_{i=1}^{n}a_i)/n (i=1nai)/n

在同态评估时,可将全局平均池化reduce为求和计算 ∑ i = 1 n a i \sum_{i=1}^{n}a_i i=1nai。除以 n n n的运算可在后续programmable bootstrapping中进行——如在密集层或卷积层中,除以相同量的权重。因此,对全局平均池化层同态评估时,仅需要做密文加法运算——是leveled operations。

5.2 具有PBS的层

具有PBS的层有:

  • 1)激活层:ReLU
  • 2)最大池化层

5.2.1 激活层:ReLU

激活层,用于向神经网络中注入非线性性。在学习中,激活层至关重要。激活层中可使用很多激活函数。最流行的激活函数为:

  • Rectified Linear Unit(ReLU)函数
    在这里插入图片描述

其它常用的激活函数有:

  • sigmoid函数
  • hyperbolic tangent函数

如第4章所属,对激活函数(即任意函数)的同态评估,可通过programmable bootstrapping(PBS)来实现,该函数的输出编码在test polynomials内。

5.2.2 最大池化层

最大池化层,从输入中提取固定大小的元素子集,并计算其中的最大值。

初步看,max函数是多变量的(其对输入有多个参数),如何对其同态评估是并不清晰的。
通过2个参数,max函数可表示为【单变量】ReLU函数:
max ⁡ ( x , y ) = y + R e L U ( x − y ) \max(x,y)=y+ReLU(x-y) max(x,y)=y+ReLU(xy)

因此,通过密文 E n c r y p t ( x ) , E n c r y p t ( y ) Encrypt(x),Encrypt(y) Encrypt(x),Encrypt(y),有 E n c r y p t ( max ⁡ ( x , y ) ) = E n c r y p t ( y ) + E n c r y p t ( R e L U ( z ) ) Encrypt(\max(x,y))=Encrypt(y)+Encrypt(ReLU(z)) Encrypt(max(x,y))=Encrypt(y)+Encrypt(ReLU(z)),其中 E n c r y p t ( z ) = E n c r y p t ( x ) − E n c r y p t ( y ) Encrypt(z)=Encrypt(x)-Encrypt(y) Encrypt(z)=Encrypt(x)Encrypt(y)。这需要一组密文加减法,以及对ReLU函数的同态评估,对应的开销为one PBS。

为对具有更多参数的最大池化层进行评估,基本的关系为:

  • max ⁡ ( x , ⋯ , x k − 1 , x k ) = max ⁡ ( y k , x k ) \max(x_,\cdots,x_{k-1},x_k)=\max(y_k,x_k) max(x,,xk1,xk)=max(yk,xk),其中:
    • y k = max ⁡ ( x , ⋯ , x k − 1 ) y_k=\max(x_,\cdots,x_{k-1}) yk=max(x,,xk1),以此类推。

k k k个元素 ( x 1 , ⋯ , x k ) (x_1,\cdots,x_k) (x1,,xk)的最大池化函数进行同态评估,需要 k − 1 k-1 k1个PBS。

6. 试验结果和benchmarks

本文进行了一系列试验以评估性能。基于MNIST数据集——其包含了手写数字的 28 × 28 28\times 28 28×28图片。为测试需要,设计了depth为20、50、100的神经网络,分别表示为 N N − 20 NN-20 NN20 N N − 50 NN-50 NN50 N N − 100 NN-100 NN100。这些网络均包含了具有激活函数的密集层和卷积层,且每个隐藏层至少拥有92个活跃神经元。

6.1 parameter sets参数集

目标安全级别为80位和128位。word-size为 Ω = 64 \Omega=64 Ω=64位。针对 G L W E ‾ \overline{GLWE} GLWE加密的 ( k , N , σ ) (k,N,\sigma) (k,N,σ)参数,以及, L W E ‾ \overline{LWE} LWE加密的 ( n , σ ) (n,\sigma) (n,σ)参数为:
在这里插入图片描述
不同的参数集Ⅰ、Ⅱ、Ⅲ,均至少满足所声称的安全级别,且均使用lwe-estimator验证。这些参数集可用于最大精度为8位到12位的同态推理网络。

6.2 性能分析

性能测试时,主要针对2类不同机器:

  • PC个人电脑: 2.6 GHz 6-Core Intel® Core™ i7处理器
  • AWS云服务器:3.00 GHz Intel® Xeon® Platinum 8275CL processor with 96 vCPUs

下图Table 2中:

  • run-time和accuracy是针对未加密推理的。
  • 其使用ONNX Runtime来衡量
    在这里插入图片描述

下图Table 3中:

  • run-time和accuracy是针对已加密数据推理的。
    在这里插入图片描述
    Table 3中结论,明确说明了参数选择的重要性,以及不同的取舍权衡。特别地,参数 N N N值越大,将增加accuracy,代价是更多的processing(即run-time)。

7. 结论

本文提出了一个使用全同态加密评估深度神经网络的通用框架。本文方法可有效地根据层数进行缩放,同时提供良好的精度结果。为此,采用了编码方法和可编程自举技术的通用组合。据已知信息,本文结果在深度神经网络的同态推理中创下了新纪录。

本文框架的实用性需要进一步的研究:

  • 首先,了解在本文框架中使用专用硬件的影响是很有意思的。作者认为,通过这种方式可将处理时长提升几个数量级。
  • 另一项有趣的工作是研究如何将本文技术扩展到神经网络的同态训练,或者更广泛地扩展到其他密集的机器学习任务。

FHE系列博客

  • 技术探秘:在RISC Zero中验证FHE——由隐藏到证明:FHE验证的ZK路径(1)
  • 基于[Discretized] Torus的全同态加密指引(1)
  • 基于[Discretized] Torus的全同态加密指引(2)
  • TFHE——基于[Discretized] Torus的全同态加密 代码解析
  • 技术探秘:在RISC Zero中验证FHE——RISC Zero应用的DevOps(2)
  • FHE简介
  • Zama TFHE-rs
  • Zama TFHE-rs白皮书(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/585979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐系统/电商中的 业务指标GMV

GMV(Gross Merchandise Volume)是指在一定时间内,一个电商平台上所有商品的总销售价值,通常以货币单位(例如美元、人民币等)表示。GMV是一个关键的电商业务指标,用于衡量平台的交易规模和业务增…

Linux:apache优化(5)—— 隐藏版本号

防盗链:就是防止别人盗取你们公司的图片、文件、视频 作用:防盗链就是防止别人盗用服务器中的图片、文件、视频等相关资源。运维人员可以通过apache提供rewrite模块进行优化。 配置项: RewriteEngine ON ##打开网页重写功能 RewriteCond …

修改源码,element的el-table合并,处理合并产生的hover样式问题

1、确认自己element-ui的版本号 2、此element-ui下的lib包是修改过hover样式的包,如何替换自己文件下的node_modules中的包 修改后将lib文件夹中文件替换你项目中/node_module/element-ui/Lib中的文件问题??如果替换开发环境中的node_module的包无法升级到测试环境,因为nod…

联合办公靠谱吗?

提起联合办公,许多人可能会想到喧嚣的开放式办公区、精巧的咖啡吧台以及随处可见的共享会议室。随着工作模式的更新迭代,联合办公无疑已经成为了现代办公室文化的热门趋势。但面对这种浪潮,不少人仍然保持着观望的态度,不免产生疑…

无表情包不MEME,PADD 最具潜力的BRC20 meme

BRC20 出圈,PADD 埋伏正当时 近期,市场向好,BRC20 在一定程度上推动了牛市的进程,基于BRC20的生态正在蓬勃发展,meme coin 已经成为生态中不可或缺的一部分! 投资 meme coin 要的是以小博大,sat…

0x45 点分治

0x45 点分治 到目前为止,我们用数据结构处理的大多是序列上的问题。这些问题的形式一般是给定序列中的两个位置 l l l和 r r r,在区间 [ l , r ] [l,r] [l,r]上执行查询或修改指令。如果给定一棵树,以及树上两个节点 x x x和 y y y&#xff…

jQuery日历签到插件下载

jQuery日历签到插件下载-遇见你与你分享

记一次JSF异步调用引起的接口可用率降低 | 京东云技术团队

前言 本文记录了由于JSF异步调用超时引起的接口可用率降低问题的排查过程,主要介绍了排查思路和JSF异步调用的流程,希望可以帮助大家了解JSF的异步调用原理以及提供一些问题排查思路。本文分析的JSF源码是基于JSF 1,7.5-HOTFIX-T6版本。 起因 问题背景…

【Java】SpringBoot快速整合WebSocket实现客户端服务端相互推送信息

目录 什么是webSocket? webSocket可以用来做什么? WebSocket操作类 一:测试客户端向服务端推送消息 1.启动SpringBoot项目 2.打开网站 3.进行测试消息推送 4.后端进行查看测试结果 二:测试服务端向客户端推送消息 1.接口代码 2.使…

04-获取认证的用户身份信息

存储用户信息的方式 获取用户信息的流程 用户提交账号和密码后,DaoAuthenticationProvider调用UserDetailsService接口实现类的loadUserByUsername()方法,该方法可以接收请求参数username的值,然后根据该值查询用户信息,最后将账号,密码,权限封装到UserDetails对象中并返回给…

HW01—SY系列单点测厚仪 应用于轧钢橡胶、金属、塑料…

关键字:单点测厚仪,HW01—SY测厚仪,常温测厚仪,热轧板测厚仪,非接触测厚仪,橡胶测厚仪,塑料板测厚仪,木板测厚仪, 产品简介: 该系列测厚仪整体采用C型架结构,C型架上安装上下两个对射的激光位移传感器,可测量一个点的厚度尺寸。C型…

杰发科技AC7840——EEPROM初探

0.序 7840和7801的模拟EEPROM使用不太一样 1.现象 按照官方Demo,在这样的配置下,我们看到存储是这样的(连续三个数字1 2 3)。 使用串口工具的多帧发送功能 看不出多少规律 修改代码后 发现如下规律: 前四个字节是…

信号与线性系统翻转课堂笔记16——离散LTI系统的各类响应

信号与线性系统翻转课堂笔记16——离散LTI系统的各类响应 The Flipped Classroom16 of Signals and Linear Systems 对应教材:《信号与线性系统分析(第五版)》高等教育出版社,吴大正著 一、要点 (1,重点…

Java连接Mysql报错:javax.net.ssl.SSLException: Received fatal alert: internal_error

大致报错日志如下: The last packet successfully received from the server was 11 milliseconds ago. The last packet sent successfully to the server was 10 milliseconds ago.at sun.reflect.GeneratedConstructorAccessor275.newInstance(Unknown Source)…

了解 NSA 关于管理 OSS 和 SBOM 的最新指南

开源软件很容易受到恶意行为者的攻击,但软件材料清单可以帮助减轻威胁。美国国家安全局的指导为管理生态系统奠定了坚实的基础。 软件供应链安全仍然是网络安全和软件行业的一个关键话题,并且有充分的理由,从针对大型软件供应商的持续攻击到…

2023年年终总结 —— 致满载荣誉或满脸惆怅的你

开篇请允许我引用歌曲《西楼儿女》的一句歌词: 陌生的朋友你请听我讲,许多年前我也曾有梦想,想过满载荣誉回到家乡,这肆意的风压弯了海棠。 2023年即将过去,不管你这一年经历了多少,或是职场的得心应手、情…

GBASE南大通用-小内存单机安装GBase 8c分布式数据库实践

* 这种小内存部署方式仅用于分布式数据库个人学习使用,不建议用于其他用途。 随着数据高并发复杂场景业务需求不断增多,信息数据呈现出爆炸式增长、多源多维、数据类型繁复等特征。在这一趋势下,目前分布式数据库因其架构的天然优势&#xf…

Creo各版本安装指南

下载链接 https://pan.baidu.com/s/1VyP0_185mJeBiorlpUJqrQ?pwd0531 1.鼠标右击【Creo10.0(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到 Creo10.0(64bit)】。 ​2.打开解压后的文件夹,鼠标右击【Crack】选择【解压到…

Winform RDLC报表(数据库连接、报表函数使用、动态表头)

文章目录 NuGet安装库数据库连接报表设计报表引用添加报表 数据集设计方法一手动添加方法二——连接数据库添加 关联报表与数据集表格数据与数据集数据设计表格格式、字体设计报表数据字段绑定 Winform 使用报表控件数据库填充数据集从数据库获取与数据源相同字段的数据 动态表…

数据库一般会采取什么样的优化方法?

数据库一般会采取什么样的优化方法? 1、选取适合的字段属性 为了获取更好的性能,可以将表中的字段宽度设得尽可能小。 尽量把字段设置成not null 执行查询的时候,数据库不用去比较null值。 对某些省份或者性别字段,将他们定义为e…