一种用于联邦学习的数据点乘运算方法技术

技术编号:37054442 阅读:28 留言:0更新日期:2023-03-29 19:31
本发明专利技术公开了一种用于联邦学习的数据点乘运算方法。该方法包括以下步骤:第一方对数据列向量v进行预处理,之后进行同态加密得到加密数据矩阵V1并发送到第二方;第二方对数据矩阵w进行预处理,之后进行同态加密得到若干个加密子数据矩阵F1,生成与每个加密子数据矩阵F1对应的随机数向量Z,并进行同态加密得到加密随机数向量Z1;第二方计算每个加密子数据矩阵F1与加密数据矩阵V1的哈达玛积得到对应的矩阵E,将每个矩阵E按列求和再与对应的加密随机数向量Z1相加得到向量Q,并发送给第一方;第一方根据每个向量Q提取对应的数据之和u组成点乘结果。本发明专利技术能够快速的计算出数据矩阵与数据列向量的点乘结果,且保护了数据隐私。且保护了数据隐私。且保护了数据隐私。

【技术实现步骤摘要】
一种用于联邦学习的数据点乘运算方法


[0001]本专利技术涉及联邦学习
,尤其涉及一种用于联邦学习的数据点乘运算方法。

技术介绍

[0002]随着国内的互联网行业和隐私保护的高速发展,现实生活中越来越多的机构采用联邦学习进行模型训练。基于对数据的隐私保护,需要各方参与训练的数据为加密后的密态数据,基于加密数据和联邦学习自身训练的特性,训练过程中会涉及到大量的矩阵乘以向量的密态运算,然而,这种矩阵乘以向量的密态运算会花费较大的计算时间,进而导致大数据和大模型场景下的联邦学习训练变得十分困难。
[0003]目前,联邦学习常采用同态加密算法对待训练的明文数据进行加密计算,同态加密是指这样一种加密函数,对明文进行环上的加法和乘法运算再加密,与加密后对密文进行相应的运算,结果是等价的。
[0004]对于CKKS、BFV等会使用SIMD加速计算的同态加密算法,SIMD加速计算会将多个明文数据打包加密到同一个密文中,基于这种情况如果需要计算矩阵乘以列向量的密态运算,现有方法是将列向量进行同态加密,将矩阵的每一行进行同态加密,计算密文矩阵每一行与密文列向量之间的点乘结果,过程中需要进行旋转操作(Rotation),而同态加密后的密文旋转操作(Rotation)需要花费大量的计算时间,当矩阵维度较大时,密文旋转操作所带来的计算开销是难以接受的。

技术实现思路

[0005]本专利技术为了解决上述技术问题,提供了一种用于联邦学习的数据点乘运算方法,其能够快速的计算出第二方持有的数据矩阵与第一方持有的数据列向量的点乘结果,且不会泄漏双方的数据,无需进行旋转操作,解决了CKKS、BFV等使用SIMD加速计算的同态加密算法用于计算矩阵乘以向量的点乘结果时因进行旋转操作占用极高计算时间的问题,提高了计算效率。
[0006]为了解决上述问题,本专利技术采用以下技术方案予以实现:本专利技术的一种用于联邦学习的数据点乘运算方法,第一方持有s维的数据列向量v,第二方持有g行s列的数据矩阵w,包括以下步骤:S1:第二方根据数据矩阵w的行数、列数确定预处理参数,第一方根据预处理参数对数据列向量v进行预处理,得到数据矩阵V,第二方根据预处理参数对数据矩阵w进行预处理,得到若干个子数据矩阵F;S2:第一方生成公钥pk和私钥sk,采用公钥pk对数据矩阵V进行同态加密,得到加密数据矩阵V1,将公钥pk和加密数据矩阵V1发送到第二方;S3:第二方给每个子数据矩阵F生成对应的随机数向量Z,由预处理参数决定随机数向量Z内指定位置的随机数之和为0;
S4:第二方采用公钥pk对每个子数据矩阵F进行同态加密,得到对应的加密子数据矩阵F1,采用公钥pk对每个随机数向量Z进行同态加密,得到对应的加密随机数向量Z1;S5:第二方计算每个加密子数据矩阵F1与加密数据矩阵V1的哈达玛积得到对应的矩阵E,将每个矩阵E按列求和得到对应的向量R,将向量R与对应的加密随机数向量Z1相加得到向量Q,将计算出的所有向量Q发送给第一方;S6:第一方采用私钥sk对每个向量Q进行解密得到对应的向量q,根据预处理参数从向量q提取对应的数据之和u组成点乘结果。
[0007]在本方案中,每个子数据矩阵F的行数、列数分别与数据矩阵V的行数、列数一致。随机数向量Z的维数与子数据矩阵F的列数一致。随机数向量Z内的每个随机数都不为0。第一方持有s维的数据列向量v,第二方持有g行s列的数据矩阵w。第一方进行预处理将数据列向量v转换为数据矩阵V,第二方进行预处理将数据矩阵w转换为若干个子数据矩阵F,接着,第一方、第二方将同样的公钥pk作为加密密钥,采用同样的同态加密算法对各自持有的明文的数据矩阵进行加密,得到对应的加密数据矩阵,第二方还给每个子数据矩阵F生成对应的随机数向量Z,将同样的公钥pk作为加密密钥,采用同样的同态加密算法对随机数向量Z进行加密,得到加密随机数向量Z1。这样,根据同态加密算法原理,计算每个加密子数据矩阵F1与加密数据矩阵V1的哈达玛积得到对应的矩阵E,将每个矩阵E按列求和得到对应的向量R,将向量R与对应的加密随机数向量Z1相加得到向量Q,向量Q经过私钥sk解密得到的向量q,根据预处理参数将每个向量q内对应位置的数据进行求和得到每个向量q对应的若干个数据之和u,由于预处理参数决定随机数向量Z内指定位置的随机数之和为0,所以数据之和u就是数据列向量v与数据矩阵w对应行的点乘结果。
[0008]本方案的整个计算过程中没有进行旋转操作(Rotation),不会因旋转操作占用极高的计算时间,解决了CKKS、BFV等使用SIMD加速计算的同态加密算法用于计算矩阵与列向量的点乘结果时因进行旋转操作占用极高计算时间的技术问题,大大提高了计算效率,便于实现大数据和大模型场景下的联邦学习训练,同时保护了双方的数据隐私。
[0009]作为优选,所述步骤S6中根据预处理参数从向量q提取对应的数据之和u组成点乘结果的方法包括以下步骤:根据预处理参数将每个向量q内对应位置的数据进行求和得到每个向量q对应的若干个数据之和u,根据预处理参数提取对应的数据之和u组成s维的数据列向量p,数据列向量p就是数据矩阵w与数据列向量v的点乘结果。
[0010]作为优选,所述步骤S1中第二方根据数据矩阵w的行数、列数确定预处理参数的方法如下:第二方计算出预处理参数k、h,公式如下:,,其中,表示向上取整。
[0011]作为优选,所述步骤S1中第一方根据预处理参数对数据列向量v进行预处理,得到数据矩阵V的方法如下:M1:第一方计算出参数n,n=h*k,如果s=n,则将数据列向量v转置得到数据行向量v1;如果s≠n,则将数据列向量v进行补零操作直到维数达到n,之后转置得到数据行向量
v1;v1=[a1、a2、a3……
a
n
],1≤f≤n,a
f
表示数据行向量v1内的第f个数据;M2:根据预处理参数k、h以及数据行向量v1计算出数据矩阵V,公式如下:,其中,1≤i≤k,A
i,1
、A
i,2
、A
i,3
……
A
i,k
为相同的行向量,都为[a
(i

1)*h+1
、a
(i

1) *h+2
……
a
i*h
‑1、a
i*h
]。
[0012]作为优选,所述步骤S1中第二方根据预处理参数对数据矩阵w进行预处理,得到若干个子数据矩阵F的方法如下:N1:第二方计算出参数m,m=k2,如果g≠m,则将数据矩阵w进行按行补零操作直到行数达到m;N2:第二方计算出参数n,n=h*k,如果s≠n,则将数据矩阵w进行按列补零操作直到列数达到n,最终得到m*n的数据矩阵L;N3:将数据矩阵L按行等分为k个k*n的子数据矩阵W,,其中,1≤i≤k,1≤f≤n,b
i,f
表示子数据矩阵W第i行第f列的数据;N4:根据预处理参数k、h将每个子数据矩阵W转换为子数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于联邦学习的数据点乘运算方法,第一方持有s维的数据列向量v,第二方持有g行s列的数据矩阵w,其特征在于,包括以下步骤:S1:第二方根据数据矩阵w的行数、列数确定预处理参数,第一方根据预处理参数对数据列向量v进行预处理,得到数据矩阵V,第二方根据预处理参数对数据矩阵w进行预处理,得到若干个子数据矩阵F;S2:第一方生成公钥pk和私钥sk,采用公钥pk对数据矩阵V进行同态加密,得到加密数据矩阵V1,将公钥pk和加密数据矩阵V1发送到第二方;S3:第二方给每个子数据矩阵F生成对应的随机数向量Z,由预处理参数决定随机数向量Z内指定位置的随机数之和为0;S4:第二方采用公钥pk对每个子数据矩阵F进行同态加密,得到对应的加密子数据矩阵F1,采用公钥pk对每个随机数向量Z进行同态加密,得到对应的加密随机数向量Z1;S5:第二方计算每个加密子数据矩阵F1与加密数据矩阵V1的哈达玛积得到对应的矩阵E,将每个矩阵E按列求和得到对应的向量R,将向量R与对应的加密随机数向量Z1相加得到向量Q,将计算出的所有向量Q发送给第一方;S6:第一方采用私钥sk对每个向量Q进行解密得到对应的向量q,根据预处理参数从向量q提取对应的数据之和u组成点乘结果。2.根据权利要求1所述的一种用于联邦学习的数据点乘运算方法,其特征在于,所述步骤S6中根据预处理参数从向量q提取对应的数据之和u组成点乘结果的方法包括以下步骤:根据预处理参数将每个向量q内对应位置的数据进行求和得到每个向量q对应的若干个数据之和u,根据预处理参数提取对应的数据之和u组成s维的数据列向量p,数据列向量p就是数据矩阵w与数据列向量v的点乘结果。3.根据权利要求2所述的一种用于联邦学习的数据点乘运算方法,其特征在于,所述步骤S1中第二方根据数据矩阵w的行数、列数确定预处理参数的方法如下:第二方计算出预处理参数k、h,公式如下:,,其中,表示向上取整。4.根据权利要求3所述的一种用于联邦学习的数据点乘运算方法,其特征在于,所述步骤S1中第一方根据预处理参数对数据列向量v进行预处理,得到数据矩阵V的方法如下:M1:第一方计算出参数n,n=h*k,如果s=n,则将数据列向量v转置得到数据行向量v1;如果s≠n,则将数据列向量v进行补零操作直到维数达到n,之后转置得到数据行向量v1;v1=[a1、a2、a3……
a
n
],1≤f≤n,a
f
表示数据行向量v1内的第f个数据;M2:根据预处理参数k、h以及数据行向量v1计算出数据矩阵V,公式如下:,其中,1≤i≤k,A
i,1
、A
i,2
、A
i,3
……
A
i,k
为相同的行向量,都为[a
(i

1)*h+1
、a
(i

1) *h+2
……
a
i*h
‑1、a
i*h
]。5.根据权利要求3或4所述的一种用于联邦学习的数据点乘运算方法,其特征在于,所述步骤S1中第二方根据预处理参数对数据矩阵w进行预处理,得到若干个子数据矩阵F的方法如下:N1:第二方计算出参数m,m=k2,如果g≠m,则将数据矩阵w进行按行补零操作直到行数达到m;N2:第二方计算出参数n,n=h*k,如果s≠n,则将数据矩阵w进行按列补零操作直到列数达到n,最终得到m*n的数据矩阵L;N3:将数据矩阵L按行等分为k个k*n的子数据矩阵W,,其中,1≤i≤k,1≤f≤n,b
i,f
表示子数据矩阵W第i行第f列的数据;N4:根据预处理参数k、h将每个子数据矩阵W转换为子数据矩阵F,共得到k个子数据矩阵F;将子数据矩阵W转换为子数据矩阵F的方法如下:将子数据矩阵W的每一行数据等分成k个行向量,每个行向量内有h个数据,得到如下公式:(1),其中,1≤i≤k,1≤j≤k,B
i,j
表示子数据矩阵W第i...

【专利技术属性】
技术研发人员:冯黎明马煜翔刘洋王玥邢冰刘文博
申请(专利权)人:蓝象智联杭州科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1