首先需要知道,同态加密是在多项式上进行的,基于RLEW的整体流程如下:

 将单个数编码到一个N阶(N项)多项式中,多项式系数的利用率极低。而在神经网络中,我们需要计算的东西往往是一个很大的矩阵/tensor,并非不是单个数。所以需要打包编码技术(packing)将很多数同时编码到同一个多项式中,来提高多项式系数的利用率。
将一个数组编码进多项式,可以分为两种形式:

 系数编码可以参考Cheetah的做法,Cheetah自定义了一套编码规则,使多项式相乘后的结果多项式中的一些系数正好是需要的卷积结果。
 这里主要讨论点值编码,也就是SIMD编码。SIMD编码被广泛用在全同态方案中,包括CKKS、BFV、BGV等。
SIMD指的是把一系列数通过中国剩余定理(CRT)打包(pack)到同一个多项式中,使一次多项式乘法计算可以完成多次明文乘法。计算必须是在素数域 Z p \mathbb Z_p Zp上。
 
     
      
       
        
        
          x 
         
        
          n 
         
        
       
         + 
        
       
         1 
        
       
      
        x^n+1 
       
      
    xn+1可以表示为 
     
      
       
       
         n 
        
       
      
        n 
       
      
    n个多项式的积:
  
      
       
        
         
         
           x 
          
         
           n 
          
         
        
          + 
         
        
          1 
         
        
          = 
         
        
          ( 
         
        
          x 
         
        
          + 
         
         
         
           a 
          
         
           1 
          
         
        
          ) 
         
        
          ( 
         
        
          x 
         
        
          + 
         
         
         
           a 
          
         
           2 
          
         
        
          ) 
         
        
          ⋯ 
         
        
          ( 
         
        
          x 
         
        
          + 
         
         
         
           a 
          
         
           n 
          
         
        
          ) 
         
         
         
         
         
           m 
          
         
           o 
          
         
           d 
          
           
        
          p 
         
        
       
         x^n+1 = (x+a_1)(x+a_2)\cdots (x+a_n) \mod p 
        
       
     xn+1=(x+a1)(x+a2)⋯(x+an)modp
例子:设 
     
      
       
       
         p 
        
       
         = 
        
       
         17 
        
       
      
        p=17 
       
      
    p=17,多项式阶数 
     
      
       
       
         N 
        
       
         = 
        
       
         2 
        
       
      
        N=2 
       
      
    N=2,于是
  
      
       
        
         
         
           x 
          
         
           2 
          
         
        
          + 
         
        
          1 
         
        
          = 
         
         
         
           x 
          
         
           2 
          
         
        
          − 
         
        
          17 
         
        
          x 
         
        
          + 
         
        
          52 
         
         
         
         
         
           m 
          
         
           o 
          
         
           d 
          
           
        
          17 
         
        
          = 
         
        
          ( 
         
        
          x 
         
        
          − 
         
        
          4 
         
        
          ) 
         
        
          ( 
         
        
          x 
         
        
          − 
         
        
          13 
         
        
          ) 
         
         
         
         
         
           m 
          
         
           o 
          
         
           d 
          
           
        
          17 
         
        
       
         x^2+1 = x^2-17x+52 \mod 17 = (x-4)(x-13) \mod 17 
        
       
     x2+1=x2−17x+52mod17=(x−4)(x−13)mod17
 
     
      
       
       
         f 
        
       
         ( 
        
       
         x 
        
       
         ) 
        
        
        
        
        
          m 
         
        
          o 
         
        
          d 
         
          
       
         ( 
        
        
        
          x 
         
        
          n 
         
        
       
         + 
        
       
         1 
        
       
         ) 
        
       
      
        f(x)\mod (x^n+1) 
       
      
    f(x)mod(xn+1)可以表示为 
     
      
       
       
         n 
        
       
      
        n 
       
      
    n个整数:
  
      
       
        
         
         
           x 
          
         
           i 
          
         
        
          = 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
         
         
         
         
           m 
          
         
           o 
          
         
           d 
          
           
        
          ( 
         
        
          x 
         
        
          + 
         
         
         
           a 
          
         
           i 
          
         
        
          ) 
         
        
       
         x_i = f(x)\mod (x+a_i) 
        
       
     xi=f(x)mod(x+ai)
 即 
     
      
       
       
         f 
        
       
         ( 
        
       
         x 
        
       
         ) 
        
        
        
        
        
          m 
         
        
          o 
         
        
          d 
         
          
       
         ( 
        
        
        
          x 
         
        
          n 
         
        
       
         + 
        
       
         1 
        
       
         ) 
        
       
      
        f(x)\mod (x^n+1) 
       
      
    f(x)mod(xn+1)打包了 
     
      
       
        
        
          a 
         
        
          i 
         
        
       
      
        a_i 
       
      
    ai
例子: x m o d ( x 2 + 1 ) x \mod (x^2+1) xmod(x2+1)可以表示为 x m o d ( x − 4 ) , x m o d ( x − 13 ) x \mod (x-4), x \mod (x-13) xmod(x−4),xmod(x−13),也就是 x m o d ( x 2 + 1 ) x \mod (x^2+1) xmod(x2+1)打包了4和13。
给定 
     
      
       
       
         n 
        
       
      
        n 
       
      
    n个整数,可以通过CRT找到对应 
     
      
       
       
         f 
        
       
         ( 
        
       
         x 
        
       
         ) 
        
       
      
        f(x) 
       
      
    f(x)来编码这些整数。
 例子: 
     
      
       
       
         2 
        
       
         x 
        
       
         − 
        
       
         7 
        
       
      
        2x-7 
       
      
    2x−7打包了1和2,因为 
     
      
       
       
         2 
        
       
         x 
        
       
         − 
        
       
         7 
        
        
        
        
        
          m 
         
        
          o 
         
        
          d 
         
          
       
         ( 
        
       
         x 
        
       
         − 
        
       
         4 
        
       
         ) 
        
       
         = 
        
       
         1 
        
       
         , 
        
       
         2 
        
       
         x 
        
       
         − 
        
       
         7 
        
        
        
        
        
          m 
         
        
          o 
         
        
          d 
         
          
       
         ( 
        
       
         x 
        
       
         − 
        
       
         13 
        
       
         ) 
        
       
         = 
        
       
         2 
        
       
      
        2x-7 \mod (x-4)=1, 2x-7 \mod (x-13)=2 
       
      
    2x−7mod(x−4)=1,2x−7mod(x−13)=2
打包在模 p p p上具有同态性:
- 加法: 
      
       
        
        
          x 
         
        
          + 
         
        
          ( 
         
        
          2 
         
        
          x 
         
        
          − 
         
        
          7 
         
        
          ) 
         
        
       
         x+(2x-7) 
        
       
     x+(2x−7)打包了5和15 
  - 3 x − 7 m o d ( x − 4 ) = 5 , 3 x − 7 m o d ( x − 13 ) = 15 3x-7 \mod (x-4)=5, 3x-7 \mod (x-13)=15 3x−7mod(x−4)=5,3x−7mod(x−13)=15
 
- 乘法: 
      
       
        
        
          x 
         
        
          ⋅ 
         
        
          ( 
         
        
          2 
         
        
          x 
         
        
          − 
         
        
          7 
         
        
          ) 
         
        
       
         x\cdot(2x-7) 
        
       
     x⋅(2x−7)打包了4和9 
  - 2 x 2 − 7 x m o d ( x 2 + 1 ) = − 7 x − 2 2x^2-7x \mod (x^2+1) = -7x - 2 2x2−7xmod(x2+1)=−7x−2
- − 7 x − 2 m o d ( x − 4 ) = 4 , − 7 x − 2 m o d ( x − 13 ) = 9 -7x - 2 \mod (x-4) = 4, -7x - 2 \mod (x-13) = 9 −7x−2mod(x−4)=4,−7x−2mod(x−13)=9
 















![[论文阅读笔记32] Object-Centric Multiple Object Tracking (ICCV2023)](https://img-blog.csdnimg.cn/direct/e45906a3acc34a5e9398ebc675fbd75e.png)

![[图解]SysML和EA建模住宅安全系统-02-现有运营领域-块定义图](https://img-blog.csdnimg.cn/direct/890939b37b0745368c02ec1148f84193.png)

