本发明属于人工智能领域,尤其涉及一种提供完整性验证的可审计外包机器学习服务方法。
背景技术:
现如今机器学习技术已被广泛应用于诸多领域。由于机器学习频繁地处理大量数据,特别是在模型训练阶段,服务端需要具备很强的计算能力。因此,机器学习即服务(machinelearningasaservice,以下简称mlaas)已经成为一种很有前景的服务范式,它使弱小的客户端能够在强大的云设施中训练模型或计算预测。但现在mlaas实践仍存在一些隐患,为了更广泛的应用,机器学习即服务必须满足以下三条关键条件:一是服务的正确性,客户端需要确保服务提供者完成的学习任务必须按预期工作;二是可信赖的账单,现有的商业化机器学习服务平台均根据消耗掉的计算资源计算账单。缺乏完全透明度的情况下就需要保证服务提供者声称的资源消耗确实与实际工作量相符;三是公平付款,客户在付款之前不应获得任何关于最终结果的信息,需保证客户的付款和mlaas结果之间的公平。
若缺失上述的保证,不诚信的服务提供者可能会提供执行错误的结果,或部分训练过的模型,并要求超额的报酬。考虑到可能会存在一些复杂且具有经济动机的攻击,例如恶意服务端可能会虚构迭代次数或提供具有更少参数的简单模型,验证结果的准确性和可靠的账单核算是至关重要的。
可验证的计算技术(vc)通常用于在不需要重新执行的情况下验证一个函数的正确性,以往的研究主要集中在三个主流:认证数据结构(ads)、交互式证明(ip)和简洁的非交互式知识论证(snark)。与前两种相比,snark将任意多项式大小的函数转化成电路,从而生成一个简短的证明,这一点使得它很适用于弱的用户。并且snark支持零知识证明,具有丰富的表现力,同时由于强大的云计算,可以缓解证明者端的高成本问题。
利用区块链来确保公平问题被广泛研究,大多数研究通过规定时间的承诺和乱码电路实现多方计算的公平性。到目前为止,零知识或有支付(zkcp)作为一种解决方案被接受,它使用零知识证明来确保交易的公平性。但现有的研究都只关注与如何证明多方计算中卖方是否真的持有一些关键信息,但并没有确保其正确性。
可验证计算技术(vc)能够验证一个确定性函数的输出,正适合于解决这类问题。然而在机器学习服务中直接调用可验证计算技术(vc)却不能实现如上提到的几点关键需求。首先,服务端的训练结果需显示给客户端以验证结果的正确性,即直接调用可验证计算技术(vc)仍然违反公平交易的前提。其次,由于机器学习算法包含大量的训练迭代和输入变量,直接使用可验证计算技术是十分低效的。此外,学习算法中的非线性函数计算对可验证计算技术也难以实现。
技术实现要素:
本发明针对现有技术的不足,提供一种提供完整性保证的可审计机器学习方案。
本发明技术方案为一种提供完整性验证的可审计外包机器学习服务方法,设置外包机器学习服务审计过程和承诺-证明协议,
所述外包机器学习服务审计过程,用于实现机器学习模型训练过程的完整性保证,检测错误行为,不仅确保客户端在不可信的服务端上正确执行学习任务,而且确保服务提供者所声称的资源消耗与实际工作负载相对应;实现过程如下,
计算阶段,服务端保存额外的辅助信息,实现使训练过程可检索的目的,服务端执行机器学习任务;
验证阶段,服务器根据指定的机器学习算法和参数训练预测模型;训练后,客户端随机抽取部分迭代子集作为挑战,服务端生成相应的证明,如果所有证明都能通过验证算法,客户端认为极大可能下服务器已正确执行学习任务;
支付阶段,如果所有证明都通过验证,客户端将向服务端支付外包机器学习服务的费用;
所述承诺-证明协议,用于在高效训练机器学习模型时,通过采样证明大量循环迭代来避免验证全部计算。
而且,验证阶段中,利用多重优化来构造验证所需的更高效的算法电路,包括由服务器保存模型的一些中间状态作为检查点,支持快速进行多次迭代,从检查点检索任意状态。
而且,所述承诺-证明协议实现如下,
首先在系统设置与初始化时,客户端发送学习算法的参数到服务器,包括学习率α,批量大小b和收敛阈值;在达成协议后,客户端将验证需要用到的电路f编译到本地,并通过安全参数λ生成密钥对和一个随机数种子s用于随机选择样本;客户端将随机数种子s发送给服务器;
在计算阶段,每次迭代中服务器利用随机数种子s选取样本,将上一次迭代的结果状态wi-1和数据批量作为输入,服务器输出一个更新后的状态wi并且保存它的标识符ii;在规定次数的迭代后,服务器保存输出结果wi作为检查点;如果某两个时期之间的精度差异小于收敛阈值t,服务器将终止训练过程并发送标识符(i1,…,im)到客户端。
在验证阶段,首先客户端将电路f和公开授权密钥ekf发送给服务器,服务器检查电路的正确性;之后,客户端随意选取m次迭代(s1,s2,…,sm)用于验证,向服务器发送索引集来挑战相应的证明(πs1,…,πsm;服务器定位检查点得到检索结果(wsi-1,....,wsm-1),服务器产生证明(i’si-1,i’si,πsi),并将结果(i’si-1,i’si,πsi)发送给客户端;客户端利用随机数种子s选取样本输入,针对所选取的迭代运行验证函数;若函数输出为零,则客户端拒绝其结果,否则客户端将承诺中的{i’si-1,i’si}与{isi-1,isi}进行比较;如果
在支付阶段,首先服务器使用对称密钥k加密已经训练好的模型,然后将加密后的模型和对称密钥k的哈希值h发送给客户端;客户端在区块链上发布一个交易,并该交易规定会向持有字符串x并且x的哈希值是h的那一方支付已确定的费用;服务端向交易提交一个字符串z,如果该字符串z的哈希值是h,那么该交易向服务端支付费用,服务端得到报酬,否则该交易将费用归还给客户端。
而且,所述指定的机器学习算法为线性回归、逻辑回归、神经网络、支持向量机、k均值或决策树方法。
为了解决外包机器学习服务中难以验证任务是否正确执行,导致的交易公平性缺失的问题,本发明公开了一种提供完整性验证的可审计外包机器学习服务设计方法,通过随机选取训练过程中的计算步骤,利用具有零知识特性的可验证计算技术审计任务执行的正确性,并为几种典型机器学习算法制定了与可验证计算技术相兼容的优化与改进方法。本发明实现了一种允许用户将指定机器学习算法及其数据集外包给服务器进行学习模型训练,并通过用可验证计算技术随机选取训练过程中的迭代来验证计算完整性的方案。
附图说明
图1是本发明实施例承诺-证明协议的计算阶段流程图。
图2是本发明实施例承诺-证明协议的验证阶段流程图。
图3是本发明实施例承诺-证明协议的支付阶段流程图。
具体实施方式
以下结合附图和实施例具体说明本发明的技术方案。
本发明主要基于机器学习领域,考虑机器学习服务中验证结果是否正确性的重要性,提出一种可提供完整性保证的机器学习服务方法。本发明充分考虑了现有技术应用于机器学习服务审计的不足,通过设计承诺证明协议与可验证计算技术来实现可验证的机器学习服务。通过本发明获得的结果更加科学,更加公平。
本发明实施例提供一种确保完整性验证的外包机器学习服务审计方法,包含以下内容:
内容1,提出了一种实现完整性验证的外包机器学习服务审计方法(veriml),实现机器学习模型训练过程的完整性,并且以较高的概率检测错误行为。不仅可确保客户端可以在不可信的服务端上正确执行任务,而且服务提供者所声称的资源消耗与实际工作负载相对应。该方法能够使训练过程可检索,即验证者可以对任意指定迭代的输入和输出进行重构,并且检索过程是可验证的。其体系结构如下:
步骤1,计算,服务端保存额外的辅助信息,实现使训练过程可检索的目的;服务端执行机器学习任务。
步骤2,验证,服务器根据指定的学习算法和参数训练预测模型m。训练阶段后,客户端向服务器发送多个挑战,以证明具体的迭代过程;客户端随机抽取一小部分迭代子集作为挑战,服务端为其生成相应的证明。如果所有证明都能通过验证算法,若客户端可认为极大可能下服务器已正确执行学习任务。即客户端随机选择学习中的个别迭代训练过程,并利用可验证计算技术进行验证服务端提交的证明。为了降低生成证明的计算量,利用多重优化来构造验证所需的更高效的算法电路。为检索指定的迭代,服务器需要两个输入:当前迭代的训练数据x和前一次迭代的模型状态。通过再次执行训练过程可检索到模型结果;为了节省这部分带来的额外开销,服务器将保存模型的一些中间状态,即检查点。因此可以在不需要进行昂贵的密码学运算的条件下快速进行多次迭代,以从检查点检索任意状态。最终,服务器提出每个状态的短标识符,并将其发送给客户端,用于验证挑战的正确性。
步骤3,支付,如果所有证明都通过验证,客户端将向服务端支付外包机器学习服务的费用。
内容2,发明了一种承诺-证明协议,通过采样证明大量循环迭代来避免验证全部计算的昂贵计算成本。在高效训练机器学习模型时,用来验证循环迭代,且具有较高的检测概论。参见图1-3,协议具体细节如下:
首先是系统设置与初始化:客户端发送学习算法的参数到服务器,包括学习率α,批量大小b和收敛阈值t。在达成协议后,客户端将验证需要用到的电路f编译到本地,并通过安全参数λ生成密钥对(公开授权密钥(ekf)、验证密钥(vkf))和一个随机数种子s用于随机选择样本。客户端将随机数种子s发送给服务器。
参见图1,计算阶段,开始后,令当前迭代次数i等于1,每次迭代中服务器利用随机数种子s选取样本。将上一次迭代的结果:状态wi-1和数据批量(数据集)作为输入,服务器输出一个更新后的状态wi并且保存它的标识符ii。在规定次数的迭代后,服务器保存其输出结果(wi)作为检查点。如果某两个时期之间的精度差异小于收敛阈值t,服务器将终止训练过程并发送标识符(i1,…,im)到客户端。
参见图2,验证阶段,首先客户端将电路f和公开授权密钥(ekf)发送给服务器,服务器检查电路的正确性。之后,客户端随意选取m次迭代(s1,s2,…,sm)用于验证,向服务器发送索引集来挑战相应的证明(πs1,…,πsm)。其次,服务器定位检查点得到检索结果(wsi-1,....,wsm-1),随后服务器产生证明(i’si-1,i’si,πsi),并将结果(i’si-1,i’si,πsi)发送给客户端。接着,客户端利用随机数种子s选取样本输入,针对所选取的迭代运行验证函数(verify)。若函数输出为零,则客户端拒绝其结果,否则客户端将承诺中的{i’si-1,i’si}与{isi-1,isi}进行比较。如果
参见图3,支付阶段,如果在验证阶段客户端输出接收,则进入支付阶段。首先服务器使用对称密钥(k)加密已经训练好的模型,然后将加密后的模型和对称密钥(k)的哈希值h发送给客户端。其次,客户端在区块链上发布一个交易,并该交易规定会向持有字符串x并且x的哈希值是h的那一方支付已确定的费用。服务端向交易提交一个字符串z,如果该字符串z的哈希值是h,那么该交易向服务端支付费用,服务端得到报酬,否则该交易将费用归还给客户端。
为便于实施参考起见,实施例为六种典型机器学习算法上设计可审计的机器学习服务框架,以下以线性回归、逻辑回归、神经网络、支持向量机、k均值和决策树六种代表性机器学习算法为例对本发明的流程进行具体的阐述。具体的实施方案如下:
算法1,线性回归:
步骤1,浮点数运算转化。为解决可验证计算技术在算术运算中不支持浮点数的问题,采用定点数重表示法,在调用运算电路之前,通过将所有输入乘以2l来将其转换为整数。考虑到两个输入的相乘会得到一个长度不同的乘积,线性回归方程中每个术语不一致的放大,将导致最终无法得到正确结果,因此在在每次迭代之后,需要将输出截取为前l位,以作为下一次迭代的输入。
步骤2,计算电路构建。为检测每次迭代中随机梯度下降算法执行的正确性,先构建一个简单的预测电路,并计算对当前批次数据进行预测的结果均方误差(m服务器e)。
步骤3,模型训练。现有的可验证计算机制中客户端必须知道每次迭代的输入、输出与模型的中间输出以执行验证。但由于客户端可能直接将该中间结果作为训练模型而不给予报酬,将违背了商业服务中公平交易的前提,因此必需要确保客户端在未知输入、输出与模型的前提下来检验每次迭代的正确性。输入状态可由可验证计算技术所具备的零知识特性来保障。在此基础之上,为减少验证所需要的计算开销,本发明设计了一种参数盲化方法,将标记的输出状态简化为一个短标识符。为保障该方法的安全性,其设计需要具备两个条件:1)从标识符检索输出状态是困难的;2)两个不同输出状态碰撞的概率较小。由于输出状态仅由输入状态和当前批次的数据决定,因此需要确保服务器难以生成使指定迭代可通过验证的伪状态。
本发明的设计将输入或输出状态向量中的所有元素求和,再对总和进行哈希运算。此外,同时引入一个由客户端生成的随机系数向量v对状态进行加权求和,以实现保证各个模型参数的正确性的目的。
步骤4,学习算法超参数编码。考虑到学习率α对模型训练收敛速度,以及迭代的数量和模型的性能的影响,将固定的学习率α作为常数编码进电路中,来达到降低计算成本的目的。若α发生变化时,则需要将α作为电路的额外输入的方法。与之相同,数据集大小等参数信息也将以同样方式编码到电路中。
步骤5,迭代抽样验证。即验证实际的输出与承诺的一致性。为避免迭代数量多导致验证时间过长的问题,本发明设计了一种随机抽样部分迭代,再利用可验证技术来单独进行验证的方法。此外,为验证每次迭代的输入的真实性,本发明设计使服务器证明其同时满足符合在承诺中标识符ii-1的原像,以及该原像和输入状态总和的差值小于d/2l∑j=1dvij。此外,考虑到服务器端对模型中间状态的存储成本,本发明设计通过设置检查点来检索状态。即将n个迭代划分为k个组,每个组包含n/k个状态。服务器仅将每组中第一次迭代的输出状态保存为检查点,通过从检查点重新执行i次迭代来检索该组中的第i个状态。
算法2,逻辑回归。在电路构建步骤中,本发明采用remez近似算法来用多项式表示逻辑回归算法当中的sigmoid函数,以实现兼具计算高精度与低开销的电路设计。其他步骤与线性回归相同,在此不加赘述。
算法3,神经网络。在电路构建步骤中,为尽可能降低复杂神经网络中大量乘法计算导致的昂贵开销,本发明设计了一种反向验证方法,利用预先计算的结果来缩减电路的大小。利用freivald算法(一种用于验证矩阵乘法的概率随机算法),在构造电路时对正向运算进行逆运算。以ni表示第i层的神经元数量,则本发明可以使验证矩阵乘法所需要的乘法数量从bnini-1下降到bni-1。该方法同时还可缓解整数长度溢出的问题。其他步骤与线性回归相同,在此不加赘述。
算法4,支持向量机。在电路构建步骤中,支持向量机模型的主要结构与其他算法相同,即每次迭代后用少量数据更新模型,直到目标函数收敛。具体上,除了基本的加法和乘法,每次迭代还包括两个部分,一次欧几里德投影计算和b 1次比较计算。对其中所需要的除法和平方根计算验证,本发明同样使用如前文所述的反向验证方法,使用预先计算得到的结果,将验证过程转换为乘法运算。其他步骤与线性回归相同,在此不加赘述。
算法5,k均值。在该算法的电路构建步骤中,客户端需要随机选择k个质心来表示簇。在每次迭代中,k均值算法将每个训练样本分配给距离最近的聚类,使用该聚类中所有样本的平均值更新质心。对于每个数据样本,电路将候选最近距离作为输入,然后分别将执行候选最近距离和之前获得的所有k个距离之间的相减。如果电路最终只输出一个0,而所有其他结果都为负,则认为候选最近距离是正确的。其他步骤与线性回归相同,在此不加赘述。
算法6,决策树。在该算法的电路构建步骤中,需要验证其是否满足两个条件:1)对于每个内部结点,是否根据最大信息增益进行划分,2)属于该节点的数据样本是否确实由其子节点组成。本发明同样利用上述的抽样策略,随机选取多个树中节点进行验证,以达到验证整棵树完整性的目的。此外,为减小高维数据导致的昂贵计算开销,本发明设计对数据集中的每个特征,客户端都先将其转换为多个计数桶,然后遍历所有数据构建直方图并将其发送给服务器,从而达到压缩输入数量的目的。该服务器只需使用直方图来计算信息增益以及决策划分。
具体实施时,本发明技术方案提出的方法可由本领域技术人员采用计算机软件技术实现自动运行流程,实现方法的系统装置例如存储本发明技术方案相应计算机程序的计算机可读存储介质以及包括运行相应计算机程序的计算机设备,也应当在本发明的保护范围内。
在一些可能的实施例中,提供一种完整性验证的可审计外包机器学习服务系统,包括处理器和存储器,存储器用于存储程序指令,处理器用于调用存储器中的存储指令执行如上所述的一种完整性验证的可审计外包机器学习服务方法。
在一些可能的实施例中,提供一种完整性验证的可审计外包机器学习服务系统,包括可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序执行时,实现如上所述的一种完整性验证的可审计外包机器学习服务方法。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
1.一种提供完整性验证的可审计外包机器学习服务方法,其特征在于:设置外包机器学习服务审计过程和承诺-证明协议,
所述外包机器学习服务审计过程,用于实现机器学习模型训练过程的完整性保证,检测错误行为,不仅确保客户端在不可信的服务端上正确执行学习任务,而且确保服务提供者所声称的资源消耗与实际工作负载相对应;实现过程如下,
计算阶段,服务端保存额外的辅助信息,实现使训练过程可检索的目的,服务端执行机器学习任务;
验证阶段,服务器根据指定的机器学习算法和参数训练预测模型;训练后,客户端随机抽取部分迭代子集作为挑战,服务端生成相应的证明,如果所有证明都能通过验证算法,客户端认为极大可能下服务器已正确执行学习任务;
支付阶段,如果所有证明都通过验证,客户端将向服务端支付外包机器学习服务的费用;
所述承诺-证明协议,用于在高效训练机器学习模型时,通过采样证明大量循环迭代来避免验证全部计算。
2.根据权利要求1所述提供完整性验证的可审计外包机器学习服务方法,其特征在于:验证阶段中,利用多重优化来构造验证所需的更高效的算法电路,包括由服务器保存模型的一些中间状态作为检查点,支持快速进行多次迭代,从检查点检索任意状态。
3.根据权利要求1所述提供完整性验证的可审计外包机器学习服务方法,其特征在于:所述承诺-证明协议实现如下,
首先在系统设置与初始化时,客户端发送学习算法的参数到服务器,包括学习率α,批量大小b和收敛阈值;在达成协议后,客户端将验证需要用到的电路f编译到本地,并通过安全参数λ生成密钥对和一个随机数种子s用于随机选择样本;客户端将随机数种子s发送给服务器;
在计算阶段,每次迭代中服务器利用随机数种子s选取样本,将上一次迭代的结果状态wi-1和数据批量作为输入,服务器输出一个更新后的状态wi并且保存它的标识符ii;在规定次数的迭代后,服务器保存输出结果wi作为检查点;如果某两个时期之间的精度差异小于收敛阈值t,服务器将终止训练过程并发送标识符(i1,…,im)到客户端。
在验证阶段,首先客户端将电路f和公开授权密钥ekf发送给服务器,服务器检查电路的正确性;之后,客户端随意选取m次迭代(s1,s2,…,sm)用于验证,向服务器发送索引集来挑战相应的证明(πs1,…,πsm;服务器定位检查点得到检索结果(wsi-1,....,wsm-1),服务器产生证明(i’si-1,i’si,πsi),并将结果(i’si-1,i’si,πsi)发送给客户端;客户端利用随机数种子s选取样本输入,针对所选取的迭代运行验证函数;若函数输出为零,则客户端拒绝其结果,否则客户端将承诺中的{i’si-1,i’si}与{isi-1,isi}进行比较;如果
在支付阶段,首先服务器使用对称密钥k加密已经训练好的模型,然后将加密后的模型和对称密钥k的哈希值h发送给客户端;客户端在区块链上发布一个交易,并该交易规定会向持有字符串x并且x的哈希值是h的那一方支付已确定的费用;服务端向交易提交一个字符串z,如果该字符串z的哈希值是h,那么该交易向服务端支付费用,服务端得到报酬,否则该交易将费用归还给客户端。
4.根据权利要求1或2或3所述提供完整性验证的可审计外包机器学习服务方法,其特征在于:所述指定的机器学习算法为线性回归、逻辑回归、神经网络、支持向量机、k均值或决策树方法。
技术总结