a16z:机器学习和零知识证明的制衡
本文详述了零知识证明在机器学习中的应用方式以及两个领域互为促进的多种推演。
原文标题:Checks and balances: Machine learning and zero-knowledge proofs
原文作者:Elena Burger
原文来源:a16zcrypto
编译:Kate, Marsbit
本文作者Elena Burger,是a16z crypto的交易合伙人,专注于游戏、NFT、web3媒体和去中心化基础设施。在加入团队之前,她在Gilder, Gagnon, Howe, and Co担任了四年的股票分析师。她拥有哥伦比亚大学巴纳德学院的历史学学士学位。
在过去的几年里,区块链上的零知识证明在两个关键目的上非常有用:(1)通过处理链下交易和验证主网上的结果来扩展计算受限的网络;(2)通过启用屏蔽交易来保护用户隐私,只有拥有解密密钥的人才能看到。在区块链的背景下,很明显为什么这些属性是可取的:像以太坊这样的去中心化网络如果没有对验证器处理能力、带宽和延迟无法维持的需求(因此需要有效性Rollup),就无法增加吞吐量或区块大小,并且所有交易对任何人都是可见的(因此需要链上隐私解决方案)。
但是零知识证明对于第三类功能也很有用:有效地验证任何类型的计算是否正确运行(不仅仅是EVM链下实例化中的计算)。这远远超出了区块链的范畴。
利用零知识证明的能力来简洁地验证计算系统的进步,现在使得用户可以从现有的每个数字产品(最关键的是机器学习模型)中要求区块链确保相同程度的不可信任和可验证性。对区块链计算的高需求激励了零知识证明研究,创建了具有更小内存占用和更快证明和验证时间的现代证明系统,使得现在可以在链上验证某些小型机器学习算法。
到目前为止,我们可能都体验过与一个极其强大的机器学习产品交互的潜力。几天前,我使用GPT-4帮助我创建了一个在国际象棋中不断击败我的AI。这感觉像是过去几十年机器学习领域所有进步的一个缩影:IBM的开发人员花了12年时间开发出Deep Blue,一个运行在32节点IBM RS/6000 SP计算机上的模型,能够每秒评估近2亿步国际象棋,在1997年击败了国际象棋冠军加里·卡斯帕罗夫(Gary Kasparov)。相比之下,我只花了几个小时,我只编写了很少的代码,就编写了一个能够战胜我的程序。
诚然,我怀疑我创造的人工智能能否在国际象棋中击败Gary Kasparov,但这不是重点。关键是任何玩GPT-4的人都可能有类似的获得超能力的经历:不费什么力气,你就可以创造出接近或超过你自己能力的东西。我们都是IBM的研究人员;我们都是Gary Kasparov。
显然,这是令人兴奋和有点令人生畏的思考。对于任何在加密行业工作的人来说,自然的冲动(在惊叹于机器学习可以做什么之后)是考虑潜在的中心化向量,以及如何将这些向量去中心化到一个人们可以透明地审计和拥有的网络中。目前的模型是通过吸收大量公开可用的文本和数据来构建的,但目前只有少数人控制和拥有这些模型。更具体地说,问题不是“人工智能是否具有巨大的价值”,而是“我们如何构建这些系统,使与之交互的任何人都能获得经济利益,如果他们愿意,还能确保他们的数据以尊重他们隐私权的方式使用。”
最近,有一种声音呼吁暂停或减缓Chat-GPT等大型人工智能项目的进展。停止进展可能不是这里的解决方案:相反,更好的做法是推动开源模型,在模型提供者希望其权重或数据是私有的情况下,用链上和完全可审计的隐私保护的零知识证明来保护它们。如今,后一种围绕私有模型权重和数据的用例在链上尚不可行,但零知识证明系统的进步将使其在未来成为可能。
可验证和可拥有的机器学习
像我使用Chat-GPT构建的象棋AI在这一点上感觉相对良性:一个具有统一输出的程序,它不会使用侵犯有价值的知识产权或侵犯隐私的数据。但是,当我们想要确保我们被告知的模型在 API 后面运行时确实是运行的模型时会发生什么?或者如果我想将经过验证的数据提取到链上的模型中,并确保数据确实来自合法方?如果我想确保提交数据的“人”确实是人,而不是试图攻击我的网络的机器人,该怎么办?零知识证明,凭借其简洁地表示和验证任意程序的能力,是实现这一目标的一种方式。
值得注意的是,今天,在链上机器学习环境中零知识证明的主要用例是验证正确的计算。换句话说,零知识证明,更具体地说,SNARK(简洁的非交互式知识论证),在ML上下文中因其简洁属性而最有用。这是因为零知识证明保护了证明者(及其处理的数据)的隐私不受窥探验证者的侵害。像全同态加密(FHE)、功能加密或可信执行环境(TEE)这样的隐私增强技术更适用于让不受信任的验证者对私有输入数据运行计算(更深入地探索这些技术不在本文的范围内)。
让我们退一步,从更高层次上理解你可以用零知识表示的机器学习应用程序的类型。(要想更深入地了解ZK,请参阅我们关于零知识证明算法和硬件改进的文章,Justin Thaler关于SNARK性能的工作,或者我们的零知识标准。)零知识证明通常将程序表示为算术电路:使用这些电路,证明者从公共和私人输入中生成一个证明,验证者从数学上计算该语句的输出是正确的——而不获得关于私人输入的任何信息。
我们仍然处于在链上使用零知识证明进行计算实用验证的非常早期阶段,但算法的改进正在扩大可行的范围。以下是零知识证明在机器学习中的五种应用方式。
1. 模型真实性:你希望确保某些实体声称已经运行的机器学习模型确实是运行过的模型。例如,可以在 API 后面访问模型的情况,并且特定模型的提供者有多个版本——比如,一个更便宜、不太准确的版本和一个更昂贵、性能更高的版本。如果没有证据,你就无法知道模型的提供者是否为你提供了更便宜的模型,而你实际上已经支付了更昂贵的模型(例如,模型的提供者想要节省服务器成本并提高他们的利润率)。
要做到这一点,你需要为模型的每个实例化单独的证明。实现这一目标的一种实用方法是通过Dan Boneh、Wilson Nguyen和Alex Ozdemir的功能承诺框架,这是一种基于SNARK的零知识承诺方案,允许模型所有者向模型提交数据,用户可以将数据输入模型并收到已提交模型已运行的验证。一些构建在Risc Zero(一种基于 STARK 的通用虚拟机)上的应用程序也支持这一点。Daniel Kang、Tatsunori Hashimoto、Ion Stoica和Yi Sun进行的其他研究已经证明,可以验证ImageNet数据集上的有效推断,准确率为92%(与性能最高的非ZK验证ImageNet模型相当)。
但是仅仅收到提交的模型已经运行的证据是不够的。模型可能不能准确地表示给定的程序,因此希望提交的模型由第三方进行审计。功能承诺允许证明者确定它使用了一个已提交的模型,但它们不能保证关于已提交模型的任何内容。如果我们能够使零知识证明具有足够的可执行性来证明训练(参见下面的示例#4),那么有一天我们也可以开始得到这些保证。
2. 模型完整性:你希望确保相同的机器学习算法以相同的方式在不同用户的数据上运行。这在你不希望应用任意偏见的领域非常有用,例如信用评分决策和贷款申请。你也可以使用功能承诺。为此,你将提交一个模型及其参数,并允许人们提交数据。输出将验证模型是否使用每个用户数据的提交参数运行。或者,模型及其参数可以公开,用户自己可以证明他们将适当的模型和参数应用于他们自己的(经过身份验证的)数据。这在医疗领域可能特别有用,因为法律规定患者的某些信息必须保密。在未来,这可能会使医疗诊断系统能够从完全私密的实时用户数据中学习和改进。
3.证明:你希望将来自外部经过验证的各方(例如,任何可以产生数字签名的数字平台或硬件)的证明集成到一个模型或任何其他类型的链上运行的智能合约中。为此,你将使用零知识证明来验证签名,并将该证明用作程序的输入。Anna Rose和Tarun Chitra最近与Daniel Kang和Yi Sun一起主持了一集零知识播客,探讨了这一领域的最新进展。
具体来说,Daniel和Yi最近发布了一项工作,研究如何验证由经过验证的传感器拍摄的图像是否经过裁剪、调整大小或有限的编辑等转换——这在你想证明图像不是深度伪造而是经过某种合法形式的编辑的情况下很有用。Dan Boneh和Trisha Datta也做了类似的工作,使用零知识证明来验证图像的来源。
关于【a16z:机器学习和零知识证明的制衡】的延伸阅读
Vitalik:Binius——对二进制字段的高效证明
本文介绍了2019年时代密码学中的SNARK和STARK技术,特别感谢Justin Drake, Jim Posen, Benjamin Diamond和Radi Cojbasic的反馈。STARK和SNARK是一种证明计算机程序正确性的方法,通过将程序转换成包含多项式的数学方程来实现。STARK使用更大的数字,但不需要可信的设置,并且抗量子。SNARK使用更小的数字,但有限制。Binius是一种新的多项式承诺方案,它使用超立方体来表示计算轨迹,并通过Reed-Solomon编码来防止作弊。Binius是一种基于二进制场的零知识证明系统,可以有效地检查多项式的计算过程。它可以与查找协议结合使用,提高证明系统的效率。未来可能会有更多基于二进制字段的改进。
读懂Binance Launchpool最新项目io.net:连接全球GPU资源,重塑机器学习的未来
io.net是一个基于Solana区块链的去中心化计算网络,通过集成未充分利用的GPU资源,为AI和机器学习领域提供低成本的大量计算能力。平台使用双令牌经济系统激励参与者并确保效率和可持续性。IO Cloud简化了GPU集群的部署和管理,IO Worker和IO Explorer提供账户管理和网络运营洞察。IO币用于支付和奖励,生态系统包括GPU租用者、所有者和IO币持有者。该项目获得3000万美元融资,具有可扩展性和并行训练优势,但仍面临技术复杂性、网络安全和市场竞争挑战。长期成功取决于持续开发和采用能力。
但是,更广泛地说,任何经过数字认证的信息都可以进行这种形式的验证:正在研究EZKL库的Jason Morton(下一节将详细介绍)将其称为“给区块链眼睛”。任何签名的端点:(例如,Cloudflare的SXG服务,第三方公证员)都会生成可验证的数字签名,这对于证明来自受信任方的出处和真实性非常有用。
4. 去中心化推理或训练:你希望以去中心化的方式进行机器学习推理或训练,并允许人们向公共模型提交数据。要做到这一点,你可以在链上部署一个已经存在的模型,或者构建一个全新的网络,并使用零知识证明来压缩模型。Jason Morton的EZKL库正在创建一种方法,用于提取ONXX和JSON文件,并将它们转换为ZK-SNARK电路。最近在ETH Denver的演示表明,这可以用于创建基于图像识别的链上寻宝游戏等应用程序,其中游戏的创造者可以上传照片,生成图像的证明,玩家可以上传图像;验证者检查用户上传的图像是否与创建者生成的证明充分匹配。EZKL现在可以验证多达1亿个参数的模型,这意味着它可以用于在链上验证ImageNet大小的模型(有6000万个参数)。
其他团队,如Modulus Labs正在对不同的证明系统进行链上推理的基准测试。Modulus的基准运行高达1800万个参数。在训练方面,Gensyn正在构建一个去中心化的计算系统,用户可以输入公共数据,并通过一个去中心化的节点网络来训练他们的模型,并验证训练的正确性。
5. 身份证明:你想要在不损害他们隐私的情况下验证某人是独一无二的人。为此,你需要创建一种验证方法——例如,生物识别扫描,或以加密方式提交政府ID的方法。然后,你将使用零知识证明来检查某人是否已被验证,而不透露有关该人身份的任何信息,无论该身份是完全可识别的,还是像公钥那样的假名。
Worldcoin通过他们的身份证明协议来做到这一点,这是一种通过为用户生成唯一的虹膜代码来确保抗女巫攻击的方法。至关重要的是,为WorldID创建的私钥(以及为Worldcoin用户创建的加密钱包的其他私钥)与项目的眼睛扫描球在本地生成的虹膜代码完全分离。这种分离完全将生物识别标识与任何形式的用户密钥分离开来,这些密钥可能来自于一个人。Worldcoin还允许应用程序嵌入一个SDK,允许用户使用WorldID登录,并利用零知识证明保护隐私,允许应用程序检查该人是否拥有WorldID,但不支持个人用户跟踪(更多细节,请参阅这篇文章)。
这个例子是用零知识证明的隐私保护特性来对抗更弱、更恶意的人工智能形式的一种形式,所以它与上面列出的其他例子有很大的不同(例如,证明你是一个真正的人,而不是一个机器人,而不透露任何关于你自己的信息)。
模型架构和挑战
实现SNARK(简洁的非交互式知识论证)的证明系统的突破是将许多机器学习模型放在链上的关键驱动因素。一些团队正在现有的架构(包括Plonk、Plonky2、Air等)中制作定制电路。在自定义电路方面,Halo 2已经成为Daniel Kang和Jason Morton的EZKL项目等在工作中使用的流行后端,。Halo 2的证明时间是准线性的,证明大小通常只有几千字节,验证时间是常数。也许更重要的是,Halo 2拥有强大的开发人员工具,使其成为开发人员使用的流行SNARK后端。其他的团队,比如Risc Zero,则致力于一个通用的VM策略。其他人正在使用Justin Thaler基于求和校验协议的超高效证明系统创建自定义框架。
证明生成和验证时间绝对取决于生成和检查证明的硬件,以及生成证明的电路的大小。但这里需要注意的关键是,无论所表示的程序是什么,证明的大小总是相对较小,因此验证者检查证明的负担是有限的。然而,这里有一些微妙之处:对于像Plonky2这样使用基于FRI的承诺方案的证明系统,证明大小可能会增加。(除非它被包装在一个基于配对的SNARK中,如Plonk或Groth16,它们的大小不会随着语句的复杂性而增长。)
这里机器学习模型的含义是,一旦你设计了一个证明系统,准确地表示一个模型,实际验证输出的成本将非常便宜。开发人员必须考虑最多的事情是证明时间和内存:以一种可以相对快速地证明模型的方式表示模型,并且理想的证明大小在几千字节左右。为了证明机器学习模型在零知识下的正确执行,你需要对模型架构(层、节点和激活函数)、参数、约束和矩阵乘法操作进行编码,并将它们表示为电路。这涉及到将这些属性分解为可以在有限域上执行的算术运算。
该领域仍处于起步阶段。在将模型转换为电路的过程中,准确性和保真度可能会受到影响。当一个模型被表示为一个算术电路时,那些前面提到的模型参数、约束和矩阵乘法操作可能需要近似和简化。当算术运算被编码为证明的有限域中的元素时,一些精度可能会丢失(或者在没有这些优化的情况下,使用当前的零知识框架生成证明的成本将高得离谱)。此外,为了精确起见,机器学习模型的参数和激活通常被编码为32位,但今天的零知识证明不无法在没有大量开销的情况下以必要的算术电路格式表示32位浮点运算。因此,开发人员可以选择使用量化的机器学习模型,其32位整数已经转换为8位精度。这些类型的模型有利于表示为零知识证明,但被验证的模型可能是高质量初始模型的粗略近似。
在这个阶段,无可否认,这是一场追赶游戏。随着零知识证明变得更加优化,机器学习模型的复杂性也在增长。已经有许多有前景的优化领域:证明递归可以通过允许证明用作下一个证明的输入来减少整体证明的大小,解锁证明压缩。也有一些新兴的框架,比如Linear A的Apache张量虚拟机(TVM)的分支,它改进了一个转译器,用于将浮点数转换为零知识友好的整数表示。最后,我们a16z crypto乐观地认为,未来的工作将使在SNARK中表示32位整数变得更加合理。
“规模”的两种定义
零知识证明可通过压缩进行扩展:SNARK允许你使用一个极其复杂的系统(虚拟机、机器学习模型),并以数学方式表示它,以便验证它的成本小于运行它的成本。另一方面,机器学习通过扩展来扩展:今天的模型随着更多的数据、参数和GPU/TPU参与训练和推理过程而变得更好。中心化的公司可以以几乎不受限制的规模运行服务器:按月收取API调用费用,并支付运营成本。
区块链网络的经济现实几乎以相反的方式运行:鼓励开发人员优化他们的代码,使其在计算上可行(并且便宜)。这种不对称有一个巨大的好处:它创造了一个证明系统需要变得更有效的环境。我们应该推动在机器学习中要求区块链提供同样的好处——即可验证的所有权和共享的真理概念。
虽然区块链激励了zk-SNARK的优化,但计算的每个领域都将受益。
致谢:Justin Thaler, Dan Boneh, Guy Wuollet, Sam Ragsdale, Ali Yahya, Chris Dixon, Eddy Lazzarin, Tim Roughgarden, Robert Hackett, Tim Sullivan, Jason Morton, Peiyuan Liao, Tarun Chitra, Brian Retford, Daniel Kang, Sun Yi, Anna Rose, Modulus Labs, DC Builder。
免责声明:本文仅代表作者个人观点,不代表链观CHAINLOOK立场,不承担法律责任。文章及观点也不构成投资意见。请用户理性看待市场风险,以及遵守所在国家和地区的相关法律法规。
图文来源:Marsbit,如有侵权请联系删除。转载或引用请注明文章出处!