一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

秘密归一化指数函数计算系统、秘密归一化指数函数计算装置、秘密归一化指数函数计算方法、秘密神经网络计算系统、秘密神经网络学习系统、程序与流程

2022-03-26 07:03:52 来源:中国专利 TAG:
1.本发明涉及秘密计算技术,特别是涉及对归一化指数(softmax)函数进行秘密计算的技术。
背景技术
::2.作为用于对归一化指数函数进行秘密计算的现有方法,有非专利文献1所记载的secureml、非专利文献2所记载的securenn。这里,归一化指数函数是由下式表示的非线性函数。3.[公式1][0004][0005]所谓秘密计算,是不将被加密的数值复原而得到指定的运算的运算结果的方法(例如参照参考非专利文献1)。在参考非专利文献1的方法中,能够进行将能复原数值的多个信息分散到三个秘密计算装置这样的加密,并且不将数值复原,而将加减运算、常数和、乘法运算、常数倍、逻辑运算(非、与、或、异或)、数据形式转换(整数、二进制数)的结果在被分散到三个秘密计算装置的状态、即保持被加密的状态下进行保持。一般来说,分散数量不限于3而能够设为w(w是3以上的规定的常数),通过由w个秘密计算装置进行的协调计算来实现秘密计算的协议称为多方协议。[0006](参考非专利文献1:千田浩司,濱田浩気,五十嵐大,高橋克巳,”軽量検証可能3パーティ秘匿関数計算の再考”(千田浩司,滨田浩气,五十岚大,高桥克己,”浅析可验证3方隐匿函数计算的再探讨”),incss,2010.)[0007]现有技术文献[0008]非专利文献[0009]非专利文献1:paymanmohasselandyupengzhang,”secureml:asystemforscalableprivacy-preservingmachinelearning”,2017ieeesymposiumonsecurityandprivacy,pp.19-38,2017.[0010]非专利文献2:sameerwagh,divyagupta,andnishanthchandran,”securenn:3-partysecurecomputationforneuralnetworktraining”,proceedingsonprivacyenhancingtechnologies;2019(3):26-49,2019.技术实现要素:[0011]发明要解决的课题[0012]但是,从式(1)可知,由于归一化指数函数包含秘密计算不擅长的指数函数和除法的计算,所以难以兼顾处理速度和精度这两者来进行秘密计算。在现有方法中,由于指数函数exp(x)的近似使用函数relu(x)=max(0,x),所以其近似精度低,特别是随着x变为大的值,误差变得非常大,归一化指数函数的计算的精度低。[0013]因此,本发明的目的在于提供一种高速且高精度地对归一化指数函数进行秘密计算的技术。[0014]用于解决课题的手段[0015]本发明的一个方式是一种秘密归一化指数函数计算系统,将map1设为由表示函数exp(x)的定义域的参数(a1,…,ak)和表示值域的参数(α1,…,αk)定义的秘密批量映射,其中,k是2以上的整数,a1,…,ak是满足a1<…<ak的实数,并将map2设为由表示函数1/x的定义域的参数(b1,…,bl)和表示值域的参数(β1,…,βl)定义的秘密批量映射,其中,l是2以上的整数,b1,…,bl是满足b1<…<bl的实数,所述秘密归一化指数函数计算系统由3个以上的秘密归一化指数函数计算装置构成,并根据输入向量(u1,…,uj)的份额([[u1]],…,[[uj]]),计算针对输入向量(u1,…,uj)的归一化指数函数的值(softmax(u1),…,softmax(uj))的份额([[softmax(u1)]],…,[softmax(uj)]]),其中,j为1以上的整数,所述秘密归一化指数函数计算系统包括:减法单元,根据所述份额([[u1]],…,[[uj]]),计算份额([[u1-u1]],[[u2-u1]],…,[[uj-u1]],[[u1-u2]],…,[[uj-u2]],…,[[u1-uj]],…,[[uj-uj]]);第一秘密批量映射计算单元,根据所述份额([[u1-u1]],[[u2-u1]],…,[[uj-u1]],[[u1-u2]],…,[[uj-u2]],…,[[u1-uj]],…,[[uj-uj]]),计算map1([[u1-u1]],[[u2-u1]],…,[[uj-u1]],[[u1-u2]],…,[[uj-u2]],…,[[u1-uj]],…,[[uj-uj]]))=([[αf(1,1)]],[[αf(2,1)]],…,[[αf(j,1)]],[[αf(1,2)]],…,[[αf(j,2)]],…,[[αf(1,j)]],…,[[αf(j,j)]]),并设为([[exp(u1-u1)]],[[exp(u2-u1)]],…,[[exp(uj-u1)]],[[exp(u1-u2)]],…,[[exp(uj-u2)]],…,[[exp(u1-uj)]],…,[[exp(uj-uj)]])=([[αf(1,1)]],[[αf(2,1)]],…,[[αf(j,1)]],[[αf(1,2)]],…,[[αf(j,2)]],…,[[αf(1,j)]],…,[[αf(j,j)]]),其中,f(i,j)(1≤i,j≤k)为ap≤ui-uj<ap 1的p;加法单元,根据所述份额([[exp(u1-u1)]],[[exp(u2-u1)]],…,[[exp(uj-u1)]],[[exp(u1-u2)]],…,[[exp(uj-u2)]],…,[[exp(u1-uj)]],…,[[exp(uj-uj)]]),计算份额([[∑j=1jexp(uj-u1)]],[[∑j=1jexp(uj-u2)]],…,[[∑j=1jexp(uj-uj)]]);及第二秘密批量映射计算单元,根据所述份额([[∑j=1jexp(uj-u1)]],[[∑j=1jexp(uj-u2)]],…,[[∑j=1jexp(uj-uj)]]),计算map2(([[∑j=1jexp(uj-u1)]],[[∑j=1jexp(uj-u2)]],…,[[∑j=1jexp(uj-uj)]]))=([[βg(1)]],[[βg(2)]],…,[[βg(j)]]),并设为([[softmax(u1)]],[[softmax(u2)]],…,[softmax(uj)]])=([[βg(1)]],[[βg(2)]],…,[[βg(j)]]),其中,g(i)(1≤i≤l)为bp≤∑j=1jexp(uj-ui)<bp 1的p。[0016]发明效果[0017]根据本发明,能够高速且高精度地对归一化指数函数进行秘密计算。附图说明[0018]图1是表示秘密归一化指数函数计算系统10的结构的框图。[0019]图2是表示秘密归一化指数函数计算装置100i的结构的框图。[0020]图3是表示秘密归一化指数函数计算系统10的动作的流程图。[0021]图4是表示秘密神经网络计算系统20的结构的框图。[0022]图5是表示秘密神经网络计算装置200i的结构的框图。[0023]图6是表示秘密神经网络计算系统20的动作的流程图。[0024]图7是表示输出层计算部230i的结构的框图。[0025]图8是表示输出层计算单元230的动作的流程图。[0026]图9是表示秘密神经网络学习系统30的结构的框图。[0027]图10是表示秘密神经网络学习装置300i的结构的框图。[0028]图11是表示秘密神经网络学习系统30的动作的流程图。[0029]图12是表示正向传播计算部310i的结构的框图。[0030]图13是表示正向传播计算单元310的动作的流程图。[0031]图14是表示实现本发明的实施方式中的各装置的计算机的功能结构的一例的图。具体实施方式[0032]以下,对本发明的实施方式进行详细说明。另外,对具有相同功能的结构部标注相同的标号,并省略重复说明。[0033]在说明各实施方式之前,先对本说明书中的表述方法进行说明。[0034]_(下划线)表示下标。例如,xy_z表示yz是针对x的上标,xy_z表示yz是针对x的下标。[0035]另外,针对某文字x的^x或~x这样的上标”^”或”~”本来应该记载于”x”的正上方,但在说明书的记载表述的制约上,记载为^x或~x。[0036]《技术背景》[0037]《准备》[0038]本技术实施方式的发明中的秘密计算由已有的秘密计算上的运算的组合构建。该秘密计算所需要的运算是隐匿化、加法运算、乘法运算、秘密批量映射、右移位。以下,对各运算进行说明。[0039][隐匿化][0040]将[[x]]设为将x以秘密分散进行了隐匿后的值(以下,称为x的份额(share))。秘密分散方法可以使用任意的方法。例如,可以使用gf(261-1)上的shamir秘密分散,z2上的复制秘密分散。[0041]也可以在某一个算法中将多个秘密分散方法组合使用。在该情况下,设为适当地相互变换的方法。[0042]另外,对于n维向量→x=(x1,…,xn),设[[→x]:=([x1],…,[xn])。即,[[→x]是将→x的第n元素xn的份额[xn]作为第n元素的向量。同样地,对于m×n矩阵a=(am,n)(1≤m≤m,1≤n≤n),也将[[a]]设为将a的(m,n)元素am,n的份额[[am,n]]作为(m,n)元素的矩阵。这里,a:=b表示将a用b进行定义。[0043]另外,将x称为[x]的明文。[0044]作为根据x求出[[x]]的方法(隐匿化)、根据[[x]]求出x的方法(复原),具体而言,有参考非专利文献1、参考非专利文献2所记载的方法。[0045](参考非专利文献2:shamir,a.,”howtoshareasecret”,communicationsoftheacm,vol.22,no.11,pp.612-613,1979.)[0046][加法运算、乘法运算][0047]基于秘密计算的加法运算[[x]] [[y]]将[[x]]、[[y]]设为输入,并输出[[x y]]。基于秘密计算的乘法运算[[x]]×[[y]](mul([[x]],[[y]]))将[[x]]、[[y]]设为输入,并输出[[x×y]]。[0048]另外,也可以是[[x]]、[[y]]的任一个未被隐匿的值(以下,称为公开值)。例如,也可以将β、γ设为公开值,将[[x]]、β作为输入,并输出[[x β]],或者将γ、[[y]]作为输入,并输出[[γ×y]]。[0049]作为加法运算、乘法运算的具体的方法,有参考非专利文献3、参考非专利文献4所记载的方法。[0050](参考非专利文献3:ben-or,m.,goldwasser,s.andwigderson,a.,”completenesstheoremsfornon-cryptographicfault-tolerantdistributedcomputation”,proceedingsofthetwentiethannualacmsymposiumontheoryofcomputing,acm,pp.1-10,1988.)[0051](参考非专利文献4:gennaro,r.,rabin,m.o.andrabin,t.,”simpliedvssandfast-trackmultipartycomputationswithapplicationstothresholdcryptography”,proceedingsoftheseventeenthannualacmsymposiumonprinciplesofdistributedcomputing,acm,pp.101-111,1998.)[0052][秘密批量映射][0053]秘密批量映射是计算查找表的功能,是可以任意决定成为计算对象的函数的定义域和值域的技术。秘密批量映射以向量为单位进行处理,因此具有针对多个输入进行相同的处理时的效率高这样的性质。秘密批量映射map是如下定义的函数。[0054]秘密批量映射map将向量→x=(x1,…,xn)的份额[[→x]]=([[x1],…,[xn]])作为输入,并使用表示函数f(x)的定义域的参数(a1,…,ak)和表示值域的参数(b1,…,bk)(其中,a1,…,ak,b1,…,bk是实数,并且满足a1<…<ak),输出对向量的各元素的份额进行映射所得的份额,即,输出对于1≤n≤n,ap≤xn<ap 1且yn=bp这样的[[→y]]:=([[y1],…,[yn]])。[0055]例如,可以使用参考非专利文献5所记载的秘密批量映射的算法。[0056](参考非专利文献5:濱田浩気,五十嵐大,千田浩司,”秘匿計算上の一括写像アルゴリズム”,電子情報通信学会論文誌(滨田浩气,五十岚大,千田浩司,”隐匿计算上的批量映射算法”,电子信息通信学会论文志)a,vol.j96-a,no.4,pp.157-165,2013.)[0057][右移位][0058]右移位rshift将向量→x=(x1,…,xn)的份额[[→x]]=([[x1],…,[xn]])和公开值t作为输入,并输出将份额[[x→]]的各元素[[xn]]算术右移位t比特后的[[→y]]:=([[y1],…,[yn]])。这里,算术右移位是用符号位而不是0来填充左侧的移位。通过使用逻辑右移位rlshift,能够如下式那样计算rshift([a×2n],n-m)=[a×2m](参照参考非专利文献6)。[0059][公式2][0060][[a'×2n]]=[[a×2n]] a×2n(a≥|a|)[0061][[a'×2m]]=rlshift([[a'×2n]],n-m)[0062][[a×2m]]=[[a'×2m]]-a×2m[0063](参考非专利文献6:三品気吹,五十嵐大,濱田浩気,菊池亮.”高精度かつ高効率な秘密ロジスティック回帰の設計と実装”(三品气吹,五十岚大,滨田浩气,菊池亮.”高精度且高效率的秘密逻辑回归的设计与实现”),incss,2018.)[0064]《基于秘密批量映射的归一化指数函数的秘密计算》[0065]在本技术实施方式的发明中,为了在将向量(u1,…,uj)隐匿的状态下计算归一化指数函数而使用秘密批量映射。从式(1)可知,由于归一化指数函数具有多个输入,所以与以向量为单位进行处理这样的秘密批量映射的性质相容性良好。但是,由于秘密批量映射的处理时间与查找表(定义域和值域)的大小成比例,所以计算精度的高低与处理速度成为折衷的关系。[0066]具体而言,在本技术实施方式的发明中,使用对函数exp(x)进行计算的秘密批量映射map1和对函数1/x进行计算的秘密批量映射map2来实现归一化指数函数的秘密计算。为此,代替式(1),考虑将式(1)的分母和分子都除以exp(ui)而得到的下式。[0067][公式3][0068][0069]并且,通过以下的过程,对归一化指数函数的值softmax(ui)的份额[[softmax(ui)]]进行计算。[0070](1)首先,对于j=1,2,…,j,计算[[uj-ui]]。[0071](2)接着,将([[u1-ui]],[[u2-ui]],…,[[uj-ui]])输入到秘密批量映射map1,得到([[exp(u1-ui)]],[[exp(u2-ui)]],…,[[exp(uj-ui)]])作为输出结果。[0072](3)通过将(2)的输出结果([[exp(u1-ui)]],[[exp(u2-ui)]],…,[[exp(uj-ui)]])全部相加,得到[[∑j=1jexp(uj-ui)]]。[0073](4)最后,将加法运算结果[[∑j=1jexp(uj-ui)]]输入到秘密批量映射map2,得到[[softmax(ui)]]。[0074]这里,如果对于所有的i=1、2,…,j进行上述(1)~(4)的处理,则能够通过秘密批量映射map1和秘密批量映射map2分别汇总计算([[exp(u1-u1)]],[[exp(u2-u1)]],…,[[exp(uj-u1)]],[[exp(u1-u2)]],…,[[exp(uj-u2)]],…,[[exp(u1-uj)]],…,[[exp(uj-uj)]])和([[1/∑j=1jexp(uj-u1)]],[[1/∑j=1jexp(uj-u2)]],…,[[1/∑j=1jexp(uj-uj)]]),由此能够非常高效地实现([[softmax(u1)]],…,[softmax(uj)]])的计算。即,通过两次秘密批量映射的计算,能够实现根据([[u1]],…,[[uj]])计算([[softmax(u1)]],…,[[softmax(uj)]])的归一化指数函数的秘密计算。[0075]《与查找表的设计相关的研究》[0076]如上所述,归一化指数函数的计算精度的高低与处理速度处于折衷的关系。因此,为了在保持一定程度的计算精度的同时提高处理速度,需要设计适当大小的查找表,即,需要设定表示定义域的参数和表示值域的参数。因此,为了查找表的适当的设计,利用“归一化指数函数满足0≤softmax(ui)≤1”这样的性质。[0077]根据上述性质可知,对函数1/x进行计算的秘密批量映射map2的值域为[0,1],因此只要创建将秘密批量映射map2的值域设为[0,1]的查找表即可。因此,在使用定点运算u1]],…,[[uj-u1]],[[u1-u2]],…,[[uj-u2]],…,[[u1-uj]],…,[[uj-uj]])。[0086]在s120中,第一秘密批量映射计算单元120根据份额([[u1-u1]],[[u2-u1]],…,[[uj-u1]],[[u1-u2]],…,[[uj-u2]],…,[[u1-uj]],…,[[uj-uj]]),计算map1([[u1-u1]],[[u2-u1]],…,[[uj-u1]],[[u1-u2]],…,[[uj-u2]],…,[[u1-uj]],…,[[uj-uj]]))=([[αf(1,1)]],[[αf(2,1)]],…,[[αf(j,1)]],[[αf(1,2)]],…,[[αf(j,2)]],…,[[αf(1,j)]],…,[[αf(j,j)]])(其中,f(i,j)(1≤i,j≤k)为ap≤ui-uj<ap 1的p),并设为([[exp(u1-u1)]],[[exp(u2-u1)]],…,[[exp(uj-u1)]],[[exp(u1-u2)]],…,[[exp(uj-u2)]],…,[[exp(u1-uj)]],…,[[exp(uj-uj)]])=([[αf(1,1)]],[[αf(2,1)]],…,[[αf(j,1)]],[[αf(1,2)]],…,[[αf(j,2)]],…,[[αf(1,j)]],…,[[αf(j,j)]])。[0087]在s130中,加法单元130根据份额([[exp(u1-u1)]],[[exp(u2-u1)]],…,[[exp(uj-u1)]],[[exp(u1-u2)]],…,[[exp(uj-u2)]],…,[[exp(u1-uj)]],…,[[exp(uj-uj)]]),计算份额([[∑j=1jexp(uj-u1)]],[[∑j=1jexp(uj-u2)]],…,[[∑j=1jexp(uj-uj)]])。[0088]在s140中,第二秘密批量映射计算单元140根据份额([[∑j=1jexp(uj-u1)]],[[∑j=1jexp(uj-u2)]],…,[[∑j=1jexp(uj-uj)]]),计算map2(([[∑j=1jexp(uj-u1)]],[[∑j=1jexp(uj-u2)]],…,[[∑j=1jexp(uj-uj)]]))=([[βg(1)]],[[βg(2)]],…,[[βg(j)]])(其中,g(i)(1≤i≤l)为bp≤∑j=1jexp(uj-ui)<bp 1的p),并设为([[softmax(u1)]],[[softmax(u2)]],…,[softmax(uj)]])=([[βg(1)]],[[βg(2)]],…,[[βg(j)]])。[0089](秘密批量映射的定义域和值域的设定例)[0090]如在<技术背景》中所说明的那样,在使用定点运算进行秘密计算的情况下,可以将表示秘密批量映射map1的值域的参数α1、αk分别设为α1=0、αk=2b_y(其中,by表示对归一化指数函数的输出的精度进行表示的定点的小数部分的比特数)。[0091]通过这样设定,能够防止对不在秘密计算中使用的无用的范围的值进行记录的情况,秘密批量映射的计算中的查找表的检索也变快。[0092]根据本实施方式的发明,能够高速且高精度地对归一化指数函数进行秘密计算。这里,秘密批量映射map1和map2的定义域和值域可以任意设定,所以可以根据需要的精度和处理速度来决定。在本实施方式的发明中,与对指数函数进行近似的以往的方法不同,能够设定任意的精度,因此能够进行不逊色于明文的精度下的归一化指数函数的秘密计算。[0093]《第二实施方式》[0094]下面参照图4~图6对秘密神经网络计算系统20进行说明。图4是表示秘密神经网络计算系统20的结构的框图。秘密神经网络计算系统20包括w’个(w’是3以上的规定的整数)秘密神经网络计算装置2001、…、200w’。秘密神经网络计算装置2001、…、200w’与网络800连接,能够相互进行通信。网络800例如可以是因特网等通信网或广播通信路径等。图5是表示秘密神经网络计算装置200i(1≤i≤w’)的结构的框图。图6是表示秘密神经网络计算系统20的动作的流程图。[0095]如图5所示,秘密神经网络计算装置200i包括输入层计算部210i、第n层计算部220-ni(n=1,…,n-1,n是2以上的整数,n-1表示隐藏层(中间层)的数量)、输出层计算部230i和记录部190i。除了记录部190i之外的秘密神经网络计算装置200i的各结构部构成为,能够执行秘密计算所需的运算,即至少执行隐匿化、加法运算、乘法运算、秘密批量映射、右移位中的在实现各结构部的功能的基础上所需的运算。本发明中用于实现各个运算的具体功能结构例如是能够执行参考非专利文献1~6分别公开的算法那样的结构就足够了,它们是以往的结构,因此省略详细的说明。另外,记录部190i是对秘密神经网络计算装置200i的处理所需的信息进行记录的结构部。[0096]通过由w’个秘密神经网络计算装置200i进行的协调计算,秘密神经网络计算系统20实现为多方协议的基于神经网络的秘密计算。因此,秘密神经网络计算系统20的输入层计算单元210(未图示)由输入层计算部2101、…、210w’构成,第n层计算单元220-n(n=1,…,n-1)(未图示)由第n层计算部220-n1、…、220-nw’构成,输出层计算单元230(未图示)由输出层计算部2301、…、230w’构成。[0097]秘密神经网络计算系统20根据输入数据x的份额[[x]],计算针对输入数据x的输出值yn 1(n为2以上的整数)的份额[[yn 1]]。以下,按照图6对秘密神经网络计算系统20的动作进行说明。这里,输入数据x、输入层的输出值y1、第n层的输出值yn 1(n=1,…,n-1)、输出层的输出值yn 1均由向量表示,输入层的参数w0、第n层的参数wn(n=1,…,n-1)、输出层的参数wn均由矩阵表示。另外,输入层的参数w0的份额[[w0]]、第n层的参数wn的份额[[wn]](n=1,...,n-1)、输出层的参数wn的份额[[wn]]例如可以事先记录于记录部190i(1≤i≤w’)。[0098]在s210中,输入层计算单元210使用输入层的参数w0的份额[[w0]],根据份额[[x]]来计算输入层的输出值y1的份额[[y1]]。输入层计算单元210例如通过下式来计算份额[[y1]]。[0099][公式4][0100][[u1]]←[[w0]][[x]]…(a-1)[0101][[y1]]←activation([[u1]])…(a-2)[0102]这里,activation表示激活函数。激活函数activation及其微分activation’均为可秘密计算的函数。作为激活函数,例如可以使用函数relu(x)。在该情况下,微分relu’(x)例如由下式给出。[0103][公式5][0104][0105]另外,将u1称为输入层的中间输出值。[0106]设n=1,…,n-1,在s220-n中,第n层计算单元220-n使用第n层的参数wn的份额[[wn]],根据份额[[yn]]来计算第n层的输出值yn 1的份额[[yn 1]]。第n层计算单元220-n例如通过下式来计算份额[[yn 1]]。[0107][公式6][0108][[un 1]]←[[wn]][[yn]]…(b-1)[0109][[yn 1]]←activation([[un 1]])…(b-2)[0110]另外,将un 1称为第n层的中间输出值。[0111]在s230中,输出层计算单元230使用输出层的参数wn的份额[[wn]],根据份额[[yn]]来计算输出层的输出值yn 1的份额[[yn 1]]。输出层计算单元230例如通过下式来计算份额[[yn 1]]。[0112][公式7][0113][[un 1]]←[[wn]][[yn]]...(c-1)[0114][[yn 1]]←softmax([[un 1]])…(c-2)[0115]另外,将un 1称为输出层的中间输出值。[0116]以下参照图7~图8对输出层计算单元230进行说明。图7是表示输出层计算部230i的结构的框图。图8是表示输出层计算单元230的动作的流程图。输出层计算单元230的减法单元110(未图示)由减法部1101、…、110w’构成,第一秘密批量映射计算单元120(未图示)由第一秘密批量映射计算部1201、…、120w’构成,加法单元130(未图示)由加法部1301、…、130w’构成,第二秘密批量映射计算单元140(未图示)由第二秘密批量映射计算部1401、…、140w’构成,中间输出计算单元231(未图示)由中间输出计算部2311、…、231w’构成。如图7所示,输出层计算部230i包括减法部110i、第一秘密批量映射计算部120i、加法部130i、第二秘密批量映射计算部140i和中间输出计算部231i。[0117]按照图8对输出层计算单元230的动作进行说明。[0118]在s231中,中间输出计算单元231使用输出层的参数wn的份额[[wn]],根据份额[[yn]]来计算输出层的中间输出值un 1的份额[[un 1]]。中间输出计算单元231例如通过式(c-1)来计算份额[[un 1]]。[0119]以下,若设中间输出值un 1=(u1,…,uj)(其中,j为1以上的整数),则中间输出值un 1的份额[[un 1]]=([[u1]],…,[[uj]])。[0120]在s110中,减法单元110根据份额([[u1]],…,[[uj]]),计算份额([[u1-u1]],[[u2-u1]],…,[[uj-u1]],[[u1-u2]],…,[[uj-u2]],…,[[u1-uj]],…,[[uj-uj]])。[0121]在s120中,第一秘密批量映射计算单元120根据份额([[u1-u1]],[[u2-u1]],…,[[uj-u1]],[[u1-u2]],…,[[uj-u2]],…,[[u1-uj]],…,[[uj-uj]]),计算map1([[u1-u1]],[[u2-u1]],…,[[uj-u1]],[[u1-u2]],…,[[uj-u2]],…,[[u1-uj]],…,[[uj-uj]]))=([[αf(1,1)]],[[αf(2,1)]],…,[[αf(j,1)]],[[αf(1,2)]],…,[[αf(j,2)]],…,[[αf(1,j)]],…,[[αf(j,j)]])(其中,f(i,j)(1≤i,j≤k)为ap≤ui-uj<ap 1的p),并设为([[exp(u1-u1)]],[[exp(u2-u1)]],…,[[exp(uj-u1)]],[[exp(u1-u2)]],…,[[exp(uj-u2)]],…,[[exp(u1-uj)]],…,[[exp(uj-uj)]])=([[αf(1,1)]],[[αf(2,1)]],…,[[αf(j,1)]],[[αf(1,2)]],…,[[αf(j,2)]],…,[[αf(1,j)]],…,[[αf(j,j)]])。[0122]在s130中,加法单元130根据份额([[exp(u1-u1)]],[[exp(u2-u1)]],…,[[exp(uj-u1)]],[[exp(u1-u2)]],…,[[exp(uj-u2)]],…,[[exp(u1-uj)]],…,[[exp(uj-uj)]]),计算份额([[∑j=1jexp(uj-u1)]],[[∑j=1jexp(uj-u2)]],…,[[∑j=1jexp(uj-uj)]])。[0123]在s140中,第二秘密批量映射计算单元140根据份额([[∑j=1jexp(uj-u1)]],[[∑j=1jexp(uj-u2)]],…,[[∑j=1jexp(uj-uj)]]),计算map2(([[∑j=1jexp(uj-u1)]],[[∑j=1jexp(uj-u2)]],…,[[∑j=1jexp(uj-uj)]]))=([[βg(1)]],[[βg(2)]],…,[[βg(j)]])(其中,g(i)(1≤i≤l)为bp≤∑j=1jexp(uj-ui)<bp 1的p),并设为[[yn 1]]=([[softmax(u1)]],[[softmax(u2)]],…,[softmax(uj)]])=([[βg(1)]],[[βg(2)]],…,[[βg(j)]])。[0124]根据本实施方式的发明,能够高速且高精度地执行基于神经网络的秘密计算。通过使用第一实施方式的发明,能够高精度地计算出归一化指数函数,因此与非专利文献1和非专利文献2的现有方法相比,也能够高精度地执行基于神经网络的秘密计算。[0125](变形例)[0126]在秘密计算中,浮点数的处理成本较大。因此,这里考虑使用定点数来进行各结构部中的计算。[0127]首先,对每个变量或常数设定所需的精度。例如,在精度为α比特(α是小数点部分的比特数)的情况下,份额[[x]]作为基数为2的定点数[[x×2α]]而被秘密分散。另外,不使所有的变量及常数的精度相同的理由是,每个变量或常数的值域不同,所需的精度不同。例如,由于参数容易变小,所以优选将表示参数的变量的精度设定得比其他变量的精度高。如果将表示输入数据x的变量x、表示输出层的输出值yn 1的变量y、表示输入层的参数w0、第n层的参数wn(n=1,…,n-1)和输出层的参数wn的变量w所需的精度分别设为bx、by、bw,则存在bx=8、by=14、bw=20这样的情况。这样,通过对每个变量或常数设定所需的精度,能够尽可能地抑制作为整体的比特数,并且能够高效地计算处理成本大的秘密计算。[0128]另外,在以定点数进行处理的情况下,存在进行乘法运算时精度改变的问题。例如,若进行[[x1×2α]]×[[x2×2α]]这样的乘法运算,则结果为[[x1x2×22α]],比原来的值大α比特。在神经网络的计算中,由于对各层进行乘法运算,所以如果直接进行普通处理,则在中途溢出。因此,在此,通过使用右移位rshift,有意地降低位数而防止溢出,并且以定点数高效地实现神经网络中的计算。[0129]以下具体地进行说明。对将变量x、变量y、变量w所需的精度分别设为bx、by、bw,进行了防止由乘法运算造成的溢出的研究的秘密神经网络计算系统20的动作进行说明(参照图6)。[0130]在s210中,输入层计算单元210通过式(a-1)、式(a-2)来计算份额[[y1]]。[0131]设n=1,…,n-1,在s220-n中,第n层计算单元220-n通过下式来计算份额[[yn 1]]。[0132][公式8][0133][[un 1]]←[[wn]][[yn]]…(b-1)[0134][[yn 1]]←activation([[un 1]])…(b-2)[0135][[yn 1]]←rshift([[yn 1]],bw)…(b-3)[0136]在s230中,输出层计算单元230通过式(c-1)、式(c-2)来计算份额[[yn 1]]。[0137]在此,对上述s210~s230的处理的特征进行说明。一般而言,在秘密计算中右移位是成本较高的处理,因此优选尽量减少进行右移位的次数。因此,在s210~s230的处理中,执行必要最低限度的右移位的计算(式(b-3)的计算)。另外,由于秘密批量映射具有能够任意地设定定义域和值域的性质,所以通过使用秘密批量映射,能够如右移位那样调节位数。因此,通过在式(c-2)的计算中的秘密批量映射的计算之中包含右移位的效果,从而在式(c-2)的计算中,能够处理从2bw bx向by的精度调节。[0138]以下,从精度的观点对上述s210~s230的处理进行说明。在s210中的输入层计算单元210的式(a-1)的计算、式(a-2)的计算中,精度分别为bw bx、bw bx。在s220-1中的第一层计算单元220-1的式(b-1)的计算、式(b-2)的计算中,精度分别为2bw bx、2bw bx。因此,如果直接执行s220-2中的第二层计算单元220-2的式(b-1)的计算、式(b-2)的计算,则精度分别为3bw bx、3bw bx。如果重复该操作,则每当中间层中的计算推进时,位数就增加bw。因此,第n层计算单元220-n通过式(b-3)来重新计算份额[[yn 1]]。由此,能够解决每当层中的计算推进时,位数就增加bw的问题。因此,第(n-1)层计算单元220-(n-1)的式(b-3)的计算结束的时间点的精度为bw bx。并且,在s230中的输出层计算单元230的式(c-1)的计算、式(c-2)的计算中,精度分别为2bw bx、by。[0139]《第三实施方式》[0140]以下,参照图9~图11对秘密神经网络学习系统30进行说明。图9是表示秘密神经网络学习系统30的结构的框图。秘密神经网络学习系统30包括w”个(w”是3以上的规定的整数)秘密神经网络学习装置3001、…、300w”。秘密神经网络学习装置3001、…、300w”与网络800连接,能够相互进行通信。网络800例如可以是因特网等通信网或广播通信路径等。图10是表示秘密神经网络学习装置300i(1≤i≤w”)的结构的框图。图11是表示秘密神经网络学习系统30的动作的流程图。[0141]如图11所示,秘密神经网络学习装置300i包括初始化部305i、正向传播计算部310i、反向传播计算部320i、梯度计算部330i、参数更新部340i、结束条件判定部350i和记录部190i。除了记录部190i之外的秘密神经网络学习装置300的各结构部构成为,能够执行秘密计算所需的运算,即至少执行隐匿化、加法运算、乘法运算、秘密批量映射、右移位中的在实现各结构部的功能的基础上所需的运算。本发明中用于实现各个运算的具体功能结构例如是能够执行参考非专利文献1~6分别公开的算法那样的结构就足够了,它们是以往的结构,因此省略详细的说明。另外,记录部190i是对秘密神经网络学习装置300i的处理所需的信息进行记录的结构部。[0142]通过由w”个秘密神经网络学习装置300i进行的协调计算,秘密神经网络学习系统30实现用于为多方协议的神经网络的学习的秘密计算。因此,秘密神经网络学习系统30的初始化单元305(未图示)由初始化部3051、…、305w”构成,正向传播计算单元310(未图示)由正向传播计算部3101、…、310w”构成,反向传播计算单元320(未图示)由反向传播计算部3201、…、320w”构成,梯度计算单元330(未图示)由梯度计算部3301、…、330w”构成,参数更新单元340(未图示)由参数更新部3401、…、340w”构成,结束条件判定单元350(未图示)由结束条件判定部3501、…、350w”构成。[0143]秘密神经网络学习系统30使用学习数据x的份额[[x]]和学习标签t的份额[[t]],更新输入层的参数w0的份额[[w0]]、第n层的参数wn的份额[[wn]](n=1,…,n-1,n是2以上的整数)和输出层的参数wn的份额[[wn]]。以下,按照图11对秘密神经网络学习系统30的动作进行说明。这里,学习数据x、学习标签t、输入层的输出值y1、第n层的输出值yn 1(n=1,…,n-1)、输出层的输出值yn 1均由向量表示,输入层的参数w0、第n层的参数wn(n=1,…,n-1)、输出层的参数wn均由矩阵表示。另外,学习中的输入层的参数w0的份额[[w0]]、第n层的参数wn的份额[[wn]](n=1,…,n-1)、输出层的参数wn的份额[[wn]]例如可以记录于记录部190。另外,这里说明的秘密神经网络学习系统30的动作相当于使用梯度下降法和反向传播的神经网络的学习方法。[0144]在s305中,初始化单元305设定输入层的参数w0的份额[[w0]]、第n层的参数wn的份额[[wn]](n=1,…,n-1)和输出层的参数wn的份额[[wn]]的初始值。另外,初始化单元305还适当地设定学习结束的判定所需的值。例如,在学习结束的判定使用学习次数的情况下,初始化单元305设定表示学习次数的计数器t的初始值(具体地说,t=0)和表示反复学习次数的阈值t。另外,在学习结束的判定不使用学习次数,而使用参数的变化量是否充分变小这样的基准的情况下,初始化单元305设定表示收敛的程度的阈值ε。[0145]在s310中,正向传播计算单元310使用份额[[wn]](n=0,…,n),根据份额[[x]]来计算输入层的输出值y1的份额[[y1]]、第n层的输出值yn 1的份额[[yn 1]](n=1,…,n-1)和输出层的输出值yn 1的份额[[yn 1]]。以下,参照图12和图13对正向传播计算单元310进行说明。图12是表示正向传播计算部310i的结构的框图。图13是表示正向传播计算单元310的动作的流程图。正向传播计算单元310的输入层计算单元210(未图示)由输入层计算部2101、…、210w’构成,第n层计算单元220-n(n=1,…,n-1)(未图示)由第n层计算部220-n1、…、220-nw’构成,输出层计算单元230(未图示)由输出层计算部2301、…、230w’构成。如图12所示,正向传播计算单元310i包括输入层计算部210i、第n层计算部220-ni(n=1,…,n-1,n是2以上的整数,n-1表示隐藏层(中间层)的数量)和输出层计算部230i。[0146]按照图13对正向传播计算单元310的动作进行说明。[0147]在s210中,输入层计算单元210使用输入层的参数w0的份额[[w0]],根据份额[[x]]来计算输入层的输出值y1的份额[[y1]]。[0148]设n=1,…,n-1,在s220-n中,第n层计算单元220-n使用第n层的参数wn的份额[[wn]],根据份额[[yn]]来计算第n层的输出值yn 1的份额[[yn 1]]。[0149]在s230中,输出层计算单元230使用输出层的参数wn的份额[[wn]],根据份额[[yn]]来计算输出层的输出值yn 1的份额[[yn 1]]。另外,输出层计算单元230中的处理与在<第二实施方式》中使用图7和图8所说明的处理相同。[0150]在s320中,反向传播计算单元320使用份额[[wn]](n=n,…,1),根据份额[[yn 1]]和份额[[t]]来计算输出层中的误差zn 1的份额[[zn 1]]、第n层中的误差zn 1的份额[[zn 1]](n=n-1,…,1)、输入层中的误差z1的份额[[z1]]。反向传播计算单元320例如通过下式来计算份额[[zn 1]]。[0151][公式9][0152][[zn 1]]←[[yn 1]]-[[t]]…(p-1)[0153]反向传播计算单元320例如通过下式来计算份额[[zn]]。[0154][公式10][0155][0156]反向传播计算单元320例如通过下式来计算份额[[zn]](n=n-1,…,1)。[0157][公式11][0158][0159]在s330中,梯度计算单元330使用份额[[x]]和份额[[yn]](n=1,...,n),根据份额[[zn]](n=1,...,n 1)来计算输入层中的梯度g0的份额[[g0]]、第n层中的梯度gn的份额[[gn]](n=1,…,n-1)和输出层中的梯度gn的份额[[gn]]。梯度计算单元330例如通过下式来计算份额[[g0]]。[0160][公式12][0161][[g0]]←[[z1]][[x]]...(q-1)[0162]梯度计算单元330例如通过下式来计算份额[[gn]](n=1,…,n)。[0163][公式13][0164][[gn]]←[[zn 1]][[yn]]...(q-2)[0165]在s340中,参数更新单元340使用份额[[gn]](n=0,…,n)来更新份额[[wn]](n=0,…,n)。参数更新单元340例如通过下式来更新份额[[w0]]。[0166][公式14][0167][[g0]]←rshift([[g0]],h)…(r-1)[0168][[w0]]←[[w0]]-[[g0]]…(r-2)[0169]参数更新单元340例如通过下式来更新份额[[wn]](n=1,…,n-1)。[0170][公式15][0171][[gn]]←rshift([[gn]],h)…(r-3)[0172][[wn]]←[[wn]]-[[gn]]…(r-4)[0173]参数更新单元340例如通过下式来更新份额[[wn]]。[0174][公式16][0175][[gn]]←rshift([[gn]],h)…(r-5)[0176][[wn]]←[[wn]]-[[gn]]…(r-6)[0177]这里,h是由下式定义的值。[0178][公式17][0179][0180]其中,η表示学习率,m表示批量大小。[0181]为了高效地计算学习率η与批量大小m之比η/m的乘积,通过式(2),用2的幂数2-h来近似比η/m。因此,可以将学习率η和批量大小m均设定为2的幂数的值。[0182]使用该h,在更新份额[[wn]](n=0,…,n)的计算中,即在式(r-1)、式(r-3)、式(r-5)中,进行h比特量的rshift。[0183]在s350中,结束条件判定单元350在结束条件被满足的情况下,输出此时的份额[[wn]](n=0,…,n),并结束处理。在除此以外的情况下,返回到步骤s310的处理。即,秘密神经网络学习系统30反复进行s310~s350的处理。另外,所谓结束条件被满足的情况,在学习结束的判定使用学习次数的情况下,是计数器t达到阈值t的情况,在学习结束的判定使用参数的变化量是否足变得够小这样的基准的情况下,是参数的变化量变得小于ε的情况。另外,在学习结束的判定使用学习次数的情况下,结束条件判定单元350使计数器t的值递增1。[0184]正向传播计算单元310中的计算需要按照输入层、隐藏层、输出层的顺序进行计算,反向传播计算单元320中的计算需要按照输出层、隐藏层、输入层的顺序进行计算,但对于梯度计算单元330中的计算和参数更新单元340中的计算,可以对各层并行地进行处理,通过集中处理能够提高处理的效率。[0185]根据本实施方式的发明,能够高速且高精度地执行用于神经网络的学习的秘密计算。通过使用第一实施方式的发明,能够高精度地计算出归一化指数函数,因此与非专利文献1和非专利文献2的现有方法相比,也能够高精度地执行用于神经网络的学习的秘密计算。[0186](变形例)[0187]与第二实施方式的变形例同样地,通过对每个变量或常数设定所需的精度,并适当地进行右移位rshift的运算,由此能够有意地降低位数而防止溢出,并且以定点数高效地实现用于神经网络的学习的秘密计算。对将表示学习数据x的变量x、表示输出层的输出值yn 1及学习标签t的变量y、表示输入层的参数w0、第n层的参数wn(n=1,…,n-1)和输出层的参数wn的变量w所需的精度分别设为bx、by、bw,并进行了防止由乘法运算引起的溢出的研究的秘密神经网络学习系统30的动作进行说明。具体而言,对图11的s310~s340的动作进行说明。[0188]在s310中,正向传播计算单元310执行在《第二实施方式》的(变形例)中所说明的s210~s230的处理。[0189]在s320中,反向传播计算单元320通过式(p-1)来计算份额[[zn 1]]。反向传播计算单元320例如通过下式来计算份额[[zn]]。[0190][公式18][0191][0192][[zn]]←rshift([[zn]],by)…(p-4)[0193]反向传播计算单元320例如通过下式来计算份额[[zn]](n=n-1,…,1)。[0194][公式19][0195][0196][[zn]]←rshift([[zn]],bw)…(p-5)[0197]在s330中,梯度计算单元330通过式(q-1)来计算份额[[g0]]。梯度计算单元330通过式(q-2)来计算份额[[gn]](n=1,…,n)。[0198]在s340中,参数更新单元340例如通过下式来计算份额[[w0]]。[0199][公式20][0200][[g0]]←rshift([[g0]],bx h)…(r-1)′[0201][[w0]]←[[w0]]-[[g0]]…(r-2)[0202]参数更新单元340例如通过下式来计算份额[[wn]](n=1,...,n-1)。[0203][公式21][0204][[gn]]←rshift([[gn]],bw bx h)…(r-3)′[0205][[wn]]←[[wn]]-[[gn]]…(r-4)[0206]参数更新单元340例如通过下式来计算份额[[wn]]。[0207][公式22][0208][[gn]]←rshift([[gn]],bx by h)…(r-5)′[0209][[wn]]←[[wn]]-[[gn]]…(r-6)[0210]这里,在参数更新单元340中的右移位的计算(即,式(r-1)’、式(r-3)’、式(r-5)’的计算)中,在用h比特的右移位对学习率/批量大小的除法运算进行近似的基础上,进一步同时进行精度调节的右移位,由此减轻右移位的处理成本。[0211]《补充》[0212]图14是表示实现上述各装置的计算机的功能结构的一例的图。上述各装置中的处理可以通过使记录部2020读入用于使计算机作为上述各装置发挥功能的程序,并使控制部2010、输入部2030、输出部2040等进行动作来实施。[0213]本发明的装置中,例如作为单一的硬件实体而具有:可连接键盘等的输入部;可连接液晶显示器等的输出部;可连接可与硬件实体的外部进行通信的通信装置(例如通信电缆)的通信部;cpu(中央处理单元(centralprocessingunit),也可以具备高速缓冲存储器、寄存器等);作为存储器的ram、rom;作为硬盘的外部存储装置;及以可进行这些输入部、输出部、通信部、cpu、ram、rom、外部存储装置之间的数据交换的方式连接的总线。此外,也可以根据需要,在硬件实体设置能够对cd-rom等记录介质进行读写的装置(驱动器)等。作为具备这样的硬件资源的物理性实体,有通用计算机等。[0214]在硬件实体的外部存储装置存储有为了实现上述的功能所需要的程序及在该程序的处理中所需要的数据等(不限于外部存储装置,例如也可以将程序读出并存储于作为专用存储装置的rom)。另外,通过这些程序的处理而得到的数据等被适当地存储于ram或外部存储装置等。[0215]在硬件实体中,存储在外部存储装置(或者rom等)中的各程序和该各程序的处理所需要的数据根据需要而被读入到存储器中,并适当地在cpu中被解释执行、处理。其结果是,cpu实现规定的功能(表现为上述、…部、…单元等的各结构要件)。[0216]本发明并不限定于上述的实施方式,在不脱离本发明的宗旨的范围内能够适当变更。另外,上述实施方式中所说明的处理不仅可以按照记载的顺序以时间序列被执行,还可以根据执行处理的装置的处理能力或根据需要而并行地或单独地被执行。[0217]如已说明的那样,在通过计算机来实现上述实施方式中所说明的硬件实体(本发明的装置)中的处理功能的情况下,通过程序来记述硬件实体应具有的功能的处理内容。并且,通过在计算机中执行该程序,由此在计算机上实现上述硬件实体中的处理功能。[0218]记述了该处理内容的程序可以记录于计算机可读取的记录介质。作为计算机可读取的记录介质,例如是磁记录装置、光盘、光磁记录介质、半导体存储器等任意介质。具体而言,例如,作为磁记录装置可以使用硬盘装置、软盘、磁带等,作为光盘可以使用dvd(digitalversatiledisc:数字通用光盘)、dvd-ram(randomaccessmemory:随机存取存储器)、cd-rom(compactdiscreadonlymemory:光盘只读存储器)、cd-r(recordable:可记录)/rw(rewritable:可重写)等,作为光磁记录介质可以使用mo(magneto-opticaldisc:磁光盘)等,作为半导体存储器可以使用eep-rom(electronicallyerasableandprogrammable-readonlymemory:电可擦除可编程只读存储器)等。[0219]另外,该程序的流通例如通过对记录有该程序的dvd、cd-rom等便携式记录介质进行销售、转让、出借等来进行。而且,也可以形成为如下结构:将该程序存放于服务器计算机的存储装置,并经由网络,将该程序从服务器计算机转发到其他计算机,由此使该程序流通。[0220]执行这样的程序的计算机例如首先将记录在便携式记录介质中的程序或从服务器计算机转发的程序暂时存放于自己的存储装置。然后,在执行处理时,该计算机读取存放在自己的记录装置中的程序,并执行按照所读取的程序的处理。另外,作为该程序的其他执行方式,计算机也可以从便携式记录介质直接读取程序,并执行按照该程序的处理,而且,也可以在每次从服务器计算机向该计算机转发程序时,逐次执行按照所接受的程序的处理。另外,也可以形成为如下结构:利用不进行从服务器计算机向该计算机的程序的转发而仅通过该执行指示和结果取得来实现处理功能的、所谓asp(applicationserviceprovider:应用服务提供商)型的服务,来执行上述的处理。此外,本方式中的程序包含供电子计算机的处理用且基于程序的信息(虽然不是对计算机的直接的指令,但是具有规定计算机的处理的性质的数据等)。[0221]另外,在本方式中,通过在计算机上执行规定的程序来构成硬件实体,但是也可以硬件性地实现这些处理内容的至少一部分。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献