CN114168991A - 对加密数据进行处理的方法、电路及相关产品 - Google Patents

对加密数据进行处理的方法、电路及相关产品 Download PDF

Info

Publication number
CN114168991A
CN114168991A CN202210126281.XA CN202210126281A CN114168991A CN 114168991 A CN114168991 A CN 114168991A CN 202210126281 A CN202210126281 A CN 202210126281A CN 114168991 A CN114168991 A CN 114168991A
Authority
CN
China
Prior art keywords
vector
convolution
accumulation
group
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210126281.XA
Other languages
English (en)
Other versions
CN114168991B (zh
Inventor
刘从新
何兰青
赵昕
和超
张大磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Airdoc Technology Co Ltd
Original Assignee
Beijing Airdoc Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Airdoc Technology Co Ltd filed Critical Beijing Airdoc Technology Co Ltd
Priority to CN202210126281.XA priority Critical patent/CN114168991B/zh
Publication of CN114168991A publication Critical patent/CN114168991A/zh
Application granted granted Critical
Publication of CN114168991B publication Critical patent/CN114168991B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioethics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本申请公开了一种对加密数据进行处理的方法、数据处理电路及相关产品。该方法包括:接收经同态加密的密文数据;以及对密文数据执行卷积运算处理,以得到经同态加密的结果数据。卷积运算处理包括:对密文数据和卷积核执行多个独立的单一卷积运算,其中每个单一卷积运算使用对应单个输入通道的单个卷积核对密文数据中对应的单个输入通道的输入特征图执行卷积运算,获得多个单一卷积运算结果;以及将多个单一卷积运算结果按照所述卷积运算的运算规则进行处理,以获得卷积运算的结果数据。本申请的方案提供了适应同态加密的通用的神经网络卷积加速方案,其可利用同态加密的运算特性,提高机器的处理效率,并能方便扩展至各种卷积变体的运算。

Description

对加密数据进行处理的方法、电路及相关产品
技术领域
本申请一般地涉及数据处理领域。更具体地,本申请涉及对加密数据进行处理的方法、加密数据处理电路、计算装置和计算机可读存储介质。
背景技术
近年来,以机器学习和深度学习为基础的人工智能(Artificial Intelligence,以下简称AI)技术发展迅速,在电子商务、金融、医疗、教育等各个领域的AI应用也大量涌现和普及。由于对算力的高要求,AI应用大多都以公有云或私有云的方式部署在云端。这意味着,用户需要将数据传送到云端服务器,由后者完成AI模型推理,再将结果返回给用户。用户的数据经常包含用户自己的敏感且隐私的信息,特别是财务、医疗健康等数据。虽然可通过常用的数据加密算法避免数据被外部入侵者窃取,但是,将用户数据交给云端的服务器去执行算法计算,也存在信任问题和隐私泄露的风险。因此,如何让数据拥有者(DataOwner)在不泄露隐私的前提下,将数据交给算法拥有者(Algorithm Owner)完成计算,非常关键。
已知存在两种技术手段:
1)安全多方安全计算(Secure multi-party Computation, 以下简称SMPC);和
2)同态加密(Homomorphic Encryption,以下简称HE)。
SMPC需要客户端参与到计算中,对客户端的算力要求较高,普及性受限。而同态加密作为一种非对称加密,客户端将加密后的数据交给算法拥有者在服务端计算,计算结果仍以加密的方式返回客户端,只有客户端才能解密可见。这种方式让同态加密具有广泛的应用价值。
由于同态加密对数据编码、加密方式和同态计算都有独特的要求,将通常的AI算法直接转换到同态加密下执行,往往计算速度很慢,计算开销极大。特别是计算机视觉中常用的卷积神经网络(CNN),卷积计算非常密集,占据绝大的计算开销。
因此亟需一种适应同态加密的加密数据处理方案,尤其是同态加密下的卷积加速方案,从而提高处理效率。
发明内容
为了至少部分地解决背景技术中提到的一个或多个技术问题,本申请的方案提供了一种对加密数据进行处理的方法、数据处理电路、计算装置和计算机可读存储介质。
在第一方面中,本申请公开一种对加密数据进行处理的方法,其特征在于,包括:接收经同态加密的密文数据;以及对所述密文数据执行卷积运算处理,以得到经同态加密的结果数据;其中,所述卷积运算处理包括:对所述密文数据和卷积核执行多个独立的单一卷积运算,其中每个所述单一卷积运算使用对应单个输入通道的单个卷积核对所述密文数据中对应的单个输入通道的输入特征图执行卷积运算,获得多个单一卷积运算结果;以及将所述多个单一卷积运算结果按照所述卷积运算的运算规则进行处理,以获得所述卷积运算的结果数据。
在一些实施例中,执行所述单一卷积运算包括:根据卷积运算参数,将输出特征图的输出点划分为若干组,每组内各个输出点所需的输入特征图的卷积计算窗口相互不重叠;为每组输出点生成对应的组权重向量GW;针对每一组,执行按向量化表示的输入特征图与组权重向量GW的对位乘累加运算,得到组累加向量;以及将各组的组累加向量相加,得到所述单一卷积运算的单一卷积运算结果。
在一些实施例中,将输出特征图的输出点划分为若干组包括:根据卷积核的尺寸kx、ky和卷积步长sx、sy,将所述输出特征图的各输出点划分为(kx-sx+1)×(ky-sy+1)个组,每组内各点的行间隔为(kx-sx+1)×sx,每组内各点的列间隔为(ky-sy+1)×sy。
在一些实施例中,为每组输出点生成对应的组权重向量GW包括:根据每组输出点在输出特征图上的对应位置,生成计算各输出点所需的卷积计算窗口内各输入点对应的卷积权重,以构成所述组权重向量GW,所述组权重向量的尺寸与所述按向量化表示的输入特征图的尺寸相同。
在一些实施例中,还包括为每组输出点生成对应的掩码向量GM,并且其中针对每一组执行按向量化表示的输入特征图与组权重向量GW的对位乘累加运算得到组累加向量包括:对按向量化表示的输入特征图与组权重向量GW执行对位乘运算,得到中间向量R0;对中间向量R0进行若干次旋转和相加,得到初始累加向量;以及对所述初始累加向量与所述掩码向量GM执行对位乘运算,得到所述组累加向量。
在一些实施例中,为每组输出点生成对应的掩码向量GM包括:确定每组输出点中各输出点的卷积计算窗口中的累加基点,其中所述累加基点为所述卷积计算窗口中的中心点、角点、或任一点;以及将各卷积计算窗口中的累加基点赋值为1,将其他位置赋值为0,以构造所述掩码向量GM,所述掩码向量GM的尺寸与所述按向量化表示的输入特征图的尺寸相同。
在一些实施例中,对中间向量R0进行若干次旋转和相加得到初始累加向量包括:以按向量化表示的输入特征图的主维度尺寸为旋转单位,根据所述累加基点的位置,将所述中间向量R0向左或向右共旋转ky-1次,每次旋转1个旋转单位,得到ky-1个第一旋转向量R1、…、Rky-1;将所述中间向量R0与所述ky-1个第一旋转向量R1、…、Rky-1执行向量加法运算,得到第一累加向量R’0;以1为旋转单位,根据所述累加基点的位置,将所述第一累加向量R’0向左或向右共旋转kx-1次,每次旋转1个旋转单位,得到kx-1个第二旋转向量R’1、…、R’kx-1;以及将所述第一累加向量R’0与所述kx-1个第二旋转向量R’1、…、R’kx-1执行向量加法运算,得到第二累加向量R”0,作为所述初始累加向量。
在一些实施例中,累加基点为所述卷积计算窗口中的中心点,其中:将所述中间向量R0向左或向右共旋转ky-1次包括将所述中间向量R0向左和向右分别旋转(ky-1)/2次;以及将所述第一累加向量R’0向左或向右共旋转kx-1次包括将所述第一累加向量R’0向左和向右分别旋转(kx-1)/2次。
在一些实施例中,采用多线程并行计算所述多个独立的单一卷积运算。
在一些实施例中,所述卷积运算的结果数据按照所述输入特征图的空间尺寸进行存储。
在一些实施例中,所述方法还包括:调整所述卷积运算的结果数据中各数据元素的索引,以适应下一级卷积运算处理。
在一些实施例中,所述方法还包括:在执行所述单一卷积运算之前,基于所述卷积运算处理的填补规则,对所述密文数据中各个输入通道的输入特征图进行0值填补;以及基于填补后的所述输入特征图执行所述单一卷积运算。
在第二方面中,本申请提供一种加密数据处理电路,包括控制电路、存储电路和运算电路,其特征在于:所述控制电路配置用于控制所述存储电路和所述运算电路对经同态加密的密文数据执行卷积运算处理,以得到经同态加密的结果数据;所述存储电路配置用于存储信息,所述信息至少包括处理前、处理期间和/或处理后的信息;以及所述运算电路配置用于在所述控制电路的控制下,对所述密文数据和卷积核执行多个独立的单一卷积运算,其中每个所述单一卷积运算使用对应单个输入通道的单个卷积核对所述密文数据中对应的单个输入通道的输入特征图执行卷积运算,获得多个单一卷积运算结果;以及将所述多个单一卷积运算结果按照所述卷积运算的运算规则进行处理,以获得所述卷积运算的结果数据。
在第三方面中,本申请提供一种计算装置,包括:处理器,其配置用于执行程序指令;以及存储器,其配置用于存储所述程序指令,当所述程序指令由所述处理器加载并执行时,使得所述处理器执行根据本申请第一方面任一实施例的对加密数据进行处理的方法。
在第四方面中,本申请提供一种计算机可读存储介质,其中存储有程序指令,当所述程序指令由处理器加载并执行时,使得所述处理器执行根据本申请第一方面任一实施例的对加密数据进行处理的方法。
通过如上所提供的加密数据处理方案,本申请实施例提供了一种适应同态加密的卷积加速方案,其可以支持将目前CNN模型直接转换到同态加密下计算。而且,通过将卷积运算拆分成多个独立的单一卷积运算,可以很容易利用多线程进一步加速处理。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出采用同态加密方案在客户端与服务端之间的示例性交互方式;
图2示出同态加密下的向量中多个数相加的示意性运算方式;
图3示出根据本披露实施例的对加密数据进行处理的方法的示例性流程图;
图4示出了示例性卷积运算原理示例;
图5示出了根据本申请实施例的同态加密下的单一卷积运算方案的示例性流程图;
图6a和图6b分别示出了根据本申请实施例的输出特征图的输出点分组示例;
图7示出了根据本申请实施例的为某一组输出点构建的组权重向量;
图8示出了图6a的示例中第0组的输入特征图与组权重向量GW对位乘的结果;
图9示出了根据本申请实施例的为某一组输出点构建的掩码向量;
图10示出了根据本申请实施例的对某一组的初始累加向量应用掩码向量后的组累加向量;
图11示出了本申请一个实施例的像素矩阵和卷积核示例;
图12示出了根据本申请实施例针对第0组的运算过程;
图13示出了卷积运算的结果数据中存在空行和空列的示例;
图14示出了根据本申请实施例的填补示例;以及
图15示例性示出了根据本申请实施例的加密数据处理电路的示例性功能框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如背景技术中所提到的,同态加密具有广泛的应用价值。通常DES(数据加密标准)等加密算法产生的密文,不能进行有意义的运算。在代数中,同态性指两个同类型的代数结构(如群、环)保持结构不变的映射。同态加密保证了对密文进行的代数运算(通常是加法和乘法)结果保持不变。以Encrypt代表加密函数,Decrypt代表解密函数,同态性保证如下等价性:
Decrypt(Encrypt(a) + Encrypt(b)) = a + b
Decrypt(Encrypt(a) * Encrypt(b)) = a * b
机器学习和深度学习的算法基本都由加法和乘法构成,个别的非线性激活函数也可通过多项式近似来实现。所以,从原理上,同态加密对这些算法都适用。
同态加密最初提出时,支持的运算类型和乘法深度上均有限制。2009年Gentry提出了基于Bootstrapping的完全同态加密方案,让同态加密迈向实用性。
同态加密也是一种非对称加密,各方共享公钥来加密数据,但只有私钥的拥有者才能解密。在应用中,由数据拥有者生成公私秘钥对,将公钥和加密后的数据交由算法拥有者执行计算。
图1示出了采用同态加密方案在客户端与服务端之间的示例性交互方式。
如图所示,客户端110,也即数据拥有者,可以在步骤111处,生成公私钥对。例如通过预定算法Keygen,生成公私钥对(pk,sk)。然后,在步骤112处,客户端将其隐私数据x进行编码,得到明文数据xp,其中xp=Encode(x)。继而在步骤113处,客户端用公钥pk对明文数据xp进行加密,从而得到密文数据xc,其例如可以表示为xc=Encrypt(xp)。接着,在步骤114处,客户端110将公钥pk和密文数据xc发送到服务端120,也即算法拥有者,以对密文数据进行处理。
服务端120接收到公钥和密文数据之后,在步骤121处,执行算法f,返回加密的计算结果rc,其例如可以表示为rc=Eval(pk,xc,f)。假设算法f为卷积运算,则服务端可以对自身的权重数据进行编码后,再与接收到的密文数据执行卷积运算。
客户端110接收到服务端120返回的加密计算结果rc后,在步骤115处,使用私钥对计算结果进行解密,得到明文结果rp,其例如可以表示为rp=Decrypt(rc)。最后,在步骤116处,对明文结果rp进行解码,得到期望的计算结果r,其例如可以表示为r=Decode(rp)。
从上述交互过程可以看出,同态加密方案需要一组完备的操作,这些操作涉及:编码/解码、加密/解密、明文加法和乘法、密文加法和乘法、以及旋转和位移等。
目前主流的方案有BGV/BFV和CKKS,其中CKKS可通过近似数字(ApproximateNumber)来实现实数/复数的计算。
这两个方案都支持将一个向量嵌入(或称同态映射)到多项式环,当对多项式执行运算(加/乘)时,等同于对向量的每个元素进行操作。这被称为SIMD(Single InstructionMultiple Data,单指令多数据)的并行化。由于卷积计算中像素矩阵的数据维度大,所以采用SIMD更为有效。
因此,在本申请实施例的各种运算中,是基于将像素矩阵(或特征图)按向量化表示到多项式环中,但无需限定同态加密的方案及编码的算法。为了方便起见,不失一般性地,本申请后续描述以CKKS方案为例。
同态加密操作在一个代数环,其可以表示为:
Figure 731246DEST_PATH_IMAGE001
这里
Figure 758239DEST_PATH_IMAGE002
为第M个分圆多项式,其多项式次数为
Figure 54091DEST_PATH_IMAGE003
Figure 415802DEST_PATH_IMAGE004
为欧拉totient函数,表示比M小且与M互质的正整数个数。可被编码的数字个数被称为槽数(NSlots)。在CKKS方案中,N/2个实数组成的向量可被编码进此多项式环,然后采用SIMD方式并行计算。
在CNN中,卷积层和全连接层的计算,都涉及将向量中多个数相加在一起。由于同态加密是以向量为计算单位,因此在向量相加中涉及旋转和相加。
图2示出了同态加密下的向量中多个数相加的示意性运算方式。
如图所示,需要将向量R0(201)中的三个元素x1、x2和x3相加。为了实现求和,需将向量R0多次旋转,让求和的数处于同一位置,才可相加。具体地,可以将向量R0向左旋转1格得到向量R1(202),以及将向量R1继续向左旋转1格(也即向量R0向左旋转2格)得到向量R2(203),由此将x1、x2和x3都对齐到同一位置。继而,可以对向量R0、R1和R2执行向量加法运算,得到向量R’0(204),其中包含了三个元素x1、x2和x3相加后的元素。
可选地,还可以根据算法设计需要,将向量R’0乘以掩码向量(205),将其它位置的值清零,只保留求和后的元素,得到最终向量R”0(206)。
从上述运算过程可知,由于神经网络模型的参数(例如,权重)或掩码向量在服务端都是已知的,只需编码即可,所以CNN的计算主要涉及明文乘、明文加以及旋转。明文加的计算时间可忽略,而旋转的耗时时间比明文乘至少多几十倍。表1示出了在两个主流同态加密库HELib和SEAL的测试结果,在此测试中,同态加密的参数包括:多项式次数N=16384,NSlots=8192。
表1
HElib SEAL
明文乘(毫秒) 3 1
旋转(毫秒) 69 100
耗时比 23x 100x
(注:测试机器CPU型号为Intel(R) Xeon(R) Gold 6252 CPU @ 2.10GHz)
从表1中可以看出,旋转的耗时明显高于明文乘的时间。如果有n个数相加,则需至少旋转
Figure 438991DEST_PATH_IMAGE005
次,所以必须对此做特别优化,才能减少耗时。
由于同态加密对数据编码、加密方式和同态计算都有独特的要求,将通常的AI算法直接转换到同态加密下执行,往往计算速度很慢,计算开销极大。特别是计算机视觉中常用的卷积神经网络(CNN),卷积计算非常密集,占据绝大的计算开销。因此寻找适应同态加密的卷积加速方案非常有价值。
目前已知的同态加密的CNN方案都处于初步研究,缺乏实用性和普遍性。具体地,有些方法采用Im2Col,在客户端对像素矩阵进行特殊转换,这样服务端在做同态卷积时,就会更直接有效。但这样导致的问题是,卷积输出的特征图结构不标准,后续级联的卷积需针对这个结构再设计。因此难以扩展到复杂的多层神经网络。另一方面,这些方案多以Cifar数据集做实验,输入尺寸较小(32x32像素),难以扩展到真实世界的视觉认知问题。此外,这些方案也不支持卷积运算中常见的填补(padding)操作。最后,在这些方案中,在卷积中涉及点乘的加总计算时,使用了同态加密中
Figure 835337DEST_PATH_IMAGE006
(H和W为图像的高和宽)次旋转来完成,计算时间很大。
有鉴于此,本申请提出一种全新、高效和极具普遍性的卷积运算方案,可以方便地将目前CNN模型直接转换到同态加密下计算。而且,此方案很容易利用多线程进一步加速。更进一步地,此方案极大地减少了运算中所需的旋转次数,大大降低了旋转耗时,从而提升整体计算效率。
图3示出了根据本披露实施例的对加密数据进行处理的方法的示例性流程图。可以理解,此方法在服务端实施,也即在算法拥有者一侧执行。
如图所示,在步骤310中,接收经同态加密的密文数据。根据所应用的场景,密文数据可以是客户端需要保密的各种信息,例如医疗图像数据。同态加密的方法例如可以采取前文提到的BFV/BGV或CKKS加密方案,本申请实施例在此方面没有限制。
接着,在步骤320中,对密文数据执行卷积运算处理,以得到经同态加密的结果数据。为了在同态加密状态下对密文数据执行运算,需要对卷积运算的运算方式进行调整和优化。
CNN中的卷积层通过对图像或前层卷积产生的特征图(也称为输入特征图、像素矩阵)应用卷积核(也称为过滤器、权重等)做卷积处理,从而进行特征提取。卷积层内部可以包含多个卷积核,组成卷积核的每个元素对应一个权重系数。
图4示出了示例性卷积运算原理示例。
图中示例性示出了输入数据X,其可以表示成多个输入特征图410,输入特征图的高为
Figure 52823DEST_PATH_IMAGE007
,宽为
Figure 901830DEST_PATH_IMAGE008
,输入通道数为
Figure 479442DEST_PATH_IMAGE009
。图中还示例性示出了多个卷积核K,其可以表示为多组小图像420,组数对应于输出通道数
Figure 248071DEST_PATH_IMAGE010
。每组小图像中,卷积核的高为ky,宽为kx,输入通道数为
Figure 823409DEST_PATH_IMAGE009
。输入数据X与卷积核K的卷积结果得到输出数据Y,其同样可以表示为多个输出特征图430,输出特征图的高为
Figure 425292DEST_PATH_IMAGE011
,宽为
Figure 557327DEST_PATH_IMAGE012
,输出通道数为
Figure 662686DEST_PATH_IMAGE010
卷积核在工作时,会按照一定的步长(sx,sy分别为宽度和高度方向上的步长)扫过输入特征图,在卷积计算窗口内对输入特征图做矩阵元素乘法求和。在本申请实施例中,每个卷积输出点具有对应的卷积计算窗口,卷积计算窗口的形状等于卷积核的形状。每个卷积输出点的值对应于其卷积计算窗口内的输入特征图与权重的对位乘(也称为“按位乘”)累加结果。
在同态加密下的卷积运算中,以向量为计算单位,因此上面的输入特征图需要进行向量化表示。可以将每个通道的像素矩阵,按照其主维度展开成一维数组。这里的“主维度”是指矩阵以行主序或列主序之一的存储格式存储于存储电路时的行宽或列宽。例如,当矩阵逐行地存储于存储电路时,则该矩阵是行主序的,并且其主维度尺寸即为该矩阵的行宽(即列元素的个数)。类似地,当矩阵逐列地存储于存储电路时,则该矩阵是列主序的,并且其主维度尺寸即为该矩阵的列宽(即行元素的个数)。不失一般性,将每个通道的像素矩阵按照行为主展开成一维数据,则得到
Figure 674505DEST_PATH_IMAGE009
个一维数组或向量:
Figure 498104DEST_PATH_IMAGE013
因此,在本申请一些实施例中,可以将同态加密下的卷积运算拆分为多个单一卷积运算,每个单一卷积运算针对一个向量。
具体地,假设卷积核K大小为kx×ky, 卷积核数量为
Figure 932365DEST_PATH_IMAGE010
,卷积运算的步长为sx×sy,并且对于输出通道为c',输入通道为c,卷积核在第i行第j列的权重为
Figure 361073DEST_PATH_IMAGE014
,则卷积运算的输出特征图Y可以表示为:
Figure 340530DEST_PATH_IMAGE015
上式中SConv表示单一卷积运算,其将单一卷积核对单一输入通道进行计算。
这样,对于完整的卷积运算,共需进行
Figure 402158DEST_PATH_IMAGE010
×
Figure 328526DEST_PATH_IMAGE009
次单一卷积运算(
Figure 408477DEST_PATH_IMAGE010
组,每组
Figure 27677DEST_PATH_IMAGE009
次)。
具体地,回到图3,如图所示,步骤320中的卷积运算处理包括子步骤321,对密文数据和卷积核执行多个独立的单一卷积运算,其中每个单一卷积运算使用对应单个输入通道的单个卷积核对密文数据中对应的单个输入通道的输入特征图执行卷积运算,获得多个单一卷积运算结果;以及子步骤322,将多个单一卷积运算结果按照卷积运算的运算规则进行处理,例如按其对应的输出通道合并,以作为卷积运算的结果数据。
通过将卷积运算拆分成多个独立的单一卷积运算,可以支持采用多线程并行计算来进一步加速。
图5示出了根据本申请实施例的同态加密下的单一卷积运算方案的示例性流程图。为了简单起见,在此单一卷积运算方案中,所有矩阵(包括像素矩阵、权重矩阵等)都按行为主展开成向量。
如图所示,首先,在步骤510中,根据卷积运算参数,将输出特征图的输出点划分为若干组,每组内各个输出点所需的输入特征图的卷积计算窗口相互不重叠。
考虑到同态加密的运算特点,为了充分利用同态加密多项式的表示空间,应尽可能让多个卷积核同时计算。因此,在本申请实施例中,对输出特征图的输出点进行分组划分,同一组内的输出点可以同时进行计算。为了让同一组内的输出点同时进行计算,需要使同组内各点的卷积计算窗口相互不重叠。
在一些实现中,可以根据卷积核的尺寸kx、ky和卷积步长sx、sy,将输出特征图的各输出点划分为(kx-sx+1)×(ky-sy+1)个组,每组内各点的行间隔为(kx-sx+1)×sx,每组内各点的列间隔为(ky-sy+1)×sy。
可以理解,任一维度上,如果sx≥kx或sy≥ky,则输出特征图上该维度上的输出点的卷积计算窗口完全不会重叠,分一组即可。
图6a和图6b分别示出了根据本申请实施例的输出特征图的输出点分组示例。
在图6a的示例中,假设输入特征图的空间大小为10×10,卷积核尺寸kx=ky=3,卷积步长sx=sy=1,则其输出特征图的大小为8×8。为了直观起见,图中仍以矩阵形式示出各个元素,但是可以理解,这些矩阵在运算时都展开成向量。图中黑框区域为输出特征图,数字编号为分组号。
如图6a所示,8×8大小的输出特征图分为9组,行列间隔均为3。以第0组为例,图中用虚线框分别示出了其中左上角的三个输出点各自的卷积计算窗口,这些窗口互不重叠,也即计算这些输出点所需的输入数据不会重叠。因此,可以使用多个卷积核同时对输入特征图进行运算,而不会产生干扰。
在图6b的示例中,假设输入特征图的空间大小为10×10,卷积核尺寸kx=ky=3,卷积步长sx=sy=2,则其输出特征图的大小为4×4。同样地,黑框区域为输出特征图,数字编号为分组号。在此示例中,4×4大小的输出特征图分为4组,行列间隔均为4。同样地,同一组内各输出点的卷积计算窗口互不重叠,也即计算这些输出点所需的输入数据不会重叠。
分组划分好之后,继续图5,在步骤520中,可以为每组输出点生成对应的组权重向量GW。
如前面所提到的,同一组内的各输出点需要同时计算,在各卷积计算窗口的输入数据相互不重叠的情况下,需要为各卷积计算窗口生成对应的卷积权重。
具体地,可以根据每组输出点在输出特征图上的对应位置,生成计算各输出点所需的卷积计算窗口内各输入点对应的卷积权重,以构成该组的组权重向量GW。组权重向量的尺寸与按向量化表示的输入特征图的尺寸相同。
图7示出了根据本申请实施例的为某一组输出点构建的组权重向量。在此实施例中,仍以图6a的示例为例,并为其中第0组输出点构建组权重向量。为了直观起见,用灰色方框标识出各个输出点的卷积计算窗口。可以看出,组权重向量的尺寸对应于输入特征图的尺寸,对应该组内输出点的卷积计算窗口的位置内赋予对应的卷积核权重,也即分配给该单一卷积运算的卷积核;其余位置则赋予0值。本领域技术人员根据本文的描述和示例,可以很容易构造出其他分组的组权重向量GW,此处不再一一赘述。
可选地或附加地,在一些实施例中,还可以为每组输出点生成对应的掩码向量GM,以供后续的累加步骤使用。掩码向量GM的设置与向量的旋转方向相关,将在描述向量旋转时进行阐述。
返回图5,在步骤530中,针对每一分组,执行按向量化表示的输入特征图与组权重向量GW的对位乘累加运算,得到组累加向量。
如前文所提到的,在同态加密下,将向量中多个数相加在一起时,需要进行向量旋转。因此,上述对位乘累加运算过程可以拆分为对位乘、旋转和累加等步骤。
具体地,步骤530可以包括子步骤531,首先对按向量化表示的输入特征图与组权重向量GW执行对位乘运算,得到中间向量R0。图8示出了图6a的示例中第0组的输入特征图与组权重向量GW对位乘的结果。
接着,在子步骤532中,对中间向量R0进行若干次旋转和相加,得到初始累加向量。此步骤的目的是通过旋转,将本组中每个输出点卷积计算窗口内的像素值与权重的乘积对齐在一个指定位置(或称累加基点),从而方便执行向量中多个元素的求和。累加基点可以有不同选取方式,例如可以选取卷积计算窗口中的中心点、角点、或任一点。取决于累加基点的不同位置,对中间向量的旋转方向和旋转幅度会有不同,将在随后描述。
最后,在子步骤533中,对初始累加向量与掩码向量GM执行对位乘运算,得到组累加向量。掩码向量GM的作用是保留输出点所在位置的值,而将其他位置的值清零。因此,掩码向量GM的设计与前一步骤的累加基点有关。
具体地,掩码向量GM可以按如下生成:将各卷积计算窗口中的累加基点赋值为1,将其他位置赋值为0,以构造掩码向量GM。掩码向量GM的尺寸与按向量化表示的输入特征图的尺寸相同。
图9示出了根据本申请实施例的为某一组输出点构建的掩码向量。在此实施例中,仍以图6a的示例为例,并为其中第0组输出点构建组权重向量。在此示例中,以卷积计算窗口的中心点为累加基点。为了直观起见,用灰色方框标识出各个输出点的卷积计算窗口。可以看出,在此示例中,掩码向量的尺寸对应于输入特征图的尺寸,对应该组内输出点的卷积计算窗口的中心点处赋值为1,其余位置赋值为0。本领域技术人员根据本文的描述和示例,可以很容易构造出其他分组的组掩码矩阵GM,此处不再一一赘述。
图10示出了根据本申请实施例的对某一组的初始累加向量应用掩码向量后的组累加向量。在此实施例中,对基于图8的中间向量的旋转和相加得到的初始累加向量应用图9所示的掩码矩阵,从而得到图10的组累加向量。可以看出,经过掩码矩阵,只保留了卷积计算窗口中心点处的累加结果,其余位置清零。
由此,针对每个分组执行上述运算过程,得到各组的组累加向量。
最后,返回图5,在步骤540中,将各组的组累加向量相加,得到单一卷积运算的单一卷积运算结果。可以理解,各组的累加基点在卷积计算窗口中的位置是一致的,例如都采用卷积计算窗口的中心点作为累加基点,因此各组的组累加向量直接相加,即可得到该单一卷积运算的单一卷积运算结果。
如前面所提到的,在执行图5的子步骤532时,根据累加基点的不同,对中间向量R0可以有不同的旋转相加方式。
在一些实施例中,可以将上述旋转相加分为两个阶段。
在第一阶段,以按向量化表示的输入特征图的主维度尺寸为旋转单位,根据累加基点的位置,将中间向量R0向左或向右共旋转ky-1次,每次旋转1个旋转单位,得到ky-1个第一旋转向量R1、…、Rky-1
不防假设输入特征图的主维度为宽,也即行主序,则主维度尺寸为一行数据的大小,也即
Figure 78066DEST_PATH_IMAGE008
。则第一阶段的旋转可以认为是每次旋转一行,从而以行为单位进行累加。更具体地,卷积计算窗口总共有ky行,假设累加基点位于第i行,则需要将中间向量R0向右旋转i次,每次
Figure 542546DEST_PATH_IMAGE008
格,从而能够将最上面一行对齐到累积基点所在的行;同时还需要将中间向量R0向左旋转ky-i-1次,每次
Figure 8162DEST_PATH_IMAGE008
格,从而能够将最下面一行对齐到累积基点所在的行。可以理解,当累积基点位于中心点时,i=(ky-1)/2,此时需要将中间向量R0向左和向右分别旋转(ky-1)/2次。
然后,将中间向量R0与这ky-1个第一旋转向量R1、…、Rky-1执行向量加法运算,得到第一累加向量R’0
在第二阶段,以1为旋转单位,根据累加基点的位置,将第一累加向量R’0向左或向右共旋转kx-1次,每次旋转1个旋转单位,得到kx-1个第二旋转向量R’1、…、R’kx-1
第二阶段的旋转可以认为是在第一阶段旋转累加的基础上,进一步将行内的元素进行累加,因此每次只需旋转1格,也即1个元素单位。更具体地,卷积计算窗口总共有kx列,假设累加基点位于第j列,则需要将第一累加向量R’0向右旋转j次,每次1格,从而能够将最左边一列对齐到累积基点所在的列;同时还需要将第一累加向量R’0向左旋转kx-j-1次,每次1格,从而能够将最右边一列对齐到累积基点所在的列。可以理解,当累积基点位于中心点时,j=(kx-1)/2,此时需要将第一累加向量R’0向左和向右分别旋转(kx-1)/2次。
然后,将第一累加向量R’0与这kx-1个第二旋转向量R’1、…、R’kx-1执行向量加法运算,得到第二累加向量R”0,也即该组的初始累加向量。
为了便于理解,下面以向量化的表示为例来图示前述运算过程。
图11示出了本申请一个实施例的像素矩阵和卷积核示例。在此示例中,输入特征图1101的大小为W=H=6,卷积核1102的大小为kx=ky=3,卷积步长sx=sy=1。为了简化,将行列的二维下标索引展开为单一下标,也即一维索引。根据卷积运算参数可知,输出特征图的大小为4×4,也需要划分为9组,行列间隔均为3。图中还示出了第0组的权重向量GW 1103和掩码向量GM 1104。
图12示出了根据本申请实施例针对第0组的运算过程。在此图示中,均以向量形式示出各个数据。输入像素按行为主展开的向量以及第0组的权重向量如图所示。二者执行对位乘,也即逐个元素相乘,得到中间向量R0。在此示例中,假设累加基点位于卷积计算窗口的中心点。
在第一阶段旋转中,以W=6(也即一行数据)为旋转单位,将中间向量R0向右和向左分别旋转1个旋转单位,也即旋转6格,分别得到第一旋转向量R1和R2
接着,将中间向量R0与第一旋转向量R1、R2对位相加,得到第一累加向量R’0
在第二阶段旋转中,以1为旋转单位,将第一累加向量R’0向右和向左分别旋转1个旋转单位,也即旋转1格,分别得到第二旋转向量R’1和R’2
接着,将第一累加向量R’0与第二旋转向量R’1、 R’2对位相加,得到第二累加向量R”,也即该组的初始累加向量。
接着,将第二累加向量R”与该组的掩码向量GM进行对位相乘,得到最终结果,也即第0组的输出点。
从上面的描述可知,假设kx=ky=3,sx=sy=1,则每组的计算只需花费2次明文乘法(权重乘、掩码乘),4次旋转和4次加法。加法的计算量可以忽略。旋转的次数大大降低,由此可以极大减少计算量。而且,旋转次数与输入像素空间尺寸无关。图像尺寸越大,优化效果越明显。通常情况下,kx=ky=k,采用本申请实施例的运算方案,只需要2×(k-1)次旋转即可对齐数据进行加和。
进一步可选地或附加地,在本申请实施例中,卷积运算的结果数据按照输入特征图的空间尺寸进行存储。例如,在前面结合图6a和图6b的示例描述输出点的分组时,将输入点按照输入特征图的空间尺寸绘出,代表按照输入特征图的空间尺寸进行存放。
在没有填补(padding)的卷积运算下,输出特征图的尺寸相比输入特征图会减少,因此将存在空行和空列。
图13示出了卷积运算的结果数据中存在空行和空列的示例。空行和空列的形成与运算过程中向量的旋转求和有关。图中示出了kx=ky=k为奇数的情况,如果kx=ky=k为偶数,则存在上下空行和左右空列,可为k/2和(k-2)/2。
当多个卷积层级联时,数据在这样的空间组织并不影响后续的计算。后续卷积层的单一卷积运算原理与前文描述相同,只需将各数据元素的下标索引做调整对齐即可。由此,本申请实施例的卷积运算方案可以很容易地扩展到复杂的多层神经网络中。
此外,如果卷积运算的步长s>1,则生成的输出特征图的矩阵将保持步长s,也即元素之间步长为s,步长间隔内的数据值为零,如前面参考图6b描述的输出点分布示例。后续层的计算也只需调整数据的下标索引即可。
另一方面,CNN中为保证网络架构的清晰、充分学习空间语义信息,卷积中会采用填补(padding),例如让输出的特征图尺寸与输入保持不变。这在深度学习框架tensorflow和pytroch中可以通过指定padding=same或主动指定行列的padding数来实现。Padding位置的像素值为0,而同态加密中向量的空缺位置的值也为零。
因此,在一些实施例中,当存在padding时,只需将输入的像素空间按padding数填充即可。也即,在执行单一卷积运算之前,基于卷积运算处理的填补规则,对密文数据中各个输入通道的输入特征图进行0值填补。之后,基于填补后的输入特征图来执行前述单一卷积运算。
图14示出了根据本申请实施例的填补示例。像素矩阵中,行或高的padding数记为pad_top和pad_bottom,列或宽的padding数记为pad_left和pad_right。图中示出了按行展开成一维数组的形式。填补后的新的像素空间高和宽分别为:(H+pad_top+pad_bottom)和(W+pad_left+pad_right)。然后基于新的像素空间采用前述单一卷积运算即可。
另外,CNN网络中后续卷积层的输出尺寸基本都逐渐递减,不会超过原始的输入图像尺寸。所以当原始输入像素矩阵增加了padding后,也会为后续卷积预留了padding空间。
综上,本文详细描述了本申请实施例的在同态加密下的卷积运算方案。在此方案中,通过将卷积运算拆分成多个独立的、针对向量的单一卷积运算,可以支持采用多线程并行计算来进一步加速。进一步地,针对每个单一卷积运算,通过对输出点进行分组划分,可以充分利用同态加密多项式的表示空间,尽可能让多个卷积核同时计算,从而进一步加速运算。更进一步地,通过将卷积计算窗口内的乘积数据分两阶段累加,可以减少累加过程中的旋转次数,大大减少计算时间。
而且,本申请实施例的方案可以支持有/无padding两种卷积运算。本申请实施例的方案还可以很容易扩展到各种卷积的变体。例如可分离卷积(separable convolution),或称按深度卷积(depthwise convolution)和按点卷积(pointwise convolution)的组合;膨胀卷积(dilated convolution),或称空洞卷积(atrous convolution);卷积核尺寸不规则的卷积,如1×7或7×1卷积,等等。
通常的卷积运算实际上包含两部分:对输入特征图做单一卷积,再将结果按输出通道线性组合起来。由于卷积运算的时间代价和空间代价都很昂贵,在CNN的近期发展中,经常将卷积运算的这两个部分解耦,定义为可分离卷积(Separable Convolution),也即按深度卷积(Depth wise convolution) 和按点卷积(Pointwise convolution)的组合。可分离卷积的参数量和计算复杂度都比通常的卷积大为减少,而特征学习的效果相当,故更为有效。具体地,
1)对于按深度卷积,设输入特征图中每个通道对应的卷积权重为
Figure 532684DEST_PATH_IMAGE016
, 先做单一卷积(例如使用前述单一卷积的优化算法),计算出中间特征图
Figure 100063DEST_PATH_IMAGE017
(仍然是
Figure 633813DEST_PATH_IMAGE009
个通道):
Figure 422777DEST_PATH_IMAGE018
2)接着对于按点卷积,设中间特征图
Figure 164206DEST_PATH_IMAGE017
到输出特征图
Figure 936990DEST_PATH_IMAGE019
的权重为
Figure 743272DEST_PATH_IMAGE020
, 按同态加密的明文乘(乘以常量
Figure 199792DEST_PATH_IMAGE020
)后再相加即可:
Figure 331696DEST_PATH_IMAGE021
由于2)按点卷积的计算量微乎其微,本申请所提供的单一卷积优化算法也可用于其中的1) 按深度卷积,从而大幅提高可分离卷积的运算速度。而且,依然可对多个通道进一步做并行加速。
此外,本申请实施例的方案与同态加密的具体实现无关,其可以支持任何支持将向量嵌入到多项式环的同态加密方案,例如已知的BFV/BGV和CKKS。
本申请实施例的上述方案可以借助于程序指令来实现。由此,本申请还提供了一种计算装置,包括处理器,其配置用于执行程序指令;以及存储器,其配置用于存储程序指令,当这些程序指令由上述处理器加载并执行时,使得处理器执行根据前文任一实施例所述的对加密数据进行处理的方法。
计算装置可以对应于具有各种处理功能的计算设备。例如,计算装置可以被实现为各种类型的设备,包括但不限于个人计算机(PC)、服务器设备、移动设备等。
处理器配置用于执行程序指令以控制计算装置的所有功能。例如,处理器通过执行计算装置上的存储器中存储的程序,来控制计算装置的所有功能。处理器可以由计算装置中提供的中央处理单元(CPU)、图形处理单元(GPU)、应用处理器(AP)、人工智能处理器芯片(IPU)、现场可编程门阵列(FPGA)等来实现。然而,本申请不限于此。
存储器用于存储计算装置中处理的各种数据。例如,存储器可以存储计算装置中的处理过的数据和待处理的数据。存储器可存储处理器已处理或要处理的数据。此外,存储器可以存储要由计算装置驱动的应用、驱动程序等程序指令。例如:存储器可以存储与将由处理器执行的对加密数据进行运算处理等有关的各种程序。存储器可以是DRAM,但是本披露不限于此。存储器可以包括易失性存储器或非易失性存储器中的至少一种。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、相变RAM(PRAM)、磁性RAM(MRAM)、电阻RAM(RRAM)、铁电RAM (FRAM)等。易失性存储器可以包括动态RAM(DRAM)、静态RAM(SRAM)、同步DRAM(SDRAM)、 PRAM、MRAM、RRAM、铁电RAM(FeRAM)等。在实施例中,存储器可以包括硬盘驱动器(HDD)、固态驱动器(SSD)、高密度闪存(CF)、安全数字(SD)卡、微安全数字(Micro-SD)卡、迷你安全数字(Mini-SD)卡、极限数字(xD)卡、高速缓存(caches)或记忆棒中的至少一项。
综上,本说明书实施方式提供的计算装置的存储器和处理器实现的具体功能,可以与本说明书中的前述实施方式相对照解释,并能够达到前述实施方式的技术效果,这里便不再赘述。
在本披露实施例中,还提供一种计算机可读存储介质,其中存储有程序指令,当该程序指令由处理器加载并执行时,使得处理器执行本申请实施例中描述的对加密数据进行处理的方法。
计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
本申请实施例的上述方案也可以使用硬件电路来实现。
图15示例性示出了根据本申请实施例的加密数据处理电路的示例性功能框图。如图所示,加密数据处理电路1500包括控制电路1510、存储电路1520和运算电路1530。
控制电路1510负责处理数据处理电路1500上的各种功能,包括但不限于控制、取指、译码、计算等。
在一些实施例中,控制电路1510可以配置用于控制存储电路1520和运算电路1530对经同态加密的密文数据执行卷积运算处理,以得到经同态加密的结果数据。
存储电路1520可以用于存储信息,这些信息至少包括处理前和/或处理后的信息,也可以包括处理期间需要缓存的中间信息,其例如可以是各种RAM或缓存。在一些实施例中,存储电路1520可以配置用于存储输入数据、卷积核、卷积运算结果和/或缓存中间结果。
运算电路1530可以配置用于根据相关指令执行各种运算操作。具体地,运算电路1530可以配置用于在控制电路1510的控制下,对密文数据和卷积核执行多个独立的单一卷积运算,其中每个单一卷积运算使用对应单个输入通道的单个卷积核对密文数据中对应的单个输入通道的输入特征图执行卷积运算,获得多个单一卷积运算结果;以及将多个单一卷积运算结果按照卷积运算的运算规则进行处理,例如对于常规卷积运算,按其对应的输出通道合并,又例如对于可分离卷积运算,将单一卷积运算结果按同态加密的明文乘(乘以常量
Figure 60618DEST_PATH_IMAGE020
)后再相加即可,从而获得卷积运算的结果数据。
在一些实施例中,运算电路1530可以包括一个主运算电路1531和多个从运算电路1532。在这种实施例下,多个从运算电路可以用于并行执行前述多个独立的单一卷积运算;而主运算电路则可以用于对该多个从运算电路返回的单一卷积运算结果进行诸如合并、明文乘加等后期处理,以得到卷积运算的结果数据。
主运算电路和从运算电路之间以及多个从运算电路之间可以通过各种连接相互通信。在不同的应用场景中,多个从运算电路之间的连接方式既可以是通过硬线布置的硬连接方式,也可以是根据例如微指令进行配置的逻辑连接方式,以形成多种从运算电路阵列的拓扑结构。本公开实施例在此方面没有限制。主运算电路和从运算电路可以相互配合,由此实现并行运算处理。
为了支持运算功能,主运算电路和从运算电路可以包括各种计算电路,例如可以包括向量运算单元及矩阵运算单元。向量运算单元用以执行向量运算,可支持向量乘、加、旋转、非线性变换等复杂运算;矩阵运算单元负责深度学习算法的核心计算,例如矩阵乘和卷积。
在一些实施例中,上述控制电路1510可以进一步用于:根据卷积运算参数,将输出特征图的输出点划分为若干组,每组内各个输出点所需的输入特征图的卷积计算窗口相互不重叠;以及为每组输出点生成对应的组权重向量GW。相应地,被调用的每个从运算电路1532可以进一步用于按如下执行所分配的单一卷积运算:针对每组输出点,执行按向量化表示的输入特征图与组权重向量GW的对位乘累加运算,得到组累加向量;以及将各组的组累加向量相加,得到单一卷积运算的单一卷积运算结果。
图15还示出了根据本披露实施例的从运算电路的内部结构示意图。如图所示,每个从运算电路1532可以包括第一向量乘电路1540、向量旋转和累加电路1541和第二向量乘电路1542。
第一向量乘电路1540用于对按向量化表示的输入特征图与组权重向量GW执行对位乘运算,得到中间向量R0。向量旋转和累加电路1541用于对中间向量R0进行若干次旋转和相加,得到初始累加向量。第二向量乘电路1542用于对初始累加向量与控制电路1510为每组输出点生成的掩码向量GM执行对位乘运算,得到组累加向量。
应当理解,虽然在此处使用了“第一向量乘电路”和“第二向量乘电路”来区分所执行的数据,但是根据实际硬件配置,二者可以是同一电路,也可以是不同电路。
进一步地,向量旋转和累加电路1541可以包括:
第一向量旋转电路1551,用于以按向量化表示的输入特征图的主维度尺寸为旋转单位,根据累加基点的位置,将中间向量R0向左或向右共旋转ky-1次,每次旋转1个旋转单位,得到ky-1个第一旋转向量R1、…、Rky-1
第一累加电路1552,用于将中间向量R0与该ky-1个第一旋转向量R1、…、Rky-1执行向量加法运算,得到第一累加向量R’0
第二向量旋转电路1553,用于以1为旋转单位,根据累加基点的位置,将第一累加向量R’0向左或向右共旋转kx-1次,每次旋转1个旋转单位,得到kx-1个第二旋转向量R’1、…、R’kx-1;以及
第二累加电路1554,用于将第一累加向量R’0与该kx-1个第二旋转向量R’1、…、R’kx-1执行向量加法运算,得到第二累加向量R”。
同样地,应当理解,虽然在此处使用了“第一向量旋转电路”和“第二向量旋转电路”以及“第一累加电路”和“第二累加电路”来区分所执行的数据,但是根据实际硬件配置,二者可以是同一电路,也可以是不同电路。
在一些实施例中,每个从运算电路1532可以包括多组上述电路,从而可以并行地为多个分组同时计算输出点,进一步加快运算速度。
应当理解,尽管上面结合图15描述了本申请实施例的加密数据处理电路,此加密数据处理电路从整体上也可以使用中央处理电路(CPU)、图像处理电路(GPU)、现场可编程门阵列(FPGA)、深度学习处理器等来实现,本申请在此方面没有限制。
本领域技术人员可以理解,前面结合附图描述的本申请实施例的同态加密下的数据卷积运算处理的描述可以同样应用于图15的加密数据处理电路,因此不再进行重复描述。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (26)

1.一种对加密数据进行处理的方法,其特征在于,包括:
接收经同态加密的密文数据;以及
对所述密文数据执行卷积运算处理,以得到经同态加密的结果数据;
其中,所述卷积运算处理包括:
对所述密文数据和卷积核执行多个独立的单一卷积运算,其中每个所述单一卷积运算使用对应单个输入通道的单个卷积核对所述密文数据中对应的单个输入通道的输入特征图执行卷积运算,获得多个单一卷积运算结果;以及
将所述多个单一卷积运算结果按照所述卷积运算的运算规则进行处理,以获得所述卷积运算的结果数据。
2.根据权利要求1所述的方法,其特征在于,执行所述单一卷积运算包括:
根据卷积运算参数,将输出特征图的输出点划分为若干组,每组内各个输出点所需的输入特征图的卷积计算窗口相互不重叠;
为每组输出点生成对应的组权重向量GW;
针对每一组,执行按向量化表示的输入特征图与组权重向量GW的对位乘累加运算,得到组累加向量;以及
将各组的组累加向量相加,得到所述单一卷积运算的单一卷积运算结果。
3.根据权利要求2所述的方法,其特征在于,所述将输出特征图的输出点划分为若干组包括:
根据卷积核的尺寸kx、ky和卷积步长sx、sy,将所述输出特征图的各输出点划分为(kx-sx+1)×(ky-sy+1)个组,每组内各点的行间隔为(kx-sx+1)×sx,每组内各点的列间隔为(ky-sy+1)×sy。
4.根据权利要求2所述的方法,其特征在于,所述为每组输出点生成对应的组权重向量GW包括:
根据每组输出点在输出特征图上的对应位置,生成计算各输出点所需的卷积计算窗口内各输入点对应的卷积权重,以构成所述组权重向量GW,所述组权重向量的尺寸与所述按向量化表示的输入特征图的尺寸相同。
5.根据权利要求2所述的方法,其特征在于,还包括为每组输出点生成对应的掩码向量GM,并且其中针对每一组执行按向量化表示的输入特征图与组权重向量GW的对位乘累加运算得到组累加向量包括:
对按向量化表示的输入特征图与组权重向量GW执行对位乘运算,得到中间向量R0
对中间向量R0进行若干次旋转和相加,得到初始累加向量;以及
对所述初始累加向量与所述掩码向量GM执行对位乘运算,得到所述组累加向量。
6.根据权利要求5所述的方法,其特征在于,所述为每组输出点生成对应的掩码向量GM包括:
确定每组输出点中各输出点的卷积计算窗口中的累加基点,其中所述累加基点为所述卷积计算窗口中的中心点、角点、或任一点;以及
将各卷积计算窗口中的累加基点赋值为1,将其他位置赋值为0,以构造所述掩码向量GM,所述掩码向量GM的尺寸与所述按向量化表示的输入特征图的尺寸相同。
7.根据权利要求6所述的方法,其特征在于,所述对中间向量R0进行若干次旋转和相加得到初始累加向量包括:
以按向量化表示的输入特征图的主维度尺寸为旋转单位,根据所述累加基点的位置,将所述中间向量R0向左或向右共旋转ky-1次,每次旋转1个旋转单位,得到ky-1个第一旋转向量R1、…、Rky-1
将所述中间向量R0与所述ky-1个第一旋转向量R1、…、Rky-1执行向量加法运算,得到第一累加向量R’0
以1为旋转单位,根据所述累加基点的位置,将所述第一累加向量R’0向左或向右共旋转kx-1次,每次旋转1个旋转单位,得到kx-1个第二旋转向量R’1、…、R’kx-1;以及
将所述第一累加向量R’0与所述kx-1个第二旋转向量R’1、…、R’kx-1执行向量加法运算,得到第二累加向量R”0,作为所述初始累加向量。
8.根据权利要求7所述的方法,其特征在于,所述累加基点为所述卷积计算窗口中的中心点,其中:
将所述中间向量R0向左或向右共旋转ky-1次包括将所述中间向量R0向左和向右分别旋转(ky-1)/2次;以及
将所述第一累加向量R’0向左或向右共旋转kx-1次包括将所述第一累加向量R’0向左和向右分别旋转(kx-1)/2次。
9.根据权利要求1-8任一所述的方法,其特征在于,采用多线程并行计算所述多个独立的单一卷积运算。
10.根据权利要求1-8任一所述的方法,其特征在于,所述卷积运算的结果数据按照所述输入特征图的空间尺寸进行存储。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
调整所述卷积运算的结果数据中各数据元素的索引,以适应下一级卷积运算处理。
12.根据权利要求1-8任一所述的方法,其特征在于,所述方法还包括:
在执行所述单一卷积运算之前,基于所述卷积运算处理的填补规则,对所述密文数据中各个输入通道的输入特征图进行0值填补;以及
基于填补后的所述输入特征图执行所述单一卷积运算。
13.一种加密数据处理电路,包括控制电路、存储电路和运算电路,其特征在于:
所述控制电路配置用于控制所述存储电路和所述运算电路对经同态加密的密文数据执行卷积运算处理,以得到经同态加密的结果数据;
所述存储电路配置用于存储信息,所述信息至少包括处理前、处理期间和/或处理后的信息;以及
所述运算电路配置用于在所述控制电路的控制下,对所述密文数据和卷积核执行多个独立的单一卷积运算,其中每个所述单一卷积运算使用对应单个输入通道的单个卷积核对所述密文数据中对应的单个输入通道的输入特征图执行卷积运算,获得多个单一卷积运算结果;以及将所述多个单一卷积运算结果按照所述卷积运算的运算规则进行处理,以获得所述卷积运算的结果数据。
14.根据权利要求13所述的加密数据处理电路,其特征在于,所述运算电路包括一个主运算电路和多个从运算电路,其中:
所述多个从运算电路用于并行执行所述多个独立的单一卷积运算;
所述主运算电路用于对所述多个从运算电路返回的单一卷积运算结果进行合并处理,以得到所述卷积运算的结果数据。
15.根据权利要求14所述的加密数据处理电路,其特征在于:
所述控制电路进一步用于:
根据卷积运算参数,将输出特征图的输出点划分为若干组,每组内各个输出点所需的输入特征图的卷积计算窗口相互不重叠;以及
为每组输出点生成对应的组权重向量GW;
每个所述从运算电路进一步用于按如下执行所述单一卷积运算:
针对每组输出点,执行按向量化表示的输入特征图与组权重向量GW的对位乘累加运算,得到组累加向量;以及
将各组的组累加向量相加,得到所述单一卷积运算的单一卷积运算结果。
16.根据权利要求15所述的加密数据处理电路,其特征在于,所述控制电路进一步用于按如下将输出特征图的输出点划分为若干组:
根据卷积核的尺寸kx、ky和卷积步长sx、sy,将所述输出特征图的各输出点划分为(kx-sx+1)×(ky-sy+1)个组,每组内各点的行间隔为(kx-sx+1)×sx,每组内各点的列间隔为(ky-sy+1)×sy。
17.根据权利要求15所述的加密数据处理电路,其特征在于,所述控制电路进一步用于按如下为每组输出点生成对应的组权重向量GW:
根据每组输出点在输出特征图上的对应位置,生成计算各输出点所需的卷积计算窗口内各输入点对应的卷积权重,以构成所述组权重向量GW,所述组权重向量的尺寸与所述按向量化表示的输入特征图的尺寸相同。
18.根据权利要求15所述的加密数据处理电路,其特征在于,所述控制电路进一步用于为每组输出点生成对应的掩码向量GM,并且所述从运算电路进一步包括:
第一向量乘电路,用于对按向量化表示的输入特征图与组权重向量GW执行对位乘运算,得到中间向量R0
向量旋转和累加电路,用于对中间向量R0进行若干次旋转和相加,得到初始累加向量;以及
第二向量乘电路,用于对所述初始累加向量与所述掩码向量GM执行对位乘运算,得到所述组累加向量。
19.根据权利要求18所述的加密数据处理电路,其特征在于,所述控制电路进一步用于按如下为每组输出点生成对应的掩码向量GM:
确定每组输出点中各输出点的卷积计算窗口中的累加基点,其中所述累加基点为所述卷积计算窗口中的中心点、角点、或任一点;以及
将各卷积计算窗口中的累加基点赋值为1,将其他位置赋值为0,以构造所述掩码向量GM,所述掩码向量GM的尺寸与所述按向量化表示的输入特征图的尺寸相同。
20.根据权利要求19所述的加密数据处理电路,其特征在于,所述向量旋转和累加电路包括:
第一向量旋转电路,用于以按向量化表示的输入特征图的主维度尺寸为旋转单位,根据所述累加基点的位置,将所述中间向量R0向左或向右共旋转ky-1次,每次旋转1个旋转单位,得到ky-1个第一旋转向量R1、…、Rky-1
第一累加电路,用于将所述中间向量R0与所述ky-1个第一旋转向量R1、…、Rky-1执行向量加法运算,得到第一累加向量R’0
第二向量旋转电路,用于以1为旋转单位,根据所述累加基点的位置,将所述第一累加向量R’0向左或向右共旋转kx-1次,每次旋转1个旋转单位,得到kx-1个第二旋转向量R’1、…、R’kx-1;以及
第二累加电路,用于将所述第一累加向量R’0与所述kx-1个第二旋转向量R’1、…、R’kx-1执行向量加法运算,得到第二累加向量R”0,作为所述初始累加向量。
21.根据权利要求20所述的加密数据处理电路,其特征在于,所述累加基点为所述卷积计算窗口中的中心点,其中:
所述第一向量旋转电路用于将所述中间向量R0向左和向右分别旋转(ky-1)/2次;以及
所述第二向量旋转电路用于将所述第一累加向量R’0向左和向右分别旋转(kx-1)/2次。
22.根据权利要求13-21任一所述的加密数据处理电路,其特征在于,所述存储电路用于将所述卷积运算的结果数据按照所述输入特征图的空间尺寸进行存储。
23.根据权利要求22所述的加密数据处理电路,其特征在于,所述控制电路进一步用于:
根据下一级卷积运算处理的参数配置,调整所述卷积运算的结果数据中各数据元素的索引。
24.根据权利要求13-21任一所述的加密数据处理电路,其特征在于,所述控制电路进一步用于:
在控制所述运算电路执行所述单一卷积运算之前,基于所述卷积运算处理的填补规则,对所述密文数据中各个输入通道的输入特征图进行0值填补;以及
控制所述运算电路基于填补后的所述输入特征图执行所述单一卷积运算。
25.一种计算装置,包括:
处理器,其配置用于执行程序指令;以及
存储器,其配置用于存储所述程序指令,当所述程序指令由所述处理器加载并执行时,使得所述处理器执行根据权利要求1-12任一所述的对加密数据进行处理的方法。
26.一种计算机可读存储介质,其中存储有程序指令,当所述程序指令由处理器加载并执行时,使得所述处理器执行根据权利要求1-12任一所述的对加密数据进行处理的方法。
CN202210126281.XA 2022-02-10 2022-02-10 对加密数据进行处理的方法、电路及相关产品 Active CN114168991B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210126281.XA CN114168991B (zh) 2022-02-10 2022-02-10 对加密数据进行处理的方法、电路及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210126281.XA CN114168991B (zh) 2022-02-10 2022-02-10 对加密数据进行处理的方法、电路及相关产品

Publications (2)

Publication Number Publication Date
CN114168991A true CN114168991A (zh) 2022-03-11
CN114168991B CN114168991B (zh) 2022-05-20

Family

ID=80489789

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210126281.XA Active CN114168991B (zh) 2022-02-10 2022-02-10 对加密数据进行处理的方法、电路及相关产品

Country Status (1)

Country Link
CN (1) CN114168991B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115865307A (zh) * 2023-02-27 2023-03-28 蓝象智联(杭州)科技有限公司 一种用于联邦学习的数据点乘运算方法
CN115983337A (zh) * 2022-12-14 2023-04-18 北京登临科技有限公司 卷积计算单元、ai运算阵列及相关设备
CN116248252A (zh) * 2023-05-10 2023-06-09 蓝象智联(杭州)科技有限公司 一种用于联邦学习的数据点乘处理方法
CN117592521A (zh) * 2023-11-28 2024-02-23 浙江大学 一种用于全同态cnn推理的批量编码方法
CN117592521B (zh) * 2023-11-28 2024-06-28 浙江大学 一种用于全同态cnn推理的批量编码方法

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107657581A (zh) * 2017-09-28 2018-02-02 中国人民解放军国防科技大学 一种卷积神经网络cnn硬件加速器及加速方法
US20180157966A1 (en) * 2016-12-01 2018-06-07 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs efficient 3-dimensional convolutions
CN109002883A (zh) * 2018-07-04 2018-12-14 中国科学院计算技术研究所 卷积神经网络模型计算装置及计算方法
CN109543816A (zh) * 2018-09-20 2019-03-29 中国科学院计算技术研究所 一种基于权重捏合的卷积神经网络计算方法和系统
CN110663047A (zh) * 2017-05-25 2020-01-07 德州仪器公司 安全卷积神经网络(cnn)加速器
CN111882029A (zh) * 2020-06-22 2020-11-03 华控清交信息科技(北京)有限公司 一种数据处理方法及装置
CN112217663A (zh) * 2020-09-17 2021-01-12 暨南大学 一种轻量型卷积神经网络安全预测方法
CN112699384A (zh) * 2020-12-11 2021-04-23 山东大学 基于fpga的全同态加密深度学习推理方法及系统
CN112818360A (zh) * 2021-01-18 2021-05-18 西安交通大学 一种基于同态加密技术的深度神经网络加密推理方法
CN113297175A (zh) * 2021-05-26 2021-08-24 Oppo广东移动通信有限公司 数据处理方法、装置、系统和可读存储介质
US20210344479A1 (en) * 2020-05-04 2021-11-04 Samsung Electronics Co., Ltd. Homomorphic encryption processing device, system including the same and method of performing homomorphic encryption processing

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180157966A1 (en) * 2016-12-01 2018-06-07 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs efficient 3-dimensional convolutions
CN110663047A (zh) * 2017-05-25 2020-01-07 德州仪器公司 安全卷积神经网络(cnn)加速器
CN107657581A (zh) * 2017-09-28 2018-02-02 中国人民解放军国防科技大学 一种卷积神经网络cnn硬件加速器及加速方法
CN109002883A (zh) * 2018-07-04 2018-12-14 中国科学院计算技术研究所 卷积神经网络模型计算装置及计算方法
CN109543816A (zh) * 2018-09-20 2019-03-29 中国科学院计算技术研究所 一种基于权重捏合的卷积神经网络计算方法和系统
US20210344479A1 (en) * 2020-05-04 2021-11-04 Samsung Electronics Co., Ltd. Homomorphic encryption processing device, system including the same and method of performing homomorphic encryption processing
CN111882029A (zh) * 2020-06-22 2020-11-03 华控清交信息科技(北京)有限公司 一种数据处理方法及装置
CN112217663A (zh) * 2020-09-17 2021-01-12 暨南大学 一种轻量型卷积神经网络安全预测方法
CN112699384A (zh) * 2020-12-11 2021-04-23 山东大学 基于fpga的全同态加密深度学习推理方法及系统
CN112818360A (zh) * 2021-01-18 2021-05-18 西安交通大学 一种基于同态加密技术的深度神经网络加密推理方法
CN113297175A (zh) * 2021-05-26 2021-08-24 Oppo广东移动通信有限公司 数据处理方法、装置、系统和可读存储介质

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
T.ISHIYAMA 等: ""Highly Accurate CNN Inference Using Approximate Activation Functions over Homomorphic Encryption,"", 《2020 IEEE INTERNATIONAL CONFERENCE ON BIG DATA (BIG DATA)》 *
张慈: ""基于同态加密的隐私数据卷积神经网络预测"", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
杨诗吟: ""具有隐私保护的轻量级卷积神经网络预测方案研究"", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
许世聪: ""隐私保护卷积神经网络前向传播方法研究"", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
谢四江 等: ""基于同态加密的卷积神经网络前向传播方法"", 《计算机应用与软件》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115983337A (zh) * 2022-12-14 2023-04-18 北京登临科技有限公司 卷积计算单元、ai运算阵列及相关设备
CN115865307A (zh) * 2023-02-27 2023-03-28 蓝象智联(杭州)科技有限公司 一种用于联邦学习的数据点乘运算方法
CN116248252A (zh) * 2023-05-10 2023-06-09 蓝象智联(杭州)科技有限公司 一种用于联邦学习的数据点乘处理方法
CN117592521A (zh) * 2023-11-28 2024-02-23 浙江大学 一种用于全同态cnn推理的批量编码方法
CN117592521B (zh) * 2023-11-28 2024-06-28 浙江大学 一种用于全同态cnn推理的批量编码方法

Also Published As

Publication number Publication date
CN114168991B (zh) 2022-05-20

Similar Documents

Publication Publication Date Title
CN114168991B (zh) 对加密数据进行处理的方法、电路及相关产品
CN107145939B (zh) 一种低计算能力处理设备的计算机视觉处理方法及装置
US11645529B2 (en) Sparsifying neural network models
Jiang et al. Quantum image pseudocolor coding based on the density-stratified method
KR20180101055A (ko) 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
JP7389268B2 (ja) 量子状態準備回路の生成方法、装置、チップ、機器及びプログラム
CN115496204B (zh) 一种跨域异质场景下的面向联邦学习的评测方法及装置
JP5448863B2 (ja) 鍵生成装置、鍵生成方法、プログラム及び記録媒体
CN115622685B (zh) 隐私数据同态加密方法、装置及系统
JP7114659B2 (ja) ニューラルネットワーク方法及び装置
WO2020014893A1 (zh) 反卷积实现方法及相关产品
CN111639367A (zh) 基于树模型的两方联合分类方法、装置、设备及介质
CN113630234A (zh) 使用同态加密的加密方法及装置
Ran et al. CryptoGCN: Fast and scalable homomorphically encrypted graph convolutional network inference
Aharoni et al. He-pex: Efficient machine learning under homomorphic encryption using pruning, permutation and expansion
CN114048061A (zh) 校验块的生成方法及装置
CN114626511B (zh) 神经网络的训练方法、推理方法及相关产品
CN113204372B (zh) 存储受限型哈希算法的加速装置及方法
KR20230078510A (ko) 동형 암호 연산 장치 및 방법
Zhao et al. SRA: a secure ReRAM-based DNN accelerator
Wyrzykowski et al. Towards efficient execution of erasure codes on multicore architectures
Chiang Volley revolver: A novel matrix-encoding method for privacy-preserving neural networks (inference)
US20240171372A1 (en) Evaluating convolutions using encrypted data
Li et al. Privacy-preserving outsourcing of large-scale nonlinear programming to the cloud
US20230325251A1 (en) Partition a Tensor with Varying Granularity Levels in Shuffled Secure Multiparty Computation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant