原文标题:Checksandbalances:Machinelearningandzero-knowledgeproofs
原文作者:ElenaBurger
原文来源:a16zcrypto
编译:Kate,Marsbit
本文作者ElenaBurger,是a16zcrypto的交易合伙人,专注于游戏、NFT、web3媒体和去中心化基础设施。在加入团队之前,她在Gilder,Gagnon,Howe,andCo担任了四年的股票分析师。她拥有哥伦比亚大学巴纳德学院的历史学学士学位。
在过去的几年里,区块链上的零知识证明在两个关键目的上非常有用:(1)通过处理链下交易和验证主网上的结果来扩展计算受限的网络;(2)通过启用屏蔽交易来保护用户隐私,只有拥有解密密钥的人才能看到。在区块链的背景下,很明显为什么这些属性是可取的:像以太坊这样的去中心化网络如果没有对验证器处理能力、带宽和延迟无法维持的需求(因此需要有效性Rollup),就无法增加吞吐量或区块大小,并且所有交易对任何人都是可见的(因此需要链上隐私解决方案)。
但是零知识证明对于第三类功能也很有用:有效地验证任何类型的计算是否正确运行(不仅仅是EVM链下实例化中的计算)。这远远超出了区块链的范畴。
利用零知识证明的能力来简洁地验证计算系统的进步,现在使得用户可以从现有的每个数字产品(最关键的是机器学习模型)中要求区块链确保相同程度的不可信任和可验证性。对区块链计算的高需求激励了零知识证明研究,创建了具有更小内存占用和更快证明和验证时间的现代证明系统,使得现在可以在链上验证某些小型机器学习算法。
到目前为止,我们可能都体验过与一个极其强大的机器学习产品交互的潜力。几天前,我使用GPT-4帮助我创建了一个在国际象棋中不断击败我的AI。这感觉像是过去几十年机器学习领域所有进步的一个缩影:IBM的开发人员花了12年时间开发出DeepBlue,一个运行在32节点IBMRS/6000SP计算机上的模型,能够每秒评估近2亿步国际象棋,在1997年击败了国际象棋冠军加里·卡斯帕罗夫(GaryKasparov)。相比之下,我只花了几个小时,我只编写了很少的代码,就编写了一个能够战胜我的程序。
Coinbase主管:Richard Heart关联钱包持有超7亿枚DAI,占流通量的15.5%:7月31日消息,Coinbase主管Conor Grogan在社交媒体发文表示,Richard Heart地址目前持有至少7.03亿枚DAI,占DAI流通量的15.5%。
金色财经曾报道,美国SEC早些时候起诉了Richard Schueler(亦称Richard Heart),指控其涉嫌出售未注册的证券,违反了联邦证券法。据SEC称,Heart通过为这些项目出售代币筹集了超过10亿美元。[2023/8/1 16:10:03]
诚然,我怀疑我创造的人工智能能否在国际象棋中击败GaryKasparov,但这不是重点。关键是任何玩GPT-4的人都可能有类似的获得超能力的经历:不费什么力气,你就可以创造出接近或超过你自己能力的东西。我们都是IBM的研究人员;我们都是GaryKasparov。
显然,这是令人兴奋和有点令人生畏的思考。对于任何在加密行业工作的人来说,自然的冲动(在惊叹于机器学习可以做什么之后)是考虑潜在的中心化向量,以及如何将这些向量去中心化到一个人们可以透明地审计和拥有的网络中。目前的模型是通过吸收大量公开可用的文本和数据来构建的,但目前只有少数人控制和拥有这些模型。更具体地说,问题不是“人工智能是否具有巨大的价值”,而是“我们如何构建这些系统,使与之交互的任何人都能获得经济利益,如果他们愿意,还能确保他们的数据以尊重他们隐私权的方式使用。”
最近,有一种声音呼吁暂停或减缓Chat-GPT等大型人工智能项目的进展。停止进展可能不是这里的解决方案:相反,更好的做法是推动开源模型,在模型提供者希望其权重或数据是私有的情况下,用链上和完全可审计的隐私保护的零知识证明来保护它们。如今,后一种围绕私有模型权重和数据的用例在链上尚不可行,但零知识证明系统的进步将使其在未来成为可能。
Arbitrum永续合约总交易量超110亿美元,总用户量超5.1万人:1月3日消息,据Dune用户defimochi统计,Arbitrum上5大永续合约交易平台(GMX、RageTrade、CapFinance、MUX、Mycelium)的总交易量达到11,137,261,284美元,总用户数量达到51,665人。[2023/1/3 22:23:18]
可验证和可拥有的机器学习
像我使用Chat-GPT构建的象棋AI在这一点上感觉相对良性:一个具有统一输出的程序,它不会使用侵犯有价值的知识产权或侵犯隐私的数据。但是,当我们想要确保我们被告知的模型在API后面运行时确实是运行的模型时会发生什么?或者如果我想将经过验证的数据提取到链上的模型中,并确保数据确实来自合法方?如果我想确保提交数据的“人”确实是人,而不是试图攻击我的网络的机器人,该怎么办?零知识证明,凭借其简洁地表示和验证任意程序的能力,是实现这一目标的一种方式。
值得注意的是,今天,在链上机器学习环境中零知识证明的主要用例是验证正确的计算。换句话说,零知识证明,更具体地说,SNARK(简洁的非交互式知识论证),在ML上下文中因其简洁属性而最有用。这是因为零知识证明保护了证明者(及其处理的数据)的隐私不受窥探验证者的侵害。像全同态加密(FHE)、功能加密或可信执行环境(TEE)这样的隐私增强技术更适用于让不受信任的验证者对私有输入数据运行计算(更深入地探索这些技术不在本文的范围内)。
让我们退一步,从更高层次上理解你可以用零知识表示的机器学习应用程序的类型。(要想更深入地了解ZK,请参阅我们关于零知识证明算法和硬件改进的文章,JustinThaler关于SNARK性能的工作,或者我们的零知识标准。)零知识证明通常将程序表示为算术电路:使用这些电路,证明者从公共和私人输入中生成一个证明,验证者从数学上计算该语句的输出是正确的——而不获得关于私人输入的任何信息。
V神:Arbitrum团队和社区做的很棒,希望能得到更多项目的支持:11月21日消息,Vitalik一小时前在Arbitrum的discord社群中表达了对Arbitrum所做的扩容工作的称赞,间接回应了三箭资本创始人SuZhu的质疑:我知道很多人对于“以太坊团队不关心用户”的言论感到沮丧,但你们作为解决手续费问题的中坚力量取得了极大的进展,目前已经获得了Binance的提款通道,希望后续能得到更多项目的支持(我们即将开发出去中心化的跨Rollup桥)。[2021/11/21 7:02:53]
我们仍然处于在链上使用零知识证明进行计算实用验证的非常早期阶段,但算法的改进正在扩大可行的范围。以下是零知识证明在机器学习中的五种应用方式。
1.模型真实性:你希望确保某些实体声称已经运行的机器学习模型确实是运行过的模型。例如,可以在API后面访问模型的情况,并且特定模型的提供者有多个版本——比如,一个更便宜、不太准确的版本和一个更昂贵、性能更高的版本。如果没有证据,你就无法知道模型的提供者是否为你提供了更便宜的模型,而你实际上已经支付了更昂贵的模型(例如,模型的提供者想要节省服务器成本并提高他们的利润率)。
要做到这一点,你需要为模型的每个实例化单独的证明。实现这一目标的一种实用方法是通过DanBoneh、WilsonNguyen和AlexOzdemir的功能承诺框架,这是一种基于SNARK的零知识承诺方案,允许模型所有者向模型提交数据,用户可以将数据输入模型并收到已提交模型已运行的验证。一些构建在RiscZero(一种基于STARK的通用虚拟机)上的应用程序也支持这一点。DanielKang、TatsunoriHashimoto、IonStoica和YiSun进行的其他研究已经证明,可以验证ImageNet数据集上的有效推断,准确率为92%(与性能最高的非ZK验证ImageNet模型相当)。
a16z Crypto和Cultural Leadership Fund公布HBCU Token委托计划:2 月 11 日,a16z Crypto 和 Cultural Leadership Fund 公布 HBCU Token 委托计划,此次授权委托是扩大在治理过程中拥有有意义发言权的参与者群体的一种方式。当它有效地完成时,它最终是一种长期发展更高质量管理机构的方式。
a16z 创建了代表计划以允许更多人参与网络治理,与多元化的优秀代表网络合作,包括非营利组织、初创公司、学生俱乐部、社区领袖等。为 HBCU 学生和俱乐部举办的信息发布会将于 2 月 23 日举行。[2022/2/11 9:44:32]
但是仅仅收到提交的模型已经运行的证据是不够的。模型可能不能准确地表示给定的程序,因此希望提交的模型由第三方进行审计。功能承诺允许证明者确定它使用了一个已提交的模型,但它们不能保证关于已提交模型的任何内容。如果我们能够使零知识证明具有足够的可执行性来证明训练(参见下面的示例#4),那么有一天我们也可以开始得到这些保证。
2.模型完整性:你希望确保相同的机器学习算法以相同的方式在不同用户的数据上运行。这在你不希望应用任意偏见的领域非常有用,例如信用评分决策和贷款申请。你也可以使用功能承诺。为此,你将提交一个模型及其参数,并允许人们提交数据。输出将验证模型是否使用每个用户数据的提交参数运行。或者,模型及其参数可以公开,用户自己可以证明他们将适当的模型和参数应用于他们自己的数据。这在医疗领域可能特别有用,因为法律规定患者的某些信息必须保密。在未来,这可能会使医疗诊断系统能够从完全私密的实时用户数据中学习和改进。
3.证明:你希望将来自外部经过验证的各方(例如,任何可以产生数字签名的数字平台或硬件)的证明集成到一个模型或任何其他类型的链上运行的智能合约中。为此,你将使用零知识证明来验证签名,并将该证明用作程序的输入。AnnaRose和TarunChitra最近与DanielKang和YiSun一起主持了一集零知识播客,探讨了这一领域的最新进展。
a16z:已经在2021年筹集总共90亿美元基金:1月8日消息,a16z发文宣布已经于2021年筹集总共90亿美元基金,包括15亿美元Bio基金,50亿美元增长基金,25亿美元风投基金,22亿美元加密基金,4亿美元种子基金,并表示将继续投资全阶段(公司),(为这些公司)提供2.5万到数亿美元投资。[2022/1/8 8:34:11]
具体来说,Daniel和Yi最近发布了一项工作,研究如何验证由经过验证的传感器拍摄的图像是否经过裁剪、调整大小或有限的编辑等转换——这在你想证明图像不是深度伪造而是经过某种合法形式的编辑的情况下很有用。DanBoneh和TrishaDatta也做了类似的工作,使用零知识证明来验证图像的来源。
但是,更广泛地说,任何经过数字认证的信息都可以进行这种形式的验证:正在研究EZKL库的JasonMorton(下一节将详细介绍)将其称为“给区块链眼睛”。任何签名的端点:(例如,Cloudflare的SXG服务,第三方公证员)都会生成可验证的数字签名,这对于证明来自受信任方的出处和真实性非常有用。
4.去中心化推理或训练:你希望以去中心化的方式进行机器学习推理或训练,并允许人们向公共模型提交数据。要做到这一点,你可以在链上部署一个已经存在的模型,或者构建一个全新的网络,并使用零知识证明来压缩模型。JasonMorton的EZKL库正在创建一种方法,用于提取ONXX和JSON文件,并将它们转换为ZK-SNARK电路。最近在ETHDenver的演示表明,这可以用于创建基于图像识别的链上寻宝游戏等应用程序,其中游戏的创造者可以上传照片,生成图像的证明,玩家可以上传图像;验证者检查用户上传的图像是否与创建者生成的证明充分匹配。EZKL现在可以验证多达1亿个参数的模型,这意味着它可以用于在链上验证ImageNet大小的模型(有6000万个参数)。
其他团队,如ModulusLabs正在对不同的证明系统进行链上推理的基准测试。Modulus的基准运行高达1800万个参数。在训练方面,Gensyn正在构建一个去中心化的计算系统,用户可以输入公共数据,并通过一个去中心化的节点网络来训练他们的模型,并验证训练的正确性。
5.身份证明:你想要在不损害他们隐私的情况下验证某人是独一无二的人。为此,你需要创建一种验证方法——例如,生物识别扫描,或以加密方式提交政府ID的方法。然后,你将使用零知识证明来检查某人是否已被验证,而不透露有关该人身份的任何信息,无论该身份是完全可识别的,还是像公钥那样的假名。
Worldcoin通过他们的身份证明协议来做到这一点,这是一种通过为用户生成唯一的虹膜代码来确保抗女巫攻击的方法。至关重要的是,为WorldID创建的私钥(以及为Worldcoin用户创建的加密钱包的其他私钥)与项目的眼睛扫描球在本地生成的虹膜代码完全分离。这种分离完全将生物识别标识与任何形式的用户密钥分离开来,这些密钥可能来自于一个人。Worldcoin还允许应用程序嵌入一个SDK,允许用户使用WorldID登录,并利用零知识证明保护隐私,允许应用程序检查该人是否拥有WorldID,但不支持个人用户跟踪(更多细节,请参阅这篇文章)。
这个例子是用零知识证明的隐私保护特性来对抗更弱、更恶意的人工智能形式的一种形式,所以它与上面列出的其他例子有很大的不同(例如,证明你是一个真正的人,而不是一个机器人,而不透露任何关于你自己的信息)。
模型架构和挑战
实现SNARK(简洁的非交互式知识论证)的证明系统的突破是将许多机器学习模型放在链上的关键驱动因素。一些团队正在现有的架构(包括Plonk、Plonky2、Air等)中制作定制电路。在自定义电路方面,Halo2已经成为DanielKang和JasonMorton的EZKL项目等在工作中使用的流行后端,。Halo2的证明时间是准线性的,证明大小通常只有几千字节,验证时间是常数。也许更重要的是,Halo2拥有强大的开发人员工具,使其成为开发人员使用的流行SNARK后端。其他的团队,比如RiscZero,则致力于一个通用的VM策略。其他人正在使用JustinThaler基于求和校验协议的超高效证明系统创建自定义框架。
证明生成和验证时间绝对取决于生成和检查证明的硬件,以及生成证明的电路的大小。但这里需要注意的关键是,无论所表示的程序是什么,证明的大小总是相对较小,因此验证者检查证明的负担是有限的。然而,这里有一些微妙之处:对于像Plonky2这样使用基于FRI的承诺方案的证明系统,证明大小可能会增加。(除非它被包装在一个基于配对的SNARK中,如Plonk或Groth16,它们的大小不会随着语句的复杂性而增长。)
这里机器学习模型的含义是,一旦你设计了一个证明系统,准确地表示一个模型,实际验证输出的成本将非常便宜。开发人员必须考虑最多的事情是证明时间和内存:以一种可以相对快速地证明模型的方式表示模型,并且理想的证明大小在几千字节左右。为了证明机器学习模型在零知识下的正确执行,你需要对模型架构(层、节点和激活函数)、参数、约束和矩阵乘法操作进行编码,并将它们表示为电路。这涉及到将这些属性分解为可以在有限域上执行的算术运算。
该领域仍处于起步阶段。在将模型转换为电路的过程中,准确性和保真度可能会受到影响。当一个模型被表示为一个算术电路时,那些前面提到的模型参数、约束和矩阵乘法操作可能需要近似和简化。当算术运算被编码为证明的有限域中的元素时,一些精度可能会丢失(或者在没有这些优化的情况下,使用当前的零知识框架生成证明的成本将高得离谱)。此外,为了精确起见,机器学习模型的参数和激活通常被编码为32位,但今天的零知识证明不无法在没有大量开销的情况下以必要的算术电路格式表示32位浮点运算。因此,开发人员可以选择使用量化的机器学习模型,其32位整数已经转换为8位精度。这些类型的模型有利于表示为零知识证明,但被验证的模型可能是高质量初始模型的粗略近似。
在这个阶段,无可否认,这是一场追赶游戏。随着零知识证明变得更加优化,机器学习模型的复杂性也在增长。已经有许多有前景的优化领域:证明递归可以通过允许证明用作下一个证明的输入来减少整体证明的大小,解锁证明压缩。也有一些新兴的框架,比如LinearA的Apache张量虚拟机(TVM)的分支,它改进了一个转译器,用于将浮点数转换为零知识友好的整数表示。最后,我们a16zcrypto乐观地认为,未来的工作将使在SNARK中表示32位整数变得更加合理。
“规模”的两种定义
零知识证明可通过压缩进行扩展:SNARK允许你使用一个极其复杂的系统(虚拟机、机器学习模型),并以数学方式表示它,以便验证它的成本小于运行它的成本。另一方面,机器学习通过扩展来扩展:今天的模型随着更多的数据、参数和GPU/TPU参与训练和推理过程而变得更好。中心化的公司可以以几乎不受限制的规模运行服务器:按月收取API调用费用,并支付运营成本。
区块链网络的经济现实几乎以相反的方式运行:鼓励开发人员优化他们的代码,使其在计算上可行(并且便宜)。这种不对称有一个巨大的好处:它创造了一个证明系统需要变得更有效的环境。我们应该推动在机器学习中要求区块链提供同样的好处——即可验证的所有权和共享的真理概念。
虽然区块链激励了zk-SNARK的优化,但计算的每个领域都将受益。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。