CKKS 同态模约简:切比雪夫插值

参考文献:

  1. [书籍] Trefethen L N. Approximation Theory and Approximation Practice, Extended Edition[M]. Society for Industrial and Applied Mathematics, 2019.
  2. [PS73] Paterson M S, Stockmeyer L J. On the number of nonscalar multiplications necessary to evaluate polynomials[J]. SIAM Journal on Computing, 1973, 2(1): 60-66.
  3. [CHKKS18] Cheon J H, Han K, Kim A, et al. Bootstrapping for approximate homomorphic encryption[C]//Advances in Cryptology–EUROCRYPT 2018: 37th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Tel Aviv, Israel, April 29-May 3, 2018 Proceedings, Part I 37. Springer International Publishing, 2018: 360-384.
  4. [CCS19] Chen H, Chillotti I, Song Y. Improved bootstrapping for approximate homomorphic encryption[C]//Annual International Conference on the Theory and Applications of Cryptographic Techniques. Cham: Springer International Publishing, 2019: 34-54.
  5. [HK20] Han K, Ki D. Better bootstrapping for approximate homomorphic encryption[C]//Cryptographers’ Track at the RSA Conference. Cham: Springer International Publishing, 2020: 364-390.
  6. 从拉格朗日插值谈到牛顿均差插值、切比雪夫插值
  7. 龙格现象 (Runge Phenomenon)
  8. Chebyshev Interpolation (maa.org)
  9. 切比雪夫多项式、节点与插值 (gitee.io)

Interpolations

插值任务:

  • 已知函数 f : D → R f:D \to R f:DR 的若干相异数据点 ( x i , y i ) , i = 0 , 1 , 2 , ⋯   , n (x_i,y_i),i=0,1,2,\cdots,n (xi,yi),i=0,1,2,,n,共有 n + 1 n+1 n+1 个点

  • 计算某个 n n n 次多项式 P ( x ) ∈ F [ x ] P(x) \in \mathbb F[x] P(x)F[x],使得误差 R n ( x ) = f ( x ) − P ( x ) R_n(x)=f(x)-P(x) Rn(x)=f(x)P(x) 尽可能的小

我们定义多项式 w k ( x ) w_{k}(x) wk(x)
w 0 = 1 ,    w k ( x ) = ∏ i = 0 k − 1 ( x − x j ) , k = 1 , 2 , ⋯   , n + 1 w_0=1,\,\, w_{k}(x)=\prod_{i=0}^{k-1}(x-x_j), k=1,2,\cdots,n+1 w0=1,wk(x)=i=0k1(xxj),k=1,2,,n+1
插值多项式的次数不是越高越好,会出现 “龙格现象”:插值区间边缘的误差极大。

在这里插入图片描述

Lagrange

基函数:
B i ( x ) = ∏ j ≠ i ( x − x j ) ⋅ ( x i − x j ) − 1 ,    ∀ i = 0 , 1 , ⋯   , n B_i(x) = \prod_{j \neq i} (x-x_j)\cdot(x_i-x_j)^{-1},\,\, \forall i=0,1,\cdots,n Bi(x)=j=i(xxj)(xixj)1,i=0,1,,n
插值结果:
P n ( x ) = ∑ i = 0 n y i ⋅ B i ( x ) P_n(x) = \sum_{i=0}^n y_i \cdot B_i(x) Pn(x)=i=0nyiBi(x)
易知 f ( x i ) = P n ( x i ) , ∀ x i f(x_i)=P_n(x_i), \forall x_i f(xi)=Pn(xi),xi,它恰好穿过了 n + 1 n+1 n+1 个数据点。

插值余项:
R n ( x ) = f ( x ) − P n ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! ⋅ w n + 1 ( x ) , ∃ ξ ∈ D R_n(x) = f(x)-P_n(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!}\cdot w_{n+1}(x),\exist \xi \in D Rn(x)=f(x)Pn(x)=(n+1)!f(n+1)(ξ)wn+1(x),ξD
缺点:每当数据点增减,基函数 B i ( x ) B_i(x) Bi(x) 都会变化,因此 P ( x ) P(x) P(x) 需要完全重新计算;容易出现龙格现象。

Newton

差商(均差)多项式
f [ x i ] = y i f [ x i , x j ] = ( f [ x i ] − f [ x j ] ) ⋅ ( x i − x j ) − 1 f [ x i , x j , x k ] = ( f [ x i , x j ] − f [ x j , x k ] ) ⋅ ( x i − x k ) − 1 ⋯ f [ x i , x j , ⋯   , x p , x q ] = ( f [ x i , x j , ⋯   , x p ] − f [ x i , ⋯   , x p , x q ] ) ⋅ ( x 0 − x q ) − 1 \begin{aligned} f[x_i] &= y_i\\ f[x_i,x_j] &= (f[x_i]-f[x_j]) \cdot (x_i-x_j)^{-1}\\ f[x_i,x_j,x_k] &= (f[x_i,x_j] - f[x_j,x_k]) \cdot (x_i-x_k)^{-1}\\ &\cdots\\ f[x_i,x_j,\cdots,x_p,x_q] &= (f[x_i,x_j,\cdots,x_p] - f[x_i,\cdots,x_p,x_q]) \cdot (x_0-x_q)^{-1} \end{aligned} f[xi]f[xi,xj]f[xi,xj,xk]f[xi,xj,,xp,xq]=yi=(f[xi]f[xj])(xixj)1=(f[xi,xj]f[xj,xk])(xixk)1=(f[xi,xj,,xp]f[xi,,xp,xq])(x0xq)1
基函数:
B i ( x ) = w i ( x ) ,    ∀ i = 0 , 1 , ⋯   , n B_i(x) = w_i(x),\,\, \forall i=0,1,\cdots,n Bi(x)=wi(x),i=0,1,,n
插值结果:
P n ( x ) = ∑ i = 0 n f [ x 0 , ⋯   , x i ] ⋅ B i ( x ) P_n(x) = \sum_{i=0}^{n} f[x_0,\cdots,x_i] \cdot B_i(x) Pn(x)=i=0nf[x0,,xi]Bi(x)
易知 f ( x i ) = P n ( x i ) , ∀ x i f(x_i)=P_n(x_i), \forall x_i f(xi)=Pn(xi),xi,它恰好穿过了 n + 1 n+1 n+1 个数据点。

插值余项:
R n ( x ) = f [ x 0 , ⋯   , x n ] ⋅ w n + 1 ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! ⋅ w n + 1 ( x ) , ∃ ξ ∈ D R_n(x) = f[x_0,\cdots,x_n] \cdot w_{n+1}(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!}\cdot w_{n+1}(x),\exist \xi \in D Rn(x)=f[x0,,xn]wn+1(x)=(n+1)!f(n+1)(ξ)wn+1(x),ξD
优点:增删数据点的时候,系数(均差)不需要全部重新计算

缺点:依旧容易出现龙格现象

Chebyshev

请读者注意,此部分内容来自多个网页信源,并且它们给出的公式并不统一(看晕了,迷惑)。此部分的某些公式可能是错误的。

局限在区间 [ − 1 , 1 ] [-1,1] [1,1] 上(区间总是可以缩放的),切比雪夫多项式:
T 0 ( x ) = 1 T 1 ( x ) = x T 2 ( X ) = 2 x 2 − 1 ⋯ T n ( x ) = 2 x ⋅ g n ( x ) − g n − 1 ( x ) \begin{aligned} T_0(x) &= 1\\ T_1(x) &= x\\ T_2(X) &= 2x^2-1\\ &\cdots\\ T_{n}(x) &= 2x\cdot g_n(x) - g_{n-1}(x) \end{aligned} T0(x)T1(x)T2(X)Tn(x)=1=x=2x21=2xgn(x)gn1(x)
可以证明, T n ( x ) T_n(x) Tn(x) 满足:

  • 存在 n n n 个单根(称为 Chebyshev roots), x k = cos ⁡ ( 2 k − 1 2 n π ) , k = 1 , 2 , ⋯   , n x_k=\cos(\frac{2k-1}{2n}\pi), k=1,2,\cdots,n xk=cos(2n2k1π),k=1,2,,n
  • 存在 n + 1 n+1 n+1 个极值点(称为 Chebyshev points), x k = cos ⁡ ( k n π ) , k = 0 , 1 , ⋯   , n x_k=\cos(\frac{k}{n}\pi), k=0,1,\cdots,n xk=cos(nkπ),k=0,1,,n,满足 T n ( x k ) = ( − 1 ) k T_n(x_k)=(-1)^k Tn(xk)=(1)k

另外它们是正交的,可以作为基函数,
∫ − 1 1 T i ( x ) T j ( x ) d x 1 − x 2 = { 0 , i ≠ j π , i = j = 0 π 2 , i = j > 0 \int_{-1}^{1} T_i(x)T_j(x)\frac{\mathrm dx}{\sqrt{1-x^2}} = \left\{\begin{aligned} 0,&& i \neq j\\ \pi,&& i=j=0\\ \frac{\pi}{2}, && i=j>0 \end{aligned}\right. 11Ti(x)Tj(x)1x2 dx= 0,π,2π,i=ji=j=0i=j>0
区间 [ − 1 , 1 ] [-1,1] [1,1] 上的 Lipschitz continuous 函数 f f f(满足 ∣ f ( x ) − f ( y ) ∣ ≤ κ ⋅ ∣ x − y ∣ , ∀ x , y ∈ [ − 1 , 1 ] |f(x)-f(y)| \le \kappa \cdot|x-y|,\forall x,y \in [-1,1] f(x)f(y)κxy,x,y[1,1]),总是存在唯一的的多项式 P n ( x ) , deg ⁡ P n ≤ n P_n(x), \deg P_n\le n Pn(x),degPnn(称为 Chebyshev Interpolant),对于 Chebyshev points { x j } \{x_j\} { xj} 总满足 P n ( x j ) = f ( x j ) P_n(x_j)=f(x_j) Pn(xj)=f(xj)

  1. 可以先通过 Chebyshev points 选点 x j ∈ [ − 1 , 1 ] x_j \in [-1,1] xj[1,1],求出 y j = f ( x j ) y_j=f(x_j) yj=f(xj) 之后,使用 Lagrange/Newton 插值
  2. 对于一般的区间 D D D,缩放到 [ − 1 , 1 ] [-1,1] [1,1] 上选点 x j x_j xj,然后回到 x j ′ ∈ D x_j' \in D xjD 上,计算 y j = f ( x j ′ ) y_j=f(x_j') yj=f(xj) 并插值

一般来说,等距点的插值性质很差,但是 Chebyshev points(视为单位圆上等距的单位根)的插值效果相当好,每个点到其他所有点的平均距离都接近 1 / 2 1/2 1/2,这些点使得余项 R n ( x ) R_n(x) Rn(x) 最小化。切比雪夫插值可以抑制龙格现象。

插值结果 P n ( x ) P_n(x) Pn(x) 可以写成以 T i ( x ) T_i(x) Ti(x) 为基函数的形式:
P n ( x ) = ∑ i = 0 n c i ⋅ T i ( x ) P_n(x) = \sum_{i=0}^{n} c_i \cdot T_i(x) Pn(x)=i=0nciTi(x)
问题是,先计算 Lagrange/Newton 插值,然后再把系数转换为上述的系数,应该会有很大的数值误差。怎么直接计算这些 c i c_i ci 系数呢?

切比雪夫级数(Chebyshev series):任意的区间 [ − 1 , 1 ] [-1,1] [1,1] 上的 Lipschitz continuous 函数 f f f,总可以唯一地表示为如下形式
f ( x ) = ∑ i = 0 ∞ a i ⋅ T i ( x ) f(x) = \sum_{i=0}^{\infty} a_i \cdot T_i(x) f(x)=i=0aiTi(x)
这个级数绝对收敛、一致收敛(absolutely and uniformly convergent),其中的系数计算公式为:
a 0 = 1 π ∫ − 1 1 f ( x ) 1 − x 2 d x a i = 2 π ∫ − 1 1 f ( x ) T i ( x ) 1 − x 2 d x , ∀ i = 1 , ⋯   , n \begin{aligned} a_0 &= \frac{1}{\pi} \int_{-1}^{1} \frac{f(x)}{\sqrt{1-x^2}} \mathrm{d} x\\ a_i &= \frac{2}{\pi} \int_{-1}^{1} \frac{f(x)T_i(x)}{\sqrt{1-x^2}} \mathrm{d} x, \forall i = 1,\cdots,n \end{aligned} a0ai=π1111x2 f(x)dx=π2111x2 f(x)Ti(x)dx,i=1,,n
上述级数的截断/投影(truncation or projection),
f n ( x ) = ∑ i = 0 n a i ⋅ T i ( x ) f_n(x) = \sum_{i=0}^{n} a_i \cdot T_i(x) fn(x)=i=0naiTi(x)
插值多项式 P n ( x ) P_n(x) Pn(x) 是级数投影 f n ( x ) f_n(x) fn(x) 的良好近似,并且 P n ( x ) P_n(x) Pn(x) 不需要计算积分,实现简单。它们的系数关系是:
c 0 = a 0 + a 2 n + a 4 n + ⋯ c n = a n + a 3 n + a 5 n + ⋯ c k = a k + ( a 2 n + k + a 4 n + k + ⋯   ) + ( a 2 n − k + a 4 n − k + ⋯   ) , ∀ 1 ≤ k ≤ n − 1 \begin{aligned} c_0 &= a_0+a_{2n}+a_{4n}+\cdots\\ c_n &= a_n+a_{3n}+a_{5n}+\cdots\\ c_k &= a_k+(a_{2n+k}+a_{4n+k}+\cdots)+(a_{2n-k}+a_{4n-k}+\cdots),\forall 1\le k\le n-1 \end{aligned} c0cnck=a0+a2n+a4n+=an+a3n+a5n+=ak+(a2n+k+a4n+k+)+(a2nk+a4nk+),∀1kn1
因此切比雪夫插值 P n ( x ) P_n(x) Pn(x) 的系数,可以视为切比雪夫级数 f f f 的系数重新分配。两种近似方法 P n ( x ) P_n(x) Pn(x) f n ( x ) f_n(x) fn(x),二者的精度差距一般在因子 2 2 2 以内。

对于离散情况,关于 Chebyshev points 也存在正交性:
∑ k = 0 n T i ( x k ) T j ( x k ) = { 0 , i ≠ j n + 1 , i = j = 0 n + 1 2 , 0 < i = j \sum_{k=0}^{n} T_i(x_k)T_j(x_k) = \left\{\begin{aligned} 0,&& i \neq j\\ n+1,&& i=j=0\\ \frac{n+1}{2}, && 0<i=j \end{aligned}\right. k=0nTi(xk)Tj(xk)= 0,n+1,2n+1,i=ji=j=00<i=j
根据上述的正交性,我们采样 Chebyshev points 数据点 ( x k , y k = f ( x k ) ) (x_k,y_k=f(x_k)) (xk,yk=f(xk)),计算系数:
c 0 = 1 n + 1 ∑ k = 0 n y k c i = 2 n + 1 ∑ k = 0 n y k T i ( x k ) , ∀ i = 1 , ⋯   , n \begin{aligned} c_0 &= \frac{1}{n+1} \sum_{k=0}^{n} y_k\\ c_i &= \frac{2}{n+1} \sum_{k=0}^{n} y_k T_i(x_k), \forall i = 1,\cdots,n \end{aligned} c0ci=n+11k=0nyk=n+12k=0nykTi(xk),i=1,,n
从而直接得到 P n ( x ) P_n(x) Pn(x) 在基函数 T i ( x ) T_i(x) Ti(x) 下的表示。

CHKKS18

[CHKKS18] 使用 sin 近似 mod q,定义:
S ( t ) : = q 2 π sin ⁡ ( 2 π q t ) S(t) := \frac{q}{2\pi}\sin\left(\frac{2\pi}{q}t\right) S(t):=2πqsin(q2πt)
对于 CKKS 解密函数 [ b − ⟨ a , s ⟩ ] q = m + e [b-\langle a,s\rangle]_q=m+e [ba,s]q=m+e,因为消息规模远小于密文模数 m ≪ q m \ll q mq,因此这里的 mod 运算可以用 sin 较好地近似。其中的 b − ⟨ a , s ⟩ = m + e + q I ∈ Z b-\langle a,s\rangle=m+e+qI \in \mathbb Z ba,s=m+e+qIZ 是范围有界的整数。

在这里插入图片描述

给定 t = q I + m t=qI+m t=qI+m,并且满足 ∣ I ∣ < K |I| < K I<K m ≪ q m \ll q mq,那么 [ t ] q ≈ S ( t ) [t]_q \approx S(t) [t]qS(t)

然后使用 exp 计算 sin,定义:
E ( t ) : = q 2 π exp ⁡ ( 2 π i q t ) E(t) := \frac{q}{2\pi}\exp\left(\frac{2\pi i}{q}t\right) E(t):=2πqexp(q2πit)
易知 S ( t ) = E ( t ) − E ( − t ) 2 S(t)=\frac{E(t)-E(-t)}{2} S(t)=2E(t)E(t)

最后使用 Talor 近似 exp
P ( x ) : = ∑ k = 0 n ( i x ) k k ! P(x) := \sum_{k=0}^{n} \frac{(ix)^k}{k!} P(x):=k=0nk!(ix)k
它的误差为 ∣ exp ⁡ ( i x ) − P ( x ) ∣ ≤ ∣ x ∣ n + 1 ( n + 1 ) ! |\exp(ix) - P(x)| \le \frac{|x|^{n+1}}{(n+1)!} exp(ix)P(x)(n+1)!xn+1,其中 x = 2 π t / q x=2\pi t/q x=2πt/q,因此如果比率 [ t ] q / q [t]_q/q [t]q/q 越小,那么只需要更低的多项式次数 n n n,就可以使近似误差足够低。

[HK20] 中说 [CHKKS18] 为了高效计算(我没找到),将 Taylor 近似多项式仅定义在接近原点的较小 domain 上(从而度数较低),然后计算 t ′ = t / 2 p , p ∈ Z + t'=t/2^p, p\in \mathbb Z^+ t=t/2p,pZ+ 使得它足够接近原点,最后使用二倍角公式根据 S ( t ′ ) S(t') S(t) 计算出 S ( t = 2 p ⋅ t ′ ) S(t=2^p \cdot t') S(t=2pt)

CCS19

我们可以发现,Taylor 多项式的系数是超指数级下降的,因此对于较大的度数,不得不使用极高精度的浮点数,否则将会导致较高的数值误差(注意区分:近似误差、数值误差)

[CCS19] 转而使用切比雪夫插值,形如
P n ( x ) = ∑ k = 0 n c k T k ( x ) P_n(x) = \sum_{k=0}^{n} c_k T_k(x) Pn(x)=k=0nckTk(x)
对于 [ − 1 , 1 ] [-1,1] [1,1] 上 Lipschitz continuous 函数 f f f存在唯一 P n ( x ) P_n(x) Pn(x) 满足 P n ( x j ) = f ( x j ) P_n(x_j)=f(x_j) Pn(xj)=f(xj),其中 x j = cos ⁡ ( j π / n ) , 0 ≤ j ≤ n x_j=\cos(j\pi/n),0\le j\le n xj=cos(/n),0jn

假设 P n ∗ ( x ) P_n^*(x) Pn(x) 是最小化最大(minimax)多项式,它最小化了 ∥ f − P n ∗ ∥ ∞ \|f-P_n^*\|_\infty fPn 范数。可以证明 P n ( x ) P_n(x) Pn(x) 仅仅是对数损失
∥ f − P n ∥ ∞ ≤ ( 2 π log ⁡ n + 2 ) ⋅ ∥ f − P n ∗ ∥ ∞ \|f-P_n\|_\infty \le \left( \frac{2}{\pi}\log n + 2 \right) \cdot\|f-P_n^*\|_\infty fPn(π2logn+2)fPn
为了近似 S ( t ) : = q 2 π sin ⁡ ( 2 π q t ) S(t) := \frac{q}{2\pi}\sin\left(\frac{2\pi}{q}t\right) S(t):=2πqsin(q2πt),其中 t ∈ [ − K q , K q ] t \in [-Kq,Kq] t[Kq,Kq],将它缩放到区间 [ − 1 , 1 ] [-1,1] [1,1] 上,
g ( x ) : = 1 2 π sin ⁡ ( 2 π K x ) ,    x ∈ [ − 1 , 1 ] g(x) := \frac{1}{2\pi}\sin(2\pi Kx),\,\, x \in [-1,1] g(x):=2π1sin(2πKx),x[1,1]
然后使用切比雪夫插值,得到 g ( x ) g(x) g(x) 对应的多项式 P n ( x ) = ∑ k = 0 n c k T k ( x ) P_n(x) = \sum_{k=0}^{n} c_k T_k(x) Pn(x)=k=0nckTk(x)

对比 Taylor 近似,Chebyshev 近似的多项式度数要小得多,因此数值误差更小。为了计算 P n ( x ) P_n(x) Pn(x),可以先将系数 c k c_k ck 转化为 Power Basis { x k } \{x^k\} { xk} 下的系数 c k ′ c_k' ck,然后使用 [PS73] 的单变元多项式求值算法。然而,这个转换矩阵是病态的(ill-conditioned),导致较大的数值误差。如果利用 T k ( x ) T_k(x) Tk(x) 的迭代关系,对它们依次求值,最终使用 c k c_k ck 组合求值结果,那么计算复杂度是 O ( n ) O(n) O(n) 次非标量乘法,尤其是同态运算下(非标量乘法的开销很大)这是不可接受的。

在这里插入图片描述

[CCS19] 修改了 [PS73] 的算法,将其中 Power Basis 替换为 Chebyshev Basis,并设计了直接在 Chebyshev Basis 下执行的长除法。整体流程完全就是 PS 原始算法,只是其中的具体运算从基 { x k } \{x^k\} { xk} 替换到基 { T k ( x } \{T_k(x\} { Tk(x},复杂度为 2 n + O ( log ⁡ n ) \sqrt{2n}+O(\log n) 2n +O(logn) 次非标量乘法。

HK20

[HK20] 观察到仅当 m : = [ t ] q ≪ q m:=[t]_q \ll q m:=[t]qq 时,才有 [ t ] q ≈ E ( t ) [t]_q \approx E(t) [t]qE(t),因此只需使用 p ( t ) p(t) p(t) 拟合 E ( t ) E(t) E(t)部分 domain 即可。而在 [CHKKS18] 和 [CCS19] 中使用的都是全域 [ − 1 , 1 ] [-1,1] [1,1] 上的拟合,导致多项式次数较高。

通过缩放平移,将 sin ⁡ ( 2 π q t ) \sin(\frac{2\pi}{q}t) sin(q2πt) 变换为 cos ⁡ ( 2 π t ) \cos(2\pi t) cos(2πt),输入的区间是:
t ∈ ⋃ i = − k + 1 K − 1 I i ,    I i : = [ i − 1 4 − ϵ ,   i − 1 4 + ϵ ] t \in \bigcup_{i=-k+1}^{K-1} I_i,\,\, I_i:=[i-\frac{1}{4}-\epsilon,\, i-\frac{1}{4}+\epsilon] ti=k+1K1Ii,Ii:=[i41ϵ,i41+ϵ]
其中的 ϵ \epsilon ϵ [ t ] q / q [t]_q/q [t]q/q 的上界(足够小,使得 S ( t ) S(t) S(t) 足够近似 [ t ] q [t]_q [t]q

对于区间 [ a , b ] [a,b] [a,b],采取 Chebyshev method 选取如下的插值点(是 Chebyshev root 而非 Chebyshev point),
t j = b + a 2 + b − a 2 cos ⁡ ( 2 j − 1 2 n + 2 π ) ,    1 ≤ j ≤ n + 1 t_j = \frac{b+a}{2} + \frac{b-a}{2} \cos\left( \frac{2j-1}{2n+2}\pi \right),\,\, 1 \le j \le n+1 tj=2b+a+2bacos(2n+22j1π),1jn+1
注意到 cos ⁡ ( 2 π t ) \cos(2\pi t) cos(2πt) 的区间是间断的,[HK20] 对于各个小区间 I i I_i Ii 分别采样 d i d_i di 个插值点(而非 [ − K , K ] [-K,K] [K,K] 的全域),
{ t i j ∈ I i : − K < i < K , 1 ≤ j ≤ d i } \{t_{ij} \in I_i: -K<i<K,1\le j \le d_i\} { tijIi:K<i<K,1jdi}
使用它们插值出的 P n ( t ) , n = ∑ i d i − 1 P_n(t), n=\sum_i d_i-1 Pn(t),n=idi1 的余项规模为
∥ cos ⁡ ( 2 π t ) − P n ( t ) ∥ ≤ ( 2 π ) n + 1 ( n + 1 ) ! ⋅ max ⁡ { M − K + 1 , ⋯   , M K − 1 } \|\cos(2\pi t) - P_n(t)\| \le \frac{(2\pi)^{n+1}}{(n+1)!} \cdot \max\{M_{-K+1},\cdots,M_{K-1}\} cos(2πt)Pn(t)(n+1)!(2π)n+1max{ MK+1,,MK1}
其中 M i = max ⁡ t ∈ I i ∥ w ( t ) ∥ M_i=\max_{t \in I_i}\|w(t)\| Mi=maxtIiw(t) w ( t ) = ∏ i , j ( t − t i j ) w(t)=\prod_{i,j} (t-t_{ij}) w(t)=i,j(ttij)

为了确定合适的 d i d_i di,[HK20] 初始设置 d i = 1 d_i=1 di=1,然后迭代计算 M i M_i Mi,然后找出值 M i M_i Mi 最大的那个区间 I i ∗ I_{i^*} Ii,设置 d i ∗ = d i ∗ + 1 d_{i^*}=d_{i^*}+1 di=di+1 重新在 I i ∗ I_{i^*} Ii 中采样。迭代此过程,直到余项的规模小于预设的误差上界,得到采样策略 { d i } \{d_i\} { di},最终插值出 P n ( t ) P_n(t) Pn(t)

因为插值点集中在各个 I i I_i Ii 里,所以近似误差降低的很快,所需的多项式度数比 [CCS19] 的切比雪夫插值更低。

在这里插入图片描述

为了同态计算 P n ( t ) P_n(t) Pn(t),如果表示为 Power Basis P n ( t ) = ∑ i p i t i P_n(t) = \sum_i p_i t^i Pn(t)=ipiti,由于某些极小的系数 p i p_i pi 是不稳定的数值,导致数值误差很大,并且如何用 CKKS 加密它们也是个问题。[HK20] 也采用了 Chebyshev Basis P n ( t ) = ∑ i c i T i ( t ) P_n(t) = \sum_i c_i T_i(t) Pn(t)=iciTi(t),区间扩张到 t ∈ [ − K , K ] t\in [-K,K] t[K,K],定义基函数 { T ~ i ( t ) : = T i ( t / K ) } \{\tilde T_i(t):=T_i(t/K)\} { T~i(t):=Ti(t/K)}由于 ∣ T ~ i ( t ) ∣ ≤ 1 , ∀ ∣ t ∣ < K |\tilde T_i(t)| \le 1,\forall |t|<K T~i(t)1,∀∣t<K 的范数很小,从而 P n ( t ) = ∑ i c i ⋅ T ~ i ( t ) P_n(t)=\sum_i c_i \cdot \tilde T_i(t) Pn(t)=iciT~i(t) 对于系数 c i c_i ci 的误差不敏感,甚至对于极小的 c i c_i ci 可以简单忽略。

[HK20] 也没有采用 [PS73] 求值算法,而是使用 BSGS 来求值,

在这里插入图片描述

BSGS 算法的复杂度为 2 2 n + 1 / 2 ⋅ log ⁡ n + O ( 1 ) 2\sqrt{2n}+1/2 \cdot \log n+O(1) 22n +1/2logn+O(1) 次非标量乘法,而 [CCS19] 使用的 PS 算法变体的复杂度为 2 n + log ⁡ n + O ( 1 ) \sqrt{2n}+\log n+O(1) 2n +logn+O(1) 次非标量乘法。虽然渐进复杂度 PS 算法更好,但是因为使用的插值多项式度数较小,导致 log ⁡ n \log n logn 项的占比较高,实际中反而不如 BSGS 快。

此外,[HK20] 还结合了 [CHKKS18] 的二倍角技术,将 t t t 缩放为 t ′ = t / 2 r t'=t/2^r t=t/2r,然后在区间 I i ′ = I i / 2 r I_i'=I_i/2^r Ii=Ii/2r 上近似 cos ⁡ ( 2 π t ′ ) \cos(2\pi t') cos(2πt)。最终,将近似多项式的度数从 [CCS19] 的 119 119 119,降低到了仅为 30 30 30,自举速度大幅提高。

猜你喜欢

转载自blog.csdn.net/weixin_44885334/article/details/134927109