原文:《 Checks and balances: Machine learning and zero-knowledge proofs 》by Elena Burger,a16z crypto 交易合夥人

編譯:Kate

本文作者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 RoseTarun Chitra最近與Daniel KangYi Sun一起主持了一集零知識播客,探討了這一領域的最新進展。

具體來說,Daniel 和Yi 最近發布了一項工作,研究如何驗證由經過驗證的傳感器拍攝的圖像是否經過裁剪、調整大小或有限的編輯等轉換——這在你想證明圖像不是深度偽造而是經過某種合法形式的編輯的情況下很有用。 Dan Boneh 和Trisha Datta 也做了類似的工作,使用零知識證明來驗證圖像的來源。

但是,更廣泛地說,任何經過數字認證的信息都可以進行這種形式的驗證:正在研究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。