zkML과 암호학적 증명을 통한 검증 가능한 온체인 AI
소개: 블록체인에서 검증 가능한 AI의 필요성
AI 시스템의 영향력이 커짐에 따라 그 결과물의 신뢰성을 보장하는 것이 중요해졌습니다. 전통적인 방법은 제도적 보증(본질적으로 "그냥 우리를 믿으세요")에 의존하며, 이는 암호학적 보장을 제공하지 않습니다. 이는 블록체인과 같은 탈중앙화된 환경에서 특히 문제가 되는데, 스마트 계약이나 사용자는 무거운 모델을 온체인에서 다시 실행할 수 없이 AI가 도출한 결과를 신뢰해야 하기 때문입니다. **영지식 머신러닝(zkML)**은 ML 연산의 _암호학적 검증_을 허용함으로써 이 문제를 해결합니다. 본질적으로 zkML은 증명자가 _"출력 $Y$는 입력 $X$에 대해 모델 $M$을 실행하여 나왔다"_는 간결한 증명을 생성할 수 있게 해주며, 이때 $X$나 $M$의 내부 세부 정보는 공개하지 않습니다. 이러한 영지식 증명(ZKP)은 누구나(또는 어떤 계약이든) 효율적으로 검증할 수 있어, AI 신뢰를 "정책에서 증명으로" 전환시킵니다.
AI의 온체인 검증 가능성은 블록체인이 연산 자체를 수행하는 대신 정확한 실행 증명을 검증함으로써 고급 연산(신경망 추론 등)을 통합할 수 있음을 의미합니다. 이는 광범위한 영향을 미칩니다. 스마트 계약은 AI 예측을 기반으로 결정을 내릴 수 있고, 탈중앙화된 자율 에이전트는 자신들의 알고리즘을 따랐음을 증명할 수 있으며, 크로스체인 또는 오프체인 연산 서비스는 검증 불가능한 오라클 대신 검증 가능한 결과물을 제공할 수 있습니다. 궁극적으로 zkML은 신뢰가 필요 없고 프라이버시를 보존하는 AI로 가는 길을 제시합니다. 예를 들어, AI 모델의 결정이 개인 데이터나 독점적인 모델 가중치를 노출하지 않고 정확하고 승인되었음을 증명할 수 있습니다. 이는 안전한 의료 분석부터 블록체인 게임, DeFi 오라클에 이르기까지 다양한 애플리케이션에 핵심적입니다.
zkML의 작동 원리: ML 추론을 간결한 증명으로 압축하기
높은 수준에서 zkML은 암호학적 증명 시스템과 ML 추론을 결합하여 복잡한 모델 평가를 작은 증명으로 "압축"할 수 있도록 합니다. 내부적으로 ML 모델(예: 신경망)은 많은 산술 연산(행렬 곱셈, 활성화 함수 등)으로 구성된 회로나 프로그램으로 표현됩니다. 모든 중간 값을 공개하는 대신, 증명자는 전체 연산을 오프체인에서 수행한 다음 영지식 증명 프로토콜을 사용하여 모든 단계가 올바르게 수행되었음을 증명합니다. 검증자는 증명과 일부 공개 데이터(최종 출력 및 모델 식별자 등)만으로 모델을 재실행하지 않고도 정확성을 암호학적으로 확신할 수 있습니다.
이를 달성하기 위해 zkML 프레임워크는 일반적으로 모델 연산을 ZKP에 적합한 형식으로 변환합니다.
- 회로 컴파일: SNARK 기반 접근 방식에서는 모델의 연산 그래프가 산술 회로 또는 다항식 제약 조건 집합으로 컴파일됩니다. 신경망의 각 계층(컨볼루션, 행렬 곱셈, 비선형 활성화)은 입력이 주어졌을 때 출력이 정확함을 보장하는 제약 조건이 있는 하위 회로가 됩니다. 신경망은 다항식에 자연스럽게 적합하지 않은 비선형 연산(ReLU, Sigmoid 등)을 포함하기 때문에, 이를 효율적으로 처리하기 위해 룩업 테이블과 같은 기술이 사용됩니다. 예를 들어, ReLU(출력 = max(0, 입력))는 입력≥0일 때 출력이 입력과 같고 그렇지 않으면 0임을 검증하는 사용자 정의 제약 조건이나 룩업으로 강제할 수 있습니다. 최종 결과는 증명자가 만족해야 하는 암호학적 제약 조건 집합이며, 이는 모델이 올바르게 실행되었음을 암묵적으로 증명합니다.
- 실행 추적 및 가상 머신: 대안은 zkVM 접근 방식에서처럼 모델 추론을 프로그램 추적으로 취급하는 것입니다. 예를 들어, JOLT zkVM은 RISC-V 명령어 집합을 대상으로 합니다. ML 모델(또는 이를 계산하는 코드)을 RISC-V로 컴파일한 다음 각 CPU 명령어가 올바르게 실행되었음을 증명할 수 있습니다. JOLT는 "룩업 특이점" 기술을 도입하여, 비용이 많이 드는 산술 제약 조건을 각 유효한 CPU 연산에 대한 빠른 테이블 룩업으로 대체합니다. 모든 연산(덧셈, 곱셈, 비트 연산 등)은 사전 계산된 유효한 결과의 거대한 테이블에서 룩업을 통해 확인되며, 이를 효율적으로 유지하기 위해 특화된 인수(Lasso/SHOUT)를 사용합니다. 이는 증명자의 작업량을 극적으로 줄입니다. 복잡한 64비트 연산조차도 많은 산술 제약 조건 대신 증명에서 단일 테이블 룩업이 됩니다.
- 상호작용 프로토콜 (GKR 합계 검사): 세 번째 접근 방식은 GKR(Goldwasser–Kalai–Rotblum)과 같은 상호작용 증명을 사용하여 계층화된 연산을 검증하는 것입니다. 여기서 모델의 연산은 계층화된 산술 회로로 간주됩니다(각 신경망 계층은 회로 그래프의 한 계층임). 증명자는 모델을 정상적으로 실행한 다음, 각 계층의 출력이 입력에 따라 정확함을 증명하기 위해 _합계 검사 프로토콜_에 참여합니다. Lagrange의 접근 방식(다음에서 자세히 설명할 DeepProve)에서는 증명자와 검증자가 상호작용 다항식 프로토콜(Fiat-Shamir를 통해 비상호작용적으로 만듦)을 수행하여 각 계층의 연산을 다시 수행하지 않고 일관성을 확인합니다. 이 합계 검사 방법은 단일의 정적 회로를 생성하는 것을 피하고, 대신 최소한의 암호학적 연산(주로 해싱 또는 다항식 평가)으로 단계별로 _연산의 일관성_을 검증합니다.
어떤 접근 방식을 사용하든, 결과는 전체 추론의 정확성을 증명하는 간결한 증명(일반적으로 수 킬로바이트에서 수십 킬로바이트)입니다. 이 증명은 _영지식_이므로, 모든 비밀 입력(개인 데이터 또는 모델 매개변수)은 숨겨질 수 있습니다. 이는 증명에 영향을 미치지만 검증자에게는 공개되지 않습니다. 의도된 공개 출력이나 주장만이 공개됩니다. 이는 _"모델 $M$을 환자 데이터 $X$에 적용하면 진단 $Y$가 나온다는 것을 $X$나 모델의 가중치를 공개하지 않고 증명하라"_와 같은 시나리오를 가능하게 합니다.
온체인 검증 활성화: 증명이 생성되면 블록체인에 게시될 수 있습니다. 스마트 계약은 증명을 확인하기 위한 검증 로직을 포함할 수 있으며, 종종 사전 컴파일된 암호학적 프리미티브를 사용합니다. 예를 들어, 이더리움은 많은 zk-SNARK 검증기에서 사용되는 BLS12-381 페어링 연산을 위한 사전 컴파일을 가지고 있어, SNARK 증명의 온체인 검증을 효율적으로 만듭니다. STARK(해시 기반 증명)는 더 크지만, 신중한 최적화나 일부 신뢰 가정(예를 들어, StarkWare의 L2는 이더리움에서 STARK 증명을 온체인 검증기 계약으로 검증하지만 SNARK보다 가스 비용이 높음)을 통해 여전히 온체인에서 검증될 수 있습니다. 핵심은 체인이 ML 모델을 실행할 필요 없이, 원래 연산보다 훨씬 저렴한 검증만 실행한다는 것입니다. 요약하면, zkML은 _비용이 많이 드는 AI 추론을 블록체인(또는 모든 검증자)이 밀리초에서 초 단위로 확인할 수 있는 작은 증명으로 압축_합니다.