CN117114059A - 神经网络中激活函数的计算方法、装置以及计算设备 - Google Patents
神经网络中激活函数的计算方法、装置以及计算设备 Download PDFInfo
- Publication number
- CN117114059A CN117114059A CN202310926879.1A CN202310926879A CN117114059A CN 117114059 A CN117114059 A CN 117114059A CN 202310926879 A CN202310926879 A CN 202310926879A CN 117114059 A CN117114059 A CN 117114059A
- Authority
- CN
- China
- Prior art keywords
- computing
- function
- participant
- share
- computing participant
- 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.)
- Pending
Links
- 230000004913 activation Effects 0.000 title claims abstract description 141
- 238000000034 method Methods 0.000 title claims abstract description 101
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 33
- 238000004364 calculation method Methods 0.000 claims abstract description 57
- 230000003213 activating effect Effects 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 366
- 230000015654 memory Effects 0.000 claims description 64
- 238000012545 processing Methods 0.000 claims description 55
- 238000003860 storage Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012549 training Methods 0.000 abstract description 20
- 238000004891 communication Methods 0.000 abstract description 17
- 230000003252 repetitive effect Effects 0.000 description 26
- 230000008569 process Effects 0.000 description 20
- 239000011159 matrix material Substances 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 206010047289 Ventricular extrasystoles Diseases 0.000 description 8
- 238000005129 volume perturbation calorimetry Methods 0.000 description 8
- 238000003062 neural network model Methods 0.000 description 6
- 239000000654 additive Substances 0.000 description 5
- 230000000996 additive effect Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004931 aggregating effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 229910021421 monocrystalline silicon Inorganic materials 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Computer Security & Cryptography (AREA)
- Neurology (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
一种神经网络中激活函数的计算方法、装置以及计算设备,该方法包括:第一计算参与方、第二计算参与方以及第三计算参与方分别获得第一输入的份额,第一计算参与方和第二计算参与方分别根据各自获得的第一输入的份额计算得到第一输入的密文,第一计算参与方根据第一输入的密文以及第一子函数确定第一函数结果,第二计算参与方根据第一输入的密文以及第二子函数确定第二函数结果,第一计算参与方、第二计算参与方以及第三计算参与方根据各自获得的第一函数结果的份额,第二函数结果的份额分别计算得到第一激活函数结果的份额。该方法能够降低神经网络训练时所需的通信量和计算量。
Description
本申请要求于2023年05月16日提交国家知识产权局、申请号为202310551642.X、发明名称为“半可信云支持下的多方安全高效神经网络训练的方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及安全计算领域,并且更具体地,涉及一种神经网络中激活函数的计算方法、装置以及计算设备。
背景技术
安全多方学习是一种在不汇聚多方(不同组织或者用户)数据的情况下多方利用各自所有的数据协同训练AI模型的分布式机器学习范式。传统的机器学习范式需要汇聚大量的数据用于模型的训练,而用于训练的数据很有可能来自多个不同的组织或者用户。将多个不同组织或者不同用户的数据汇聚在一起,极有可能造成数据泄露的风险,对组织来说会暴露信息资产,对个人用户来说可能泄露个人隐私。
上述问题的存在对AI模型的训练提出了严峻的挑战,为解决上述问题,安全多方学习技术应运而生。安全多方学习在保证多方数据隐私的情况下,通过采用秘密分享、混淆电路等安全多方计算技术协同计算共同训练AI模型。通过安全多方学习技术,即保护了多方用户数据,又可以充分利用多方数据来协同训练模型,从而得到更强大的模型。
一种相关的技术方案中,安全多方学习框架中包括三个计算参与方,这三个计算参与方通过重复性秘密分享的方式执行线性阶段的矩阵乘法运算,在执行非线性阶段的激活函数的计算时,将非线性的激活函数转换为线性计算,通过重复性秘密分享的方式执行该线性计算。由于线性计算的计算量较大,从而导致整体的效率较低。
因此,如何降低神经网络训练时所需的通信量和计算量成为亟需要解决的技术问题。
发明内容
本申请提供一种神经网络中激活函数的计算方法、装置以及计算设备,该方法能够降低神经网络训练时所需的通信量和计算量。
第一方面,提供了一种神经网络中激活函数的计算方法,该方法包括:第一计算参与方、第二计算参与方以及第三计算参与方分别获得第一输入的份额,其中,该第一输入为第一激活函数的输入信息,该第一输入的份额是将该第一输入以秘密分享的方式在该第一计算参与方、该第二计算参与方以及该第三计算参与方之间分享;该第一计算参与方和该第二计算参与方分别根据各自获得的第一输入的份额计算得到第一输入的密文;该第一计算参与方根据该第一输入的密文以及第一子函数确定第一函数结果,其中,该第一子函数是以函数秘密分享的方式对该第一激活函数进行拆分后得到的一个函数份额,该第一函数结果为该第一子函数的输出;该第二计算参与方根据该第一输入的密文以及第二子函数确定第二函数结果,其中,该第二子函数是以该函数秘密分享的方式对该第一激活函数进行拆分后得到的另一个函数份额,该第二函数结果为该第二子函数的输出;该第一计算参与方、该第二计算参与方以及该第三计算参与方根据各自获得的第一函数结果的份额,以及各自获得的第二函数结果的份额分别计算得到第一激活函数结果的份额,该第一计算参与方、该第二计算参与方以及该第三计算参与方各自计算得到的第一激活函数结果的份额的结合能够还原出第一激活函数结果,该第一激活函数结果是该第一激活函数的输出。
上述技术方案中,对于非线性阶段的激活函数的运算而言,通过秘密分享和函数秘密分享结合的方式,可以降低神经网络训练时所需的通信量和计算量。
结合第一方面,在第一方面的某些实现方式中,第一输入的份额是将第一输入以重复性秘密分享的方式在第一计算参与方、第二计算参与方以及第三计算参与方之间分享。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:该第三计算参与方在离线阶段以该函数秘密分享的方式对该第一激活函数进行拆分得到该第一子函数和该第二子函数。该第三计算参与方将该第一子函数和该第二子函数分别发送给该第一计算参与方和该第二计算参与方。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:该第一计算参与方将该第一函数结果以秘密分享的方式分享给该第一计算参与方、该第二计算参与方以及该第三计算参与方,其中,该第一计算参与方、该第二计算参与方以及该第三计算参与方各自获得该第一函数结果的份额;该第二计算参与方将该第二函数结果以秘密分享的方式分享给该第一计算参与方、该第二计算参与方以及该第三计算参与方,其中,该第一计算参与方、该第二计算参与方以及该第三计算参与方各自获得该第二函数结果的份额。
结合第一方面,在第一方面的某些实现方式中,该第一计算参与方将该第一函数结果以重复性秘密分享的方式分享给该第一计算参与方、该第二计算参与方以及该第三计算参与方,该第二计算参与方将该第二函数结果以重复性秘密分享的方式分享给该第一计算参与方、该第二计算参与方以及该第三计算参与方。
结合第一方面,在第一方面的某些实现方式中,该第一计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到该第一激活函数结果的第一份额;该第二计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到该第一激活函数结果的第二份额;该第三计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到该第一激活函数结果的第三份额;其中,该第一激活函数结果的第一份额、该第一激活函数结果的第二份额以及该第一激活函数结果的第三份额的结合能够还原出该第一激活函数结果。
结合第一方面,在第一方面的某些实现方式中,该第一输入的密文是根据第一随机数对该第一输入进行盲化后得到的结果,该第一计算参与方根据第二随机数对该第一计算参与方获得的该第一输入的份额进行盲化,得到第一结果,并将该第一结果发送给该第二计算参与方,该第二随机数为该第一随机数的一个份额;该第二计算参与方根据第三随机数对该第二计算参与方获得的该第一输入的份额进行盲化,得到第二结果,并将该第二结果发送给该第一计算参与方,该第三随机数为该第一随机数的另一个份额;该第一计算参与方和该第二计算参与方分别根据该第一结果和该第二结果得到该第一输入的密文。
结合第一方面,在第一方面的某些实现方式中,该第一激活函数包括Relu激活函数,或Sigmoid激活函数。
第二方面,提供了一种神经网络中激活函数的计算装置,该装置包括:获取模块,处理模块,其中,获取模块,用于第一计算参与方、第二计算参与方以及第三计算参与方分别获得第一输入的份额,其中,该第一输入为第一激活函数的输入信息,该第一输入的份额是将该第一输入以秘密分享的方式在该第一计算参与方、该第二计算参与方以及该第三计算参与方之间分享;处理模块,用于该第一计算参与方和该第二计算参与方分别根据各自获得的第一输入的份额计算得到第一输入的密文;该处理模块,还用于该第一计算参与方根据该第一输入的密文以及第一子函数确定第一函数结果,其中,该第一子函数是以函数秘密分享的方式对该第一激活函数进行拆分后得到的一个函数份额,该第一函数结果为该第一子函数的输出;该处理模块,还用于该第二计算参与方根据该第一输入的密文以及第二子函数确定第二函数结果,其中,该第二子函数是以该函数秘密分享的方式对该第一激活函数进行拆分后得到的另一个函数份额,该第二函数结果为该第二子函数的输出;该处理模块,还用于该第一计算参与方、该第二计算参与方以及该第三计算参与方根据各自获得的第一函数结果的份额,以及各自获得的第二函数结果的份额分别计算得到第一激活函数结果的份额,该第一计算参与方、该第二计算参与方以及该第三计算参与方各自计算得到的第一激活函数结果的份额的结合能够还原出第一激活函数结果,该第一激活函数结果是该第一激活函数的输出。
结合第二方面,在第二方面的某些实现方式中,第一输入的份额是将第一输入以重复性秘密分享的方式在第一计算参与方、第二计算参与方以及第三计算参与方之间分享。
结合第二方面,在第二方面的某些实现方式中,该处理模块还用于该第三计算参与方在离线阶段以该函数秘密分享的方式对该第一激活函数进行拆分得到该第一子函数和该第二子函数;发送模块,用于该第三计算参与方将该第一子函数和该第二子函数分别发送给该第一计算参与方和该第二计算参与方。
结合第二方面,在第二方面的某些实现方式中,该处理模块,还用于该第一计算参与方将该第一函数结果以秘密分享的方式分享给该第一计算参与方、该第二计算参与方以及该第三计算参与方,其中,该第一计算参与方、该第二计算参与方以及该第三计算参与方各自获得该第一函数结果的份额;该处理模块,还用于该第二计算参与方将该第二函数结果以秘密分享的方式分享给该第一计算参与方、该第二计算参与方以及该第三计算参与方,其中,该第一计算参与方、该第二计算参与方以及该第三计算参与方各自获得该第二函数结果的份额。
结合第二方面,在第二方面的某些实现方式中,该第一计算参与方将该第一函数结果以重复性秘密分享的方式分享给该第一计算参与方、该第二计算参与方以及该第三计算参与方,该第二计算参与方将该第二函数结果以重复性秘密分享的方式分享给该第一计算参与方、该第二计算参与方以及该第三计算参与方。
结合第二方面,在第二方面的某些实现方式中,该处理模块具体用于:该第一计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到该第一激活函数结果的第一份额;该第二计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到该第一激活函数结果的第二份额;该第三计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到该第一激活函数结果的第三份额;其中,该第一激活函数结果的第一份额、该第一激活函数结果的第二份额以及该第一激活函数结果的第三份额的结合能够还原出该第一激活函数结果。
结合第二方面,在第二方面的某些实现方式中,该第一输入的密文是根据第一随机数对该第一输入进行盲化后得到的结果,该处理模块具体用于:第一计算参与方根据第二随机数对该第一计算参与方获得的该第一输入的份额进行盲化,得到第一结果,并将该第一结果发送给该第二计算参与方,该第二随机数为该第一随机数的一个份额;该第二计算参与方根据第三随机数对该第二计算参与方获得的该第一输入的份额进行盲化,得到第二结果,并将该第二结果发送给该第一计算参与方,该第三随机数为该第一随机数的另一个份额;该第一计算参与方和该第二计算参与方分别根据该第一结果和该第二结果得到该第一输入的密文。
结合第二方面,在第二方面的某些实现方式中,该第一激活函数包括Relu激活函数,或Sigmoid激活函数。
第三方面,提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;该至少一个计算设备的处理器用于执行该至少一个计算设备的存储器中存储的指令,以使得该计算设备集群执行第一方面或第一方面任意一种可能的实现方式中的方法。
可选地,该处理器可以是通用处理器,可以通过硬件来实现也可以通过软件来实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于该处理器之外,独立存在。
第四方面,提供了一种芯片,该芯片获取指令并执行该指令来实现上述第一方面以及第一方面的任意一种实现方式中的方法。
可选地,作为一种实现方式,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,执行上述第一方面以及第一方面的任意一种实现方式中的方法。
可选地,作为一种实现方式,该芯片还可以包括存储器,该存储器中存储有指令,该处理器用于执行该存储器上存储的指令,当该指令被执行时,该处理器用于执行第一方面以及第一方面中的任意一种实现方式中的方法。
第五方面,提供了一种包含指令的计算机程序产品,当该指令被计算设备集群运行时,使得该计算设备集群执行如上述第一方面以及第一方面的任意一种实现方式中的方法。
第六方面,提供了一种计算机可读存储介质,包括计算机程序指令,当该计算机程序指令由计算设备集群执行时,该计算设备集群执行如上述第一方面以及第一方面的任意一种实现方式中的方法。
作为示例,这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除的PROM(erasablePROM,EPROM)、Flash存储器、电EPROM(electrically EPROM,EEPROM)以及硬盘驱动器(harddrive)。
可选地,作为一种实现方式,上述存储介质具体可以是非易失性存储介质。
附图说明
图1是安全多方学习框架的示意性框图。
图2是以金融行业与运营商联合建模的场景为例的系统架构示意图。
图3是本申请实施例提供的一种神经网络中激活函数的计算方法的示意性流程图。
图4是本申请实施例提供的一种在计算Relu函数的过程中各个计算参与方在初始和最终持有的数据的状态。
图5是本申请实施例提供的一种将重复性秘密分享转化为分布式比较函数对激活函数Relu进行求解的方法的示意性流程图。
图6本申请实施例提供的一种计算参与方3在离线阶段在本地随机生成的数据的示意图。
图7是本申请实施例提供的一种在计算Sigmoid函数的过程中各个计算参与方在初始和最终持有的数据的状态。
图8是本申请实施例提供的一种将重复性秘密分享转化为分布式比较函数对激活函数Sigmoid进行求解的方法的示意性流程图。
图9是本申请实施例提供的一种神经网络中激活函数的计算装置900的示意性框图。
图10是本申请实施例提供的一种计算设备1500的架构示意图。
图11是本申请实施例提供的一种计算设备集群的架构示意图。
图12是本申请实施例提供的计算设备1500A和1500B之间通过网络进行连接的示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请将围绕包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
另外,在本申请实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请实施例中,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例描述的业务场景是为了更加清楚地说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:包括单独存在A,同时存在A和B,以及单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
为了便于描述,下面先对本申请实施例涉及的相关概念进行详细描述。
1、神经网络
神经网络是一种模仿生物神经网络功能的计算机系统,通过对数据进行学习和训练来完成各种任务。它是一种由多个节点组成的计算模型,每个节点都模拟生物神经元的行为,能够接收和处理输入信号,并通过学习和调整权重来产生输出信号。
神经网络通常由多层节点组成,其中输入层接收外部数据输入,输出层生成最终的输出结果,中间的隐藏层则对输入进行处理和转换。在神经网络中,节点之间的连接具有不同的权重,这些权重可以通过训练和学习来调整以提高网络的准确性和性能。神经网络被广泛应用于各种领域,包括图像识别、语音识别、自然语言处理、自动驾驶、医学诊断和金融预测等。常见的神经网络架构包括前馈神经网络、卷积神经网络、循环神经网络和深度神经网络等。
神经网络模型训练过程中的计算操作主要由线性操作和非线性操作构成,线性操作主要为矩阵乘法,非线性操作则包括各种激活函数,例如激活函数Relu和激活函数Sigmoid。
2、安全多方学习(secure multi-party learning)
安全多方学习是一种在不汇聚多方(不同组织或者用户)数据的情况下多方利用各自所有的数据协同训练AI模型的分布式机器学习范式。传统的机器学习范式需要汇聚大量的数据用于模型的训练,而用于训练的数据很有可能来自多个不同的组织或者用户。将多个不同组织或者不同用户的数据汇聚在一起,极有可能造成数据泄露的风险,对组织来说会暴露信息资产,对个人用户来说可能泄露个人隐私。
上述问题的存在对AI模型的训练提出了严峻的挑战,为解决上述问题,安全多方学习技术应运而生。安全多方学习在保证多方数据隐私的情况下,通过采用秘密分享、混淆电路等安全多方计算技术协同计算共同训练AI模型。通过安全多方学习技术,即保护了多方用户数据,又可以充分利用多方数据来协同训练模型,从而得到更强大的模型。
作为示例,安全多方学习框架如图1所示,该框架中包含多个数据持有方和计算参与方。安全多方学习的神经网络训练具体分为3个步骤:数据分享、模型训练和模型还原。步骤一:数据分享,各个数据持有方使用秘密分享的方式,将自己的数据分享给各个计算参与方,使得每一个计算参与方都拥有全集数据的秘密份额。步骤二:在训练阶段,计算参与方在全集数据上通过交互计算,执行训练过程,最后每个参与方都得到一个训练好的神经网络模型的秘密份额。在这一过程中,所有的计算的中间结果也都是以秘密份额的形式存在。步骤三:在模型还原阶段,计算参与方各自将训练好的神经网络模型的秘密份额传输给某个指定的服务器,由该服务器还原最后的模型。
3、秘密分享(secret sharing)
又称秘密拆分,是将秘密分散到人群的方法,每人得到秘密的一部分,称为份额或分片。只有当足够多的份额结合时,才能还原出秘密,每件份额各自则没有用途。秘密分享的方式包括但不限于:加法秘密分享、重复性秘密分享、函数秘密分享。
4、加法秘密分享(additive secret sharing)
加法秘密分享是秘密分享的一种实例,用于将一个秘密值拆分成多个份额,以便在多个参与方之间共享。在加法秘密分享中,原始秘密被表示为一个整数,并且可以通过将其拆分成多个部分来进行分享,只有在所有的分享都被重新组合时才能恢复出原始的秘密值。这种方法可以用于实现安全的多方计算,例如在保护个人隐私的情况下进行数据分析,或者在分布式计算中进行安全的计算。
加法秘密分享的一种拆分方法为采用域上加法进行拆分,例如秘密值s可以拆分为两个秘密份额a和b,使得s=(a+b)mod p,p为环的大小。只有在将秘密份额a和b相加时才能恢复出原始的秘密值s。
5、重复性秘密分享(replicated secret sharing,RSS)
重复性秘密分享也是秘密分享的一种实例,用于确保秘密值在多个实体之间共享,并在其中任何一方失效或被攻击时保持安全。在RSS中,原始秘密被分割成多个部分,并分配给多个实体。每个实体都拥有秘密的一个副本,并且只有在至少存在一定数量的实体同时存在时才能恢复出原始的秘密值。这样,在其中一个实体失效或受到攻击的情况下,其它实体仍然可以通过它们各自持有的副本来恢复出原始秘密值。
例如,在三方的场景下使用重复性秘密分享,一个秘密值s可以拆分为三个秘密份额a、b和c,使得s=(a+b+c)mod p(p为计算环的大小),其中第一方持有秘密份额a和秘密份额b,第二方持有秘密份额b和秘密份额c,第三方持有秘密份额a和秘密份额c。只有当三方中的任意两方将自己的秘密份额合并时,才能还原秘密值s。
6、函数秘密分享(function secret sharing)
函数秘密分享FSS是一种密码学概念,也是秘密分享的一种实例,用于在多个实体之间计算一个秘密函数,且不泄漏该函数的信息。在FSS中,一个原始的秘密函数被拆分为多个部分,并分配给多个实体。每个实体都拥有秘密函数的一个份额,并且只有在秘密函数的所有份额都被重新组合时才能恢复出原始的秘密函数。
函数秘密分享FS的一种拆分方法为将一个函数拆分为两个函数,使得拆分完两个函数在环上的和会等于原始函数。例如将f(x)拆分为f0(x)和f1(x),使得对于任意x,f(x)=f0(x)+f1(x)。
函数秘密分享包含两种形式,一种是分布式点函数,另一种形式是分布式比较函数。其中,分布式比较函数是指对于分布式系统中的数据进行比较的函数,比较函数的结果会作为决策函数的输出,因此,分布式比较函数的计算量和计算复杂度较小。
一种相关的技术方案中,安全多方学习框架中包括两个计算参与方和一个计算辅助方以及数量不限的数据持有方。其安全假设为半诚实下的诚实大多数安全模型——任意方都不会违反协议执行,且两个计算参与方之间不会相互合谋,计算参与方和计算辅助方之间也不会相互合谋。其中,计算辅助方负责在离线阶段生成乘法三元组以及函数秘密分享的函数份额,并将这些乘法三元组和函数份额发送给两个计算参与方。在线阶段时,两个计算参与方借助于离线阶段所生成的乘法三元组以及加法秘密分享的方式拆分的秘密份额执行线性阶段的矩阵乘法运算,并借助于离线阶段所生成的函数份额以及矩阵乘法输出的结果执行非线性阶段的激活函数的计算。该方案中,在两方加法秘密分享中,实现矩阵乘法运算需要借助于乘法三元组。由于乘法三元组的数据较大,使得两个计算参与方执行一次矩阵乘法所需要的在线阶段通信量较大,导致效率较低。
另一种相关的技术方案中,安全多方学习框架中包括三个计算参与方,这三个计算参与方通过重复性秘密分享的方式执行线性阶段的矩阵乘法运算,在执行非线性阶段的激活函数的计算时,将非线性的激活函数转换为线性计算,通过重复性秘密分享的方式执行该线性计算。该方案中,在三方重复性秘密分享中实现矩阵乘法运算借助于随机数,虽然随机数的数据较小,使得三个计算参与方执行一次矩阵乘法所需要的在线阶段通信量较小,但是在执行非线性阶段的激活函数的计算时,通过将非线性的激活函数转换为线性计算,由于线性计算的计算量较大,从而导致整体的效率较低。
有鉴于此,本申请实施例提供了一种神经网络中激活函数的计算方法,通过重复性秘密分享的方式执行神经网络的线性阶段的运算,并通过重复性秘密分享和函数秘密分享结合的方式,执行神经网络非线性阶段的激活函数的运算,从而降低神经网络训练时所需的通信量和计算量。
应理解,本申请实施例提供的方法所应用的场景可以包括但不限于:跨公司或者跨行业的数据联合建模的场景,对于具体的数据分布方式和参与方数量不做任何要求。
一个示例,互联网广告场景下,互联网公司可以借助其他互联网公司的信息或者广告主的购买数据信息,建立基于互联网服务用户数据是否购买相关物品的模型,从而提高广告投放效率等。
另一个示例,金融行业用户(如银行,券商等)可以借助其他金融行业用户或者运营商(如移动,电信,联通等)数据与自己所有的数据进行联合建模从而提高金融行业模型(如信用分模型,信用卡用户违约模型等)准确度,从而助力金融行业整体运营效率以及抗风险能力的提高。
举例说明,图2介绍了一种以金融行业与运营商联合建模的场景为例的系统架构。如图2所示,金融行业公司和运营商公司分别将数据以秘密分享的方式分享给三个计算参与方。三个计算参与方之间基于金融行业公司和运营商公司的分享的数据的份额进行交互计算,各自训练得到模型的份额,并将模型的份额分别发送给金融行业公司,由金融行业公司基于模型的份额对模型进行还原,最后得到还原后的神经网络模型。
图3是本申请实施例提供的一种神经网络中激活函数的计算的方法的示意性流程图。如图3所示,该方法可以包括步骤310-340,下面分别对步骤310-340进行详细描述。
步骤310:第一计算参与方、第二计算参与方以及第三计算参与方分别获得第一输入的份额。
其中,第一输入为第一激活函数的输入信息,第一输入的份额是将第一输入以重复性秘密分享的方式在第一计算参与方、第二计算参与方以及第三计算参与方之间分享。
应理解,上述第一激活函数为神经网络模型的非线性操作中的激活函数,该激活函数可以是Relu激活函数,或Sigmoid激活函数,本申请书实施例对此不做具体限定。
本申请实施例中,上述第一输入可以是一个数据,或者还可以是该数据与神经网络模型执行矩阵乘法后得到的结果,本申请实施例对此不做具体限定。
步骤320:第一计算参与方根据第一输入的密文以及第一子函数确定第一函数结果。
其中,第一子函数是以函数秘密分享的方式对第一激活函数进行拆分后得到的一个函数份额,第一函数结果为所述第一子函数的输出,所述第一子函数的输入为第一输入的密文。
上述第一输入的密文也可以简称为密文。一种可能的实现方式中,可以对第一输入加入盲化值,并将该第一输入加入盲化值之后得到的结果称为第一输入的密文。
步骤330:第二计算参与方根据第一输入的密文以及第二子函数确定第二函数结果。
其中,第二子函数是以函数秘密分享的方式对第一激活函数进行拆分后得到的另一个函数份额,第二函数结果为第二子函数的输出,第二子函数的输入为第一输入的密文。
步骤340:第一计算参与方、第二计算参与方以及第三计算参与方分别根据第一函数结果的份额,以及第二函数结果的份额计算得到第一激活函数结果的份额。
其中,所述第一激活函数结果的份额是对所述第一激活函数结果以所述重复性秘密分享的方式进行拆分后得到的份额,第一激活函数结果是所述第一激活函数的输出。
具体的,一种可能的实现方式中,第一计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到所述第一函数结果的第一份额;第二计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到所述第一函数结果的第二份额;第三计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到所述第一函数结果的第三份额;所述第一份额和所述第二份额,所述第三份额的结合能够还原出所述第一函数结果。
本申请实施例中,第三计算参与方还可以在离线阶段以函数秘密分享的方式对第一激活函数进行拆分得到第一子函数和所述第二子函数,并将第一子函数和第二子函数分别发送给第一计算参与方和第二计算参与方。
本申请实施例中,第一计算参与方还可以将第一函数结果以重复性秘密分享的方式分享给第一计算参与方、第二计算参与方以及第三计算参与方,其中,第一计算参与方、第二计算参与方以及所述第三计算参与方各自获得所述第一函数结果的份额。
本申请实施例中,第二计算参与方还可以将第二函数结果以重复性秘密分享的方式分享给第一计算参与方、第二计算参与方以及第三计算参与方,其中,第一计算参与方、第二计算参与方以及第三计算参与方各自获得第二函数结果的份额。
本申请实施例中,如果第一激活函数为Sigmoid激活函数,还可以根据函数近似的方法,将Sigmoid激活函数近似为分段比较函数。
上述技术方案中,当计算Relu和Sigmoid等非线性函数时,则首先转换到函数秘密分享上进行计算,之后在转换回重复性秘密分享,可以降低神经网络训练时所需的通信量和计算量。
下面以激活函数为Relu为例,对如何将重复性秘密分享转化为分布式比较函数对激活函数Relu进行求解,最后再转化为重复性秘密分享的过程进行详细描述。应理解,下面的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于下面所示例的具体数值或具体场景。本领域技术人员根据所给出的下面的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。
作为示例,激活函数Relu的表达式如公式(1)所示。
参见图4,秘密值x以重复性秘密分享的方式分别分享给计算参与方1、计算参与方2、计算参与方3。具体的,重复性秘密分享的份额包括x1、x2、x3,在初始状态,当前三个计算参与方持有秘密值x的秘密份额,即计算参与方1持有份额(x1,x2),计算参与方2持有份额(x2,x3),计算参与方3持有份额(x3,x1)。接下来我们将以函数秘密分享的方式计算Relu函数且不暴露任何有意义的中间计算结果。最后,计算参与方1持有(y1,y2),计算参与方2持有(y2,y3),计算参与方3持有(y3,y1)。
应理解,y和x之间满足y=Relu(x),也即,y1=Relu(x1),y2=Relu(x2),y3=Relu(x3),y1、y2以及y3可以理解为是y的三个秘密份额,y1、y2以及y3的结合可以还原出y。
图5是本申请实施例提供的一种将重复性秘密分享转化为分布式比较函数对激活函数Relu进行求解的方法的示意性流程图。如图5所示,该方法可以包括步骤510-560,下面分别对步骤510-560进行详细描述。
步骤510:计算参与方3在离线阶段本地随机生成f,f1,f2,r,r1,r1,并将f1,r1,f2,r2发送给计算参与方1和计算参与方2。
作为示例,如图6所示,在离线阶段,计算参与方3在本地随机生成f,f1,f2,r,r1,r1,其中,f,f1,f2为函数,r,r1,r1为随机数。
计算参与方3在本地随机生成的上述数据满足如下公式(2)-(4)中的关系:
f(x)=f1(x)+f2(x) (3)
r=(r1+r2)mod p (4)
举例说明,计算参与方3可以将本地生成的f1和r1发送给计算参与方1,将f2和r2发送给计算参与方2。
步骤520:计算参与方1和计算参与方2在本地各自将x的份额和r的份额相加获得t的份额,之后发送给对方。
以计算参与方1为例。计算参与方1在本地计算t1=r1+x1,并将t1发送给计算参与方2。应理解,t1可以理解为是t的一个份额,r1可以理解为是r的一个份额,x1可以理解为是x的一个份额。
以计算参与方2为例。计算参与方2在本地计算t2=r2+x2+x3,并将t2发送给计算参与方1。应理解,t2可以理解为是t的另一个份额,r2可以理解为是r的另一个份额,x2和x3可以理解为是x的另外两个份额。
步骤530:计算参与方1和计算参与方2根据t1和t2还原t。
对于计算参与方1而言,其在本地计算得到t1,还从计算参与方2接收到t2,因此,计算参与方1可以计算t=t1+t2,也即,t=r1+x1+r2+x2+x3=r+x。
对于计算参与方2而言,其在本地计算得到t2,还从计算参与方1接收到t1,因此,计算参与方2可以根据t=t1+t2,也即,t=r1+x1+r2+x2+x3=r+x。
应理解,计算参与方1和计算参与方2各自还原出的t是对秘密值x进行盲化后的结果,或者为对秘密值x进行加密后的结果。
步骤540:计算参与方1使用t和f1进行函数计算,得到g1,并将g1以重复性秘密分享的方式分别分享给计算参与方1、计算参与方2、计算参与方3。
作为示例,计算参与方1可以将计算得到的t代入函数f1,计算得到的结果为g1,也即,g1=f1(t)。
计算参与方1将g1以重复性秘密分享的方式分别分享给计算参与方1、计算参与方2、计算参与方3。例如,计算参与方1得到g1的一部分份额,计算参与方2得到g1的一部分份额,计算参与方3得到g1的一部分份额。
步骤550:计算参与方2使用t和f2进行函数计算,得到g2,并将g2以重复性秘密分享的方式分别分享给计算参与方1、计算参与方2、计算参与方3。
作为示例,计算参与方2可以将计算得到的t代入函数f2,计算得到的结果为g2,也即,g2=f2(t)。
计算参与方2将g2以重复性秘密分享的方式分别分享给计算参与方1、计算参与方2、计算参与方3。例如,计算参与方1得到g2的一部分份额,计算参与方2得到g2的一部分份额,计算参与方3得到g2的一部分份额。
步骤560:三个计算参与方分别根据g1的份额和g2的份额得到g的份额,并将g的份额转换为y的份额。
本申请实施例中,g可以理解为是f,根据上述公式(2),如果g等于1,则说明t<=r,由于t=x+r,也就说明x<=0。否则,如果g等于0,则说明t>r,由于t=x+r,也就说明x>0。因此,g和y=Relu(x)之间的转换关系如公式(5)所示。
[y]=(1-[g])*[x] (5)
其中,[y]表示y的份额,[g]表示g的份额,[x]表示x的份额。[g]的计算方法如公式(6)所示。
[g]= [g1]+[g2] (6)
其中,[g1]表示g1的份额,[g2]表示g2的份额。
作为示例,计算参与方1可以根据公式(6)和公式(5)计算得到y的份额。同样的,计算参与方2可以根据公式(6)和公式(5)计算得到y的份额,计算参与方3可以根据公式(6)和公式(5)计算得到y的份额。
应理解,计算参与方1个计算得到y的份额为如图4所示的y1和y2,计算参与方2个计算得到y的份额为如图4所示的y2和y3,计算参与方3个计算得到y的份额为如图4所示的y3和y1。其中,y1、y2以及y3的结合可以还原出y,也就能得到Relu(x)的计算结果。
下面以激活函数为Sigmoid为例,对如何将重复性秘密分享转化为分布式比较函数对激活函数Sigmoid进行求解,最后再转化为重复性秘密分享的过程进行详细描述。应理解,下面的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于下面所示例的具体数值或具体场景。本领域技术人员根据所给出的下面的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。
作为示例,激活函数Sigmoid的表达式如公式(7)所示。
参见图7,秘密值x以重复性秘密分享的方式分别分享给计算参与方1、计算参与方2、计算参与方3。具体的,重复性秘密分享的份额包括x1、x2、x3,在初始状态,当前三个计算参与方持有秘密值x的秘密份额,即计算参与方1持有份额(x1,x2),计算参与方2持有份额(x2,x3),计算参与方3持有份额(x3,x1)。接下来我们将以函数秘密分享的方式计算Sigmoid函数且不暴露任何有意义的中间计算结果。最后,计算参与方1持有(y1,y2),计算参与方2持有(y2,y3),计算参与方3持有(y3,y1)。
应理解,y和x之间满足y=Sigmoid(x),也即,y1=Sigmoid(x1),y2=Sigmoid(x2),y3
=Sigmoid(x3),y1、y2以及y3可以理解为是y的三个秘密份额,y1、y2以及y3的结合可以还原出y。
本申请实施例中,由于Sigmoid是一个点函数,而非比较函数。因此,为了使用分布式比较函数实现sigmoid,采用函数近似的方法,将Sigmoid函数用分段函数近似。即将sigmoid函数近似为公式(8)所示的函数。
图8是本申请实施例提供的一种将重复性秘密分享转化为分布式比较函数对激活函数Sigmoid进行求解的方法的示意性流程图。如图8所示,该方法可以包括步骤810-860,下面分别对步骤810-860进行详细描述。
步骤810:计算参与方3在离线阶段本地随机生成f,f1,f2,r,r1,r1,并将f1,r1,f2,r2发送给计算参与方1和计算参与方2。
步骤810与步骤510相同,具体的请参见步骤510中的描述。
步骤820:计算参与方1在本地计算u1和v1,并将u1和v1发送给计算参与方2,计算参与方2在本地计算w,并将w发送给计算参与方1。
作为示例,计算参与方1在本地计算u1=r1+x1+1/2,v1=r1+x1-1/2,并将u1和v1发送给计算参与方2。
作为示例,计算参与方2在本地计算w=r2+x2+x3,并将w发送给计算参与方1。
步骤830:计算参与方1和计算参与方2计算u和v。
对于计算参与方1而言,其在本地计算得到u1和v1,还从计算参与方2接收到w,因此,计算参与方1可以计算u=u1+w,也即,u=r1+x1+1/2+r2+x2+x3=r+x+1/2。计算参与方1还可以计算v=u1+w,也即,v=r1+x1-1/2+r2+x2+x3=r+x-1/2。
对于计算参与方2而言,其在本地计算得到w,还从计算参与方1接收到u1和v1,因此,计算参与方2可以u=u1+w,也即,u=r1+x1+1/2+r2+x2+x3=r+x+1/2。计算参与方2还可以计算v=u1+w,也即,v=r1+x1-1/2+r2+x2+x3=r+x-1/2。
步骤840:计算参与方1使用u和f1进行函数计算,得到g1,使用v和f1进行函数计算,得到h1,并将g1和h1以重复性秘密分享的方式分别分享给计算参与方1、计算参与方2、计算参与方3。
作为示例,计算参与方1可以将计算得到的u代入函数f1,计算得到的结果为g1,也即,g1=f1(u)。
计算参与方1将g1以重复性秘密分享的方式分别分享给计算参与方1、计算参与方2、计算参与方3。例如,计算参与方1得到g1的一部分份额,计算参与方2得到g1的一部分份额,计算参与方3得到g1的一部分份额。
作为示例,计算参与方1可以将计算得到的v代入函数f1,计算得到的结果为h1,也即,h1=f1(v)。
计算参与方1将h1以重复性秘密分享的方式分别分享给计算参与方1、计算参与方2、计算参与方3。例如,计算参与方1得到h1的一部分份额,计算参与方2得到h1的一部分份额,计算参与方3得到h1的一部分份额。
步骤850:计算参与方2使用u和f2进行函数计算,得到g2,使用v和f2进行函数计算,得到h2,并将g2和h2以重复性秘密分享的方式分别分享给计算参与方1、计算参与方2、计算参与方3。
作为示例,计算参与方2可以将计算得到的u代入函数f2,计算得到的结果为g2,也即,g2=f2(u)。
计算参与方1将g2以重复性秘密分享的方式分别分享给计算参与方1、计算参与方2、计算参与方3。例如,计算参与方1得到g2的一部分份额,计算参与方2得到g2的一部分份额,计算参与方3得到g2的一部分份额。
作为示例,计算参与方2可以将计算得到的v代入函数f2,计算得到的结果为h2,也即,h2=f2(v)。
计算参与方1将h2以重复性秘密分享的方式分别分享给计算参与方1、计算参与方2、计算参与方3。例如,计算参与方1得到h2的一部分份额,计算参与方2得到h2的一部分份额,计算参与方3得到h2的一部分份额。
步骤860:三个计算参与方分别根据g1的份额和g2的份额得到g的份额,根据h1的份额和h2的份额得到h的份额,并将g的份额和h的份额转换为y的份额。
本申请实施例中,由于h=x≤-1/2,g=x≤1/2,因此,g、h和y=Sigmoid(x)之间的转换关系如公式(9)所示。
[y]=(1-[g])*[h]*[x]+(1-[h]) (9)
其中,[y]表示y的份额,[g]表示g的份额,[x]表示x的份额,[h]表示h的份额。[g]的计算方法如公式(6)所示,[h]的计算方法如公式(10)所示。
[h]=[h1]+[h2] (10)
其中,[h1]表示h1的份额,[h2]表示h2的份额。
上述技术方案中,对于非线性阶段的激活函数的运算而言,通过重复性秘密分享和函数秘密分享结合的方式,由于计算参与方3在前面的步骤中没有参与计算,因此,可以降低神经网络训练时所需的通信量和计算量。
上文结合图1至图8,详细描述了本申请实施例提供的方法,下面将结合图9-图12,详细描述本申请装置的实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图9是本申请实施例提供的一种神经网络中激活函数的计算装置900的示意性框图。该装置900可以通过软件、硬件或者两者的结合实现。本申请实施例提供的装置900可以实现本申请实施例所示的方法流程,该装置900包括:获取模块910,处理模块920,其中,获取模块910用于第一计算参与方、第二计算参与方以及第三计算参与方分别获得第一输入的份额,其中,该第一输入为第一激活函数的输入信息,该第一输入的份额是将该第一输入以秘密分享的方式在该第一计算参与方、该第二计算参与方以及该第三计算参与方之间分享;处理模块920用于该第一计算参与方和该第二计算参与方分别根据各自获得的第一输入的份额计算得到第一输入的密文;该处理模块920还用于该第一计算参与方根据该第一输入的密文以及第一子函数确定第一函数结果,其中,该第一子函数是以函数秘密分享的方式对该第一激活函数进行拆分后得到的一个函数份额,该第一函数结果为该第一子函数的输出;该处理模块920还用于该第二计算参与方根据该第一输入的密文以及第二子函数确定第二函数结果,其中,该第二子函数是以该函数秘密分享的方式对该第一激活函数进行拆分后得到的另一个函数份额,该第二函数结果为该第二子函数的输出;该处理模块920还用于该第一计算参与方、该第二计算参与方以及该第三计算参与方根据各自获得的第一函数结果的份额,以及各自获得的第二函数结果的份额分别计算得到第一激活函数结果的份额,该第一计算参与方、该第二计算参与方以及该第三计算参与方各自计算得到的第一激活函数结果的份额的结合能够还原出第一激活函数结果,该第一激活函数结果是该第一激活函数的输出。
可选的,第一输入的份额是将第一输入以重复性秘密分享的方式在第一计算参与方、第二计算参与方以及第三计算参与方之间分享。
可选的,该处理模块920还用于该第三计算参与方在离线阶段以该函数秘密分享的方式对该第一激活函数进行拆分得到该第一子函数和该第二子函数;发送模块930用于该第三计算参与方将该第一子函数和该第二子函数分别发送给该第一计算参与方和该第二计算参与方。
可选的,该处理模块920还用于该第一计算参与方将该第一函数结果以秘密分享的方式分享给该第一计算参与方、该第二计算参与方以及该第三计算参与方,其中,该第一计算参与方、该第二计算参与方以及该第三计算参与方各自获得该第一函数结果的份额;该处理模块920还用于该第二计算参与方将该第二函数结果以秘密分享的方式分享给该第一计算参与方、该第二计算参与方以及该第三计算参与方,其中,该第一计算参与方、该第二计算参与方以及该第三计算参与方各自获得该第二函数结果的份额。
可选的,该第一计算参与方将该第一函数结果以重复性秘密分享的方式分享给该第一计算参与方、该第二计算参与方以及该第三计算参与方,该第二计算参与方将该第二函数结果以重复性秘密分享的方式分享给该第一计算参与方、该第二计算参与方以及该第三计算参与方。
可选的,该处理模块920具体用于:该第一计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到该第一激活函数结果的第一份额;该第二计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到该第一激活函数结果的第二份额;该第三计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到该第一激活函数结果的第三份额;其中,该第一激活函数结果的第一份额、该第一激活函数结果的第二份额以及该第一激活函数结果的第三份额的结合能够还原出该第一激活函数结果。
结合第二方面,在第二方面的某些实现方式中,该第一输入的密文是根据第一随机数对该第一输入进行盲化后得到的结果,该处理模块920具体用于该第一计算参与方根据第二随机数对该第一计算参与方获得的该第一输入的份额进行盲化,得到第一结果,并将该第一结果发送给该第二计算参与方,该第二随机数为该第一随机数的一个份额;该第二计算参与方根据第三随机数对该第二计算参与方获得的该第一输入的份额进行盲化,得到第二结果,并将该第二结果发送给该第一计算参与方,该第三随机数为该第一随机数的另一个份额;该第一计算参与方和该第二计算参与方分别根据该第一结果和该第二结果得到该第一输入的密文。
结合第二方面,在第二方面的某些实现方式中,该第一激活函数包括Relu激活函数,或Sigmoid激活函数。
这里的装置900可以以功能模块的形式体现。这里的术语“模块”可以通过软件和/或硬件形式实现,对此不作具体限定。
例如,“模块”可以是实现上述功能的软件程序、硬件电路或二者结合。示例性的,接下来以获取模块910为例,介绍获取模块910的实现方式。类似的,其他模块,例如处理模块920,发送模块930的实现方式可以参考获取模块910的实现方式。
获取模块910作为软件功能单元的一种举例,获取模块910可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,获取模块910可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
获取模块910作为硬件功能单元的一种举例,获取模块910可以包括至少一个计算设备,如服务器等。或者,获取模块910也可以是利用专用集成电路(application-specificintegrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
获取模块910包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。获取模块910包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,获取模块910包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
因此,在本申请的实施例中描述的各示例的模块,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
需要说明的是:上述实施例提供的装置在执行上述方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。例如,获取模块910可以用于执行上述方法中的任意步骤,处理模块920可以用于执行上述方法中的任意步骤,处理模块920,发送模块930可以用于执行上述方法中的任意步骤。获取模块910、处理模块920、发送模块930负责实现的步骤可根据需要指定,通过获取模块910、处理模块920、发送模块930分别实现上述方法中不同的步骤来实现上述装置的全部功能。
另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见上文中的方法实施例,这里不再赘述。
本申请实施例提供的方法可以由计算设备执行,该计算设备也可以被称为计算机系统。包括硬件层、运行在硬件层之上的操作系统层,以及运行在操作系统层上的应用层。该硬件层包括处理单元、内存和内存控制单元等硬件,随后对该硬件的功能和结构进行详细说明。该操作系统是任意一种或多种通过进程(process)实现业务处理的计算机操作系统,例如,Linux操作系统、Unix操作系统、Android操作系统、iOS操作系统或windows操作系统等。该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用程序。并且,可选地,该计算机系统是智能手机等手持设备,或个人计算机等终端设备,本申请并未特别限定,只要能够通过本申请实施例提供的方法即可。本申请实施例提供的方法的执行主体可以是计算设备,或者,是计算设备中能够调用程序并执行程序的功能模块。
下面结合图10,对本申请实施例提供的一种计算设备进行详细描述。
图10是本申请实施例提供的一种计算设备1500的架构示意图。该计算设备1500可以是服务器或者计算机或者其他具有计算能力的设备。图10所示的计算设备1500包括:至少一个处理器1510和存储器1520。
应理解,本申请不限定计算设备1500中的处理器、存储器的个数。
处理器1510执行存储器1520中的指令,使得计算设备1500实现本申请提供的方法。或者,处理器1510执行存储器1520中的指令,使得计算设备1500实现本申请提供的各功能模块,从而实现本申请提供的方法。
可选地,计算设备1500还包括通信接口1530。通信接口1530使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备1500与其他设备或通信网络之间的通信。
可选地,计算设备1500还包括系统总线1540,其中,处理器1510、存储器1520和通信接口1530分别与系统总线1540连接。处理器1510能够通过系统总线1540访问存储器1520,例如,处理器1510能够通过系统总线1540在存储器1520中进行数据读写或代码执行。该系统总线1540是快捷外设部件互连标准(peripheral component interconnectexpress,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述系统总线1540分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
一种可能的实现方式,处理器1510的功能主要是解释计算机程序的指令(或者说,代码)以及处理计算机软件中的数据。其中,该计算机程序的指令以及计算机软件中的数据能够保存在存储器1520或者缓存1516中。
可选地,处理器1510可能是集成电路芯片,具有信号的处理能力。作为示例而非限定,处理器1510是通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其中,通用处理器是微处理器等。例如,该处理器1510是中央处理单元(central processing unit,CPU)。
可选地,每个处理器1510包括至少一个处理单元1512和内存控制单元1514。
可选地,处理单元1512也称为核心(core)或内核,是处理器最重要的组成部分。处理单元1512是由单晶硅以一定的生产工艺制造出来的,处理器所有的计算、接受命令、存储命令、处理数据都由核心执行。处理单元分别独立地运行程序指令,利用并行计算的能力加快程序的运行速度。各种处理单元都具有固定的逻辑结构,例如,处理单元包括例如,一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元。
一种实现举例,内存控制单元1514用于控制存储器1520与处理单元1512之间的数据交互。具体地说,内存控制单元1514从处理单元1512接收内存访问请求,并基于该内存访问请求控制针对内存的访问。作为示例而非限定,内存控制单元是内存管理单元(memorymanagement unit,MMU)等器件。
一种实现举例,各内存控制单元1514通过系统总线进行针对存储器1520的寻址。并且在系统总线中配置仲裁器(图10中未示出),该仲裁器负责处理和协调多个处理单元1512的竞争访问。
一种实现举例,处理单元1512和内存控制单元1514通过芯片内部的连接线,例如地址线,通信连接,从而实现处理单元1512和内存控制单元1514之间的通信。
可选地,每个处理器1510还包括缓存1516,其中,缓存是数据交换的缓冲区(称作cache)。当处理单元1512要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从存储器中找。由于缓存的运行速度比存储器快得多,故缓存的作用就是帮助处理单元1512更快地运行。
存储器1520能够为计算设备1500中的进程提供运行空间,例如,存储器1520中保存用于生成进程的计算机程序(具体地说,是程序的代码)。计算机程序被处理器运行而生成进程后,处理器在存储器1520中为该进程分配对应的存储空间。进一步的,上述存储空间进一步包括文本段、初始化数据段、位初始化数据段、栈段、堆段等等。存储器1520在上述进程对应的存储空间中保存进程运行期间产生的数据,例如,中间数据,或过程数据等等。
可选地,存储器也称为内存,其作用是用于暂时存放处理器1510中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,处理器1510就会把需要运算的数据调到内存中进行运算,当运算完成后处理单元1512再将结果传送出来。
作为示例而非限定,存储器1520是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasablePROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(doubledata rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。应注意,本文描述的系统和方法的存储器1520旨在包括但不限于这些和任意其它适合类型的存储器。
以上列举的计算设备1500的结构仅为示例性说明,本申请并未限定于此,本申请实施例的计算设备1500包括现有技术中计算机系统中的各种硬件,例如,计算设备1500还包括除存储器1520以外的其他存储器,例如,磁盘存储器等。本领域的技术人员应当理解,计算设备1500还可以包括实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当理解,上述计算设备1500还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,上述计算设备1500也可仅仅包括实现本申请实施例所必须的器件,而不必包括图10中所示的全部器件。
本申请实施例还提供了一种计算设备集群。该计算设备集群包括至少一台计算设备。该计算设备可以是服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图11所示,所述计算设备集群包括至少一个计算设备1500。计算设备集群中的一个或多个计算设备1500中的存储器1520中可以存有相同的用于执行上述方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备1500中的存储器1520也可以分别存有用于执行上述方法的部分指令。换言之,一个或多个计算设备1500的组合可以共同执行上述方法的指令。
需要说明的是,计算设备集群中的不同的计算设备1500中的存储器1520可以存储不同的指令,分别用于执行上述装置的部分功能。也即,不同的计算设备1500中的存储器1520存储的指令可以实现将上述装置中的一个或多个模块的功能。
在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图12示出了一种可能的实现方式。如图12所示,两个计算设备1500A和1500B之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与所述网络进行连接。
应理解,图12中示出的计算设备1500A的功能也可以由多个计算设备1500完成。同样,计算设备1500B的功能也可以由多个计算设备1500完成。
本实施例中,还提供了一种包含指令的计算机程序产品,所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当其在计算设备上运行时,使得计算设备执行上述所提供的方法,或者使得该计算设备实现上述提供的装置的功能。
本实施例中,还提供了一种包含指令的计算机程序产品,所述计算机程序产品可以是包含指令的,能够运行在计算设备集群上或被储存在任何可用介质中的软件或程序产品。当其由计算设备集群运行时,使得计算设备集群执行上述所提供的方法,或者使得该计算设备集群实现上述提供的装置的功能。
本实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,当计算机可读存储介质中的指令在计算设备上被执行时,使得计算设备执行上述所提供的方法。
本实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,当计算机可读存储介质中的指令由计算设备集群执行时,使得计算设备集群执行上述所提供的方法。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种神经网络中激活函数的计算方法,其特征在于,所述方法包括:
第一计算参与方、第二计算参与方以及第三计算参与方分别获得第一输入的份额,其中,所述第一输入为第一激活函数的输入信息,所述第一输入的份额是将所述第一输入以秘密分享的方式在所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方之间分享;
所述第一计算参与方和所述第二计算参与方分别根据各自获得的第一输入的份额计算得到第一输入的密文;
所述第一计算参与方根据所述第一输入的密文以及第一子函数确定第一函数结果,其中,所述第一子函数是以函数秘密分享的方式对所述第一激活函数进行拆分后得到的一个函数份额,所述第一函数结果为所述第一子函数的输出;
所述第二计算参与方根据所述第一输入的密文以及第二子函数确定第二函数结果,其中,所述第二子函数是以所述函数秘密分享的方式对所述第一激活函数进行拆分后得到的另一个函数份额,所述第二函数结果为所述第二子函数的输出;
所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方根据各自获得的第一函数结果的份额,以及各自获得的第二函数结果的份额分别计算得到第一激活函数结果的份额,所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方各自计算得到的第一激活函数结果的份额的结合能够还原出第一激活函数结果,所述第一激活函数结果是所述第一激活函数的输出。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第三计算参与方在离线阶段以所述函数秘密分享的方式对所述第一激活函数进行拆分得到所述第一子函数和所述第二子函数;
所述第三计算参与方将所述第一子函数和所述第二子函数分别发送给所述第一计算参与方和所述第二计算参与方。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述第一计算参与方将所述第一函数结果以秘密分享的方式分享给所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方,其中,所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方各自获得所述第一函数结果的份额;
所述第二计算参与方将所述第二函数结果以秘密分享的方式分享给所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方,其中,所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方各自获得所述第二函数结果的份额。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方分别根据所述第一函数结果的份额,以及所述第二函数结果的份额计算得到第一激活函数结果的份额,包括:
所述第一计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到所述第一激活函数结果的第一份额;
所述第二计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到所述第一激活函数结果的第二份额;
所述第三计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到所述第一激活函数结果的第三份额;
其中,所述第一激活函数结果的第一份额、所述第一激活函数结果的第二份额以及所述第一激活函数结果的第三份额的结合能够还原出所述第一激活函数结果。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述第一输入的密文是根据第一随机数对所述第一输入进行盲化后得到的结果,
所述第一计算参与方和所述第二计算参与方分别根据各自获得的第一输入的份额计算得到第一输入的密文包括:
所述第一计算参与方根据第二随机数对所述第一计算参与方获得的所述第一输入的份额进行盲化,得到第一结果,并将所述第一结果发送给所述第二计算参与方,所述第二随机数为所述第一随机数的一个份额;
所述第二计算参与方根据第三随机数对所述第二计算参与方获得的所述第一输入的份额进行盲化,得到第二结果,并将所述第二结果发送给所述第一计算参与方,所述第三随机数为所述第一随机数的另一个份额;
所述第一计算参与方和所述第二计算参与方分别根据所述第一结果和所述第二结果得到所述第一输入的密文。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述第一激活函数包括Relu激活函数,或Sigmoid激活函数。
7.一种神经网络中激活函数的计算装置,其特征在于,所述装置包括:
获取模块,用于第一计算参与方、第二计算参与方以及第三计算参与方分别获得第一输入的份额,其中,所述第一输入为第一激活函数的输入信息,所述第一输入的份额是将所述第一输入以秘密分享的方式在所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方之间分享;
处理模块,用于所述第一计算参与方和所述第二计算参与方分别根据各自获得的第一输入的份额计算得到第一输入的密文;
所述处理模块,还用于所述第一计算参与方根据所述第一输入的密文以及第一子函数确定第一函数结果,其中,所述第一子函数是以函数秘密分享的方式对所述第一激活函数进行拆分后得到的一个函数份额,所述第一函数结果为所述第一子函数的输出;
所述处理模块,还用于所述第二计算参与方根据所述第一输入的密文以及第二子函数确定第二函数结果,其中,所述第二子函数是以所述函数秘密分享的方式对所述第一激活函数进行拆分后得到的另一个函数份额,所述第二函数结果为所述第二子函数的输出;
所述处理模块,还用于所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方根据各自获得的第一函数结果的份额,以及各自获得的第二函数结果的份额分别计算得到第一激活函数结果的份额,所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方各自计算得到的第一激活函数结果的份额的结合能够还原出第一激活函数结果,所述第一激活函数结果是所述第一激活函数的输出。
8.根据权利要求7所述的装置,其特征在于,
所述处理模块,还用于所述第三计算参与方在离线阶段以所述函数秘密分享的方式对所述第一激活函数进行拆分得到所述第一子函数和所述第二子函数;
发送模块,用于所述第三计算参与方将所述第一子函数和所述第二子函数分别发送给所述第一计算参与方和所述第二计算参与方。
9.根据权利要求7或8所述的方法,其特征在于,
所述处理模块,还用于所述第一计算参与方将所述第一函数结果以秘密分享的方式分享给所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方,其中,所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方各自获得所述第一函数结果的份额;
所述处理模块,还用于所述第二计算参与方将所述第二函数结果以秘密分享的方式分享给所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方,其中,所述第一计算参与方、所述第二计算参与方以及所述第三计算参与方各自获得所述第二函数结果的份额。
10.根据权利要求7至9中任一项所述的装置,其特征在于,所述处理模块具体用于:
所述第一计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到所述第一激活函数结果的第一份额;
所述第二计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到所述第一激活函数结果的第二份额;
所述第三计算参与方根据其获得的第一函数结果的份额和第二函数结果的份额得到所述第一激活函数结果的第三份额;
其中,所述第一激活函数结果的第一份额、所述第一激活函数结果的第二份额以及所述第一激活函数结果的第三份额的结合能够还原出所述第一激活函数结果。
11.根据权利要求7至10中任一项所述的装置,其特征在于,所述第一输入的密文是根据第一随机数对所述第一输入进行盲化后得到的结果,所述处理模块具体用于:
所述第一计算参与方根据第二随机数对所述第一计算参与方获得的所述第一输入的份额进行盲化,得到第一结果,并将所述第一结果发送给所述第二计算参与方,所述第二随机数为所述第一随机数的一个份额;
所述第二计算参与方根据第三随机数对所述第二计算参与方获得的所述第一输入的份额进行盲化,得到第二结果,并将所述第二结果发送给所述第一计算参与方,所述第三随机数为所述第一随机数的另一个份额;
所述第一计算参与方和所述第二计算参与方分别根据所述第一结果和所述第二结果得到所述第一输入的密文。
12.根据权利要求7至11中任一项所述的装置,其特征在于,所述第一激活函数包括Relu激活函数,或Sigmoid激活函数。
13.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;
所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如权利要求1至6中任一项所述的方法。
14.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备集群运行时,使得所述计算设备集群执行如权利要求的1至6中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如权利要求1至6中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310551642 | 2023-05-16 | ||
CN202310551642X | 2023-05-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117114059A true CN117114059A (zh) | 2023-11-24 |
Family
ID=88795566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310926879.1A Pending CN117114059A (zh) | 2023-05-16 | 2023-07-26 | 神经网络中激活函数的计算方法、装置以及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117114059A (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109194507A (zh) * | 2018-08-24 | 2019-01-11 | 曲阜师范大学 | 非交互式的保护隐私神经网络预测方法 |
CN110569227A (zh) * | 2019-08-09 | 2019-12-13 | 阿里巴巴集团控股有限公司 | 模型参数确定方法、装置和电子设备 |
CN111859267A (zh) * | 2020-06-22 | 2020-10-30 | 复旦大学 | 基于bgw协议的隐私保护机器学习激活函数的运算方法 |
CN112118096A (zh) * | 2020-09-04 | 2020-12-22 | 中国科学院大学 | 一种将特定数值作为分享份额的秘密分享方法 |
US20210042640A1 (en) * | 2019-08-09 | 2021-02-11 | Advanced New Technologies Co., Ltd. | Determining model parameters using secret sharing |
CN113452649A (zh) * | 2020-03-24 | 2021-09-28 | 阿里巴巴集团控股有限公司 | 一种安全多方计算方法、设备、系统及存储介质 |
CN113591146A (zh) * | 2021-07-29 | 2021-11-02 | 北京航空航天大学 | 基于合作的高效安全两方计算系统及计算方法 |
CN113780552A (zh) * | 2021-09-09 | 2021-12-10 | 浙江数秦科技有限公司 | 一种双向隐私保护的安全多方计算方法 |
CN113792338A (zh) * | 2021-09-09 | 2021-12-14 | 浙江数秦科技有限公司 | 一种基于神经网络模型的安全多方计算方法 |
CN114118368A (zh) * | 2021-11-22 | 2022-03-01 | 上海交通大学 | 基于Shamir安全多方计算的隐私保护多方强化学习系统及方法 |
CN114648130A (zh) * | 2022-02-07 | 2022-06-21 | 北京航空航天大学 | 纵向联邦学习方法、装置、电子设备及存储介质 |
CN115101131A (zh) * | 2022-05-23 | 2022-09-23 | 清华大学 | 一种基于多方安全计算的基因序列对齐方法及系统 |
CN115964738A (zh) * | 2022-12-07 | 2023-04-14 | 华为技术有限公司 | 一种基于多方安全计算的数据处理方法及装置 |
-
2023
- 2023-07-26 CN CN202310926879.1A patent/CN117114059A/zh active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109194507A (zh) * | 2018-08-24 | 2019-01-11 | 曲阜师范大学 | 非交互式的保护隐私神经网络预测方法 |
CN110569227A (zh) * | 2019-08-09 | 2019-12-13 | 阿里巴巴集团控股有限公司 | 模型参数确定方法、装置和电子设备 |
US20210042640A1 (en) * | 2019-08-09 | 2021-02-11 | Advanced New Technologies Co., Ltd. | Determining model parameters using secret sharing |
CN113452649A (zh) * | 2020-03-24 | 2021-09-28 | 阿里巴巴集团控股有限公司 | 一种安全多方计算方法、设备、系统及存储介质 |
CN111859267A (zh) * | 2020-06-22 | 2020-10-30 | 复旦大学 | 基于bgw协议的隐私保护机器学习激活函数的运算方法 |
CN112118096A (zh) * | 2020-09-04 | 2020-12-22 | 中国科学院大学 | 一种将特定数值作为分享份额的秘密分享方法 |
CN113591146A (zh) * | 2021-07-29 | 2021-11-02 | 北京航空航天大学 | 基于合作的高效安全两方计算系统及计算方法 |
CN113780552A (zh) * | 2021-09-09 | 2021-12-10 | 浙江数秦科技有限公司 | 一种双向隐私保护的安全多方计算方法 |
CN113792338A (zh) * | 2021-09-09 | 2021-12-14 | 浙江数秦科技有限公司 | 一种基于神经网络模型的安全多方计算方法 |
CN114118368A (zh) * | 2021-11-22 | 2022-03-01 | 上海交通大学 | 基于Shamir安全多方计算的隐私保护多方强化学习系统及方法 |
CN114648130A (zh) * | 2022-02-07 | 2022-06-21 | 北京航空航天大学 | 纵向联邦学习方法、装置、电子设备及存储介质 |
CN115101131A (zh) * | 2022-05-23 | 2022-09-23 | 清华大学 | 一种基于多方安全计算的基因序列对齐方法及系统 |
CN115964738A (zh) * | 2022-12-07 | 2023-04-14 | 华为技术有限公司 | 一种基于多方安全计算的数据处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
ISHAK MERAOUCHE 等: "Learning Multi-Party Adversarial Encryption and Its Application to Secret Sharing", 《IEEE ACCESS》, 31 December 2022 (2022-12-31), pages 121329 - 121339 * |
董业 等: "基于秘密分享和梯度选择的高效安全联邦学习", 《计算机研究与发展》, vol. 57, no. 10, 31 December 2020 (2020-12-31), pages 2241 - 2250 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240113858A1 (en) | Systems and Methods for Performing Secure Machine Learning Analytics Using Homomorphic Encryption | |
WO2021068444A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
Dong et al. | FLOD: Oblivious defender for private Byzantine-robust federated learning with dishonest-majority | |
CN113065145B (zh) | 一种基于秘密共享和随机扰动的隐私保护线性回归方法 | |
CN112989399B (zh) | 数据处理系统及方法 | |
EP4147414A1 (en) | Quantum computing machine learning for security threats | |
CN113129149A (zh) | 基于区块链和安全多方计算的交易风险识别方法和装置 | |
US20210409220A1 (en) | Distributed machine learning via secure multi-party computation and ensemble learning | |
CN113761563A (zh) | 数据交集计算方法、装置及电子设备 | |
US11569985B2 (en) | Preserving inter-party data privacy in global data relationships | |
Sana et al. | Enhanced security in cloud computing using neural network and encryption | |
CN114282692A (zh) | 一种纵向联邦学习的模型训练方法及系统 | |
Zhu et al. | Securebinn: 3-party secure computation for binarized neural network inference | |
CN113792890A (zh) | 一种基于联邦学习的模型训练方法及相关设备 | |
CN112000978A (zh) | 隐私数据的输出方法、数据处理系统及存储介质 | |
CN116743376A (zh) | 基于高效密文混淆技术的多方秘密分享数据隐私比较方法 | |
CN117114059A (zh) | 神经网络中激活函数的计算方法、装置以及计算设备 | |
CN115423208A (zh) | 基于隐私计算的电子保函价值预测方法及装置 | |
Sumathi et al. | Scale-based secured sensitive data storage for banking services in cloud | |
CN117294425A (zh) | 数据处理的方法、系统以及计算设备 | |
Dong et al. | FLEXBNN: fast private binary neural network inference with flexible bit-width | |
CN111460514B (zh) | 数据匹配方法、装置和电子设备 | |
CN112765898B (zh) | 多任务联合训练模型方法、系统、电子设备和存储介质 | |
CN111460515B (zh) | 数据匹配方法、装置和电子设备 | |
CN113011459B (zh) | 模型训练方法、装置和计算设备 |
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 |