VeriContest: A Competitive-Programming Benchmark for Verifiable Code Generation
본 논문은 자연어 설명과 전문가 검증 형식 명세 및 기계 검증 가능 증명을 짝지어 946 개의 Rust 와 Verus 기반 경쟁 프로그래밍 문제를 포괄하는 벤치마크인 VeriContest 를 소개하며, 이는 현재 모델의 코딩 능력과 검증 가능 코드 생성 능력 사이에 상당한 성능 격차가 있음을 드러낸다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
상상해 보세요. 재능은 뛰어나지만 경험이 없는 건축가를 고용해 집을 짓게 한다고요.
표준 코딩 벤치마크의 세계에서는 그 건축가에게 간단한 설명을 줍니다. "3 개의 침실과 부엌이 있는 집을 지어라." 건축가는 설계도를 그리고 집을 짓고, 당신은 문이 열리는지, 전등이 작동하는지 확인합니다. 만약 그렇다면 건축가는 합격점을 받습니다. 이는 현재 AI 모델이 코드를 작성하는 방식과 같습니다. 그들은 보여지는 것과 행동하는 것이 올바르게 되도록 만드는 데 뛰어납니다.
하지만 허리케인에서도 절대 무너지지 않는다는 수학적으로 보장된 집이 필요하다면 어떻게 될까요? 전등만 확인해서는 안 됩니다. 구조가 견고하다는 수학적 증명이 필요합니다. 바로 이 지점에서 'VeriContest'라는 논문이 등장합니다.
문제: "작동은 하지만, 진실인가?"
현재의 AI 모델은 시각적 검사를 통과하는 집을 지을 수 있는 재능 있는 건축가와 같습니다. 그러나 그들은 종종 엄격한 공학적 계산을 생략합니다. 겉보기엔 괜찮아 보이지만 특정 스트레스 하에서만 드러나는 기초의 숨은 결함을 가진 집을 지을 수도 있습니다.
이 논문의 저자들은 AI 를 테스트하는 새로운 방식이 필요하다고 주장합니다. 단순히 "코드가 실행되는가?"라고 묻는 대신, "이 코드가 의도한 대로 정확히 수행되고, 그 외의 일은 하지 않는다는 것을 수학적으로 확실하게 증명할 수 있는가?"라고 물어야 합니다.
해결책: VeriContest
이 팀은 VeriContest라는 거대한 '시험'을 만들었습니다. 이는 AI 건축가를 위한 고위험 경쟁으로 보이지만, 세 가지 엄격한 규칙이 있습니다.
- 설계도 (명세): AI 는 먼저 수학적 계약을 작성해야 합니다. 이는 단순한 설명이 아니라, 입력이 무엇이며 출력이 반드시 무엇이어야 하는지를 엄격하게 정의한 규칙 집합입니다.
- 시공 (코드): AI 는 그 규칙을 따르는 실제 코드 (Rust 프로그래밍 언어로 작성) 를 작성해야 합니다.
- 공학 증명 (검증): AI 는 코드가 실패할 수 없음을 수학적으로 증명해야 합니다. 단순히 떨어지지 않기를 바라는 것이 아니라, 지붕이 떨어지지 않음을 증명하는 수학을 보여주는 것과 같습니다.
이들은 LeetCode 와 Codeforces 와 같은 유명한 코딩 대회에서 가져온 946 개의 어려운 퍼즐로 이를 테스트했습니다. 이는 단순한 'Hello World' 작업이 아닙니다. 데이터 내 패턴 찾기나 경로 최적화와 같은 복잡한 논리 문제들입니다.
시공 과정
이 시험을 만드는 것은 어려웠습니다. 팀은 단순히 AI 에게 문제를 만들게 한 것이 아니라, 세 단계로 구축했습니다.
- 1 단계 (씨앗): 인간 전문가들이 완벽한 증명과 함께 91 개의 완벽한 예제를 수동으로 작성했습니다.
- 2 단계 (확장): AI 어시스턴트를 사용해 더 많은 문제를 생성했지만, 인간 전문가들이 '편집자' 역할을 하여 수학이 정확한지 모든 것을 확인했습니다.
- 3 단계 (스트레스 테스트): AI 를 속이도록 설계된 '부정 테스트 케이스'를 만들었습니다. AI 의 증명이 불완전하다면, 이러한 함정 질문들이 결함을 드러낼 것입니다.
결과: 거대한 격차
세상에서 가장 똑똑한 AI 모델들을 이 시험에 통과시켰을 때, 결과는 놀랍고도 명확했습니다.
- 일반적인 시험: 설명만으로 코드를 작성하라고 요청했을 때 (증명 요구 없음), 최고의 AI 는 **92%**의 확률로 정답을 맞췄습니다. 이는 마스터 빌더입니다.
- 설계도 시험: 수학적 계약 (명세) 을 작성하라고 요청했을 때, 점수는 **48%**로 떨어졌습니다. AI 는 규칙을 정확하게 정의하는 데 어려움을 겪었습니다.
- 증명 시험: 코드가 작동한다는 수학적 증명을 제공하라고 요청했을 때, 점수는 **14%**로 곤두박질쳤습니다. AI 는 수학의 중량을 들어 올릴 수 없었습니다.
- 완전 시험 (종단 간): 세 단계 (설계도 + 코드 + 증명) 를 한 번에 수행하라고 요청했을 때, 최고의 AI 는 **5.3%**의 경우에만 성공했습니다.
비유: "완벽한 집"
AI 를 요리사로 상상해 보세요.
- 표준 코딩: 버거를 만들어 달라고 요청합니다. 요리사는 맛이 좋은 버거를 만듭니다. 당신은 그것을 먹습니다. 성공입니다!
- 검증 가능한 코딩: 버거를 만들어 달라고 요청하지만, 고기가 특정 농장에서 왔다는 증명서, 빵이 정확히 350 도에서 구워졌다는 사실, 그리고 버거에 숨겨진 알레르겐이 전혀 없다는 것을 증명하는 서류도 요구합니다. 요리사는 버거를 만들 수는 있지만, 증명서를 작성하거나 조리 과정 뒤의 수학을 증명하는 데는 매우 서툴러요.
결론
이 논문은 결론적으로, AI 가 프로그램을 실행하게 할 올바른 코드를 '추측'하는 데는 매우 능숙해지고 있지만, 코드가 정확하다는 것을 증명하는 데는 여전히 매우 서툴다고 말합니다. 가장 큰 병목 현상은 코드를 작성하는 것이 아니라, 코드가 안전함을 보장하는 형식적 규칙과 수학적 증명을 작성하는 것입니다.
VeriContest 는 이제 AI 가 수학적으로 버그가 없는 소프트웨어를 구축할 수 있도록 신뢰받을 수 있을 때까지 얼마나 더 가야 하는지를 정확히 측정하기 위한 연구자들의 도구가 되었습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.