比特币上的零知识私人机器学习

之前,我们已经展示了在比特币上运行一个成熟的深度神经网络,其中机器学习 (ML) 算法的输入和模型都是公开的。在实践中,通常希望将输入或模型保持在链外并因此保持私有,同时仍确保 ML 算法忠实地运行。我们通过将零知识证明 (ZKP) 应用于 ML 来实现这一点。

比特币上的零知识私人机器学习-1

零知识链上机器学习

机器学习有两类私人信息。

私人输入

模型的输入是隐藏的,但模型本身是公开的。这对于涉及敏感和私人数据的应用程序特别有用,例如财务记录、生物特征数据(例如指纹、面部)、医疗记录和位置信息。例如,可以证明他已超过 21 岁而不透露他的年龄。或者保险公司使用信用评分模型进行贷款审批。该模型是为了透明而公开的,但应保密输入,例如申请人的工资和银行对账单。

私人模特

模型的输入是公开的,但模型本身是私有的,通常是因为它是知识产权。例如,我们使用私人公司拥有的肿瘤分类模型从图像中检测肿瘤。该模型被证明在对公共数据集进行分类时具有 99% 的准确率。该公司可以只使用其模型的加密货币承诺,即所有模型参数的散列。我们可以确定该模型是合法的,但没有看到它。为了公平起见,加密货币承诺还确保将相同的模型应用于每个人。这在例如基于候选人的公共信息对候选人进行排名的录取模型中是期望的。

ZKP 非常适合在使用链上 ML 时保留隐私,因为它可以在链下隐藏信息,同时证明 ML 推理是正确的。

分类手写数字

作为演示,我们实现了一个简单的手写数字分类模型。该模型是使用来自MNIST 数据集的标记示例进行训练的。该模型的架构与我们用于完全链上模型的架构非常相似。

比特币上的零知识私人机器学习-2

我们使用ZoKrates构建 ZK 电路,它可以通过简单地使用关键字private声明任何输入来将任何输入私有化。

私人输入

从上面的代码中,我们可以看到模型的输入model_inputs作为私有参数传递,同时模型参数(权重和偏差)是公开的。一旦我们将输入传递给模型,电路就会对数据执行所有模型操作并输出模型预测/类别。

私人模特

以下是使模型私有的代码。

在这里,我们不传递模型输入数据,而是将模型参数本身作为私有参数传递。使用这些秘密参数,电路执行模型的所有必要操作,并将结果与​​一批测试示例进行比较。如果模型达到一定的分类精度(CA)阈值,则执行成功。

第一个场景第二个场景的完整代码可以在 GitHub 上找到。

概括

我们已经展示了如何利用 zk-SNARKS 的 ZK 属性进行链上机器学习。这允许我们隐藏 ML 计算的特定部分。

原文 Medium
提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢