← 최신 논문
💻 computer science

Can Large Language Models Model Programs Formally?

본 논문은 자동화된 프로그램 모델링의 어려움을 해결하기 위해 Python 프로그램을 모델 체킹 사양으로 변환하는 벤치마크 'Model-Bench'와 파이프라인을 제안하고, 이를 통해 대규모 언어 모델 (LLM) 의 프로그램 모델링 능력에 존재하는 한계를 실증적으로 규명합니다.

원저자: Zhiyong Chen, Jialun Cao, Jiarong Wu, Chang Xu, Shing-Chi Cheung

게시일 2026-04-03
📖 3 분 읽기☕ 가벼운 읽기

원저자: Zhiyong Chen, Jialun Cao, Jiarong Wu, Chang Xu, Shing-Chi Cheung

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

🏗️ 1. 배경: 왜 이 연구가 필요한가요?

  • 현재 상황: 우리가 쓰는 소프트웨어 (앱, 웹사이트 등) 에는 항상 '버그 (오류)'가 숨어 있을 수 있습니다. 기존에 개발자들이 하는 '테스트'는 "버그가 있는지 찾아내는 것"은 잘하지만, "이 프로그램에 절대 버그가 없다"는 것을 100% 증명하는 것은 불가능에 가깝습니다.
  • 해결책 (형식적 검증): 이를 위해 '형식적 검증 (Formal Verification)'이라는 방법이 있습니다. 이는 프로그램을 수학적 논리로 변환하여 "이 프로그램이 어떤 상황에서도 절대 망가지지 않는다"는 것을 기계가 증명하는 방식입니다.
  • 두 가지 방법:
    1. 정리 증명 (Theorem Proving): 수학 공리를 이용해 논리적으로 증명하는 것 (최근 AI 가 잘함).
    2. 모델 검사 (Model Checking): 프로그램의 모든 가능한 상황을 나열해서 하나하나 확인하는 것 (이게 더 어려움).

핵심 문제: 모델 검사를 하려면 먼저 복잡한 파이썬 코드를 **수학적으로 읽을 수 있는 '모델 (청사진)'**로 바꿔야 합니다. 하지만 이 '번역' 작업이 너무 어려워서 AI 가 잘 못 해냈습니다.


🧪 2. 연구 내용: '모델 벤치 (Model-Bench)'란 무엇인가요?

저희 연구팀은 이 난관을 해결하기 위해 **'모델 벤치 (Model-Bench)'**라는 새로운 시험지를 만들었습니다.

  • 시험지 구성: 유명한 코딩 문제집 (HumanEval 등) 에서 가져온 400 개의 파이썬 프로그램을 준비했습니다.
  • 과제: AI(대형 언어 모델) 에게 "이 파이썬 코드를 **TLA+**라는 특수한 수학 언어로 바꿔줘"라고 시켰습니다.
    • 비유: AI 에게 "이 복잡한 한국 드라마 대본을, 모든 등장인물의 행동을 수학 공식으로 바꿔서 써봐"라고 시킨 것과 같습니다.
  • 평가: 바뀐 수학 공식이 실제로 작동하는지, 그리고 원래 코드와 같은 행동을 하는지 TLC라는 검사 도구로 확인했습니다.

🔍 3. 실험 결과: AI 는 잘할까요?

결과는 아직은 부족하지만, 희망적인 방향을 보여줍니다.

📉 1) AI 의 한계 (현실)

  • AI 가 만든 수학 모델 중 약 66% 만이 실제로 작동했습니다. (나머지는 문법 오류나 논리 오류가 있었습니다.)
  • 작동하더라도, 원래 프로그램과 행동이 100% 일치하는 경우는 50% 미만이었습니다.
  • 비유: AI 가 만든 청사진은 "집이 무너지지 않을 것 같다"는 정도는 맞지만, "창문 위치가 원래 설계도와 1cm 도 틀렸다"는 식의 미세한 오류가 많았습니다.

🚀 2) 해결책: "코드 변환 (Code Transformation)"

AI 가 원본 코드를 직접 번역하는 것보다, 코드를 AI 가 이해하기 쉬운 형태로 미리 변형해 주면 훨씬 잘했습니다.

  • 비유: AI 에게 "복잡한 고층 빌딩 설계도"를 바로 번역하게 하면 헷갈려 하지만, "단순한 블록 쌓기 놀이"로 변형된 설계도를 주면 훨씬 정확하게 번역합니다.
  • 이 방법을 쓰면 AI 가 만든 모델의 정확도 (유사도) 가 18% 이상 향상되었습니다.

📊 3) 어떤 코드가 hardest?

  • 코드가 어렵다고 해서 AI 가 못 하는 건 아니었습니다.
  • 오히려 **중첩된 반복문 (for 문 안에 for 문)**이나 데이터 구조가 복잡한 코드일수록 AI 가 혼란을 겪었습니다.
  • 비유: "100 번 반복해서 계단 오르기"는 AI 가 잘하지만, "계단 오르는 도중 갑자기 방향을 바꾸고, 계단 높이가 변하는 미로"를 그리게 하면 AI 는 길을 잃습니다.

💡 4. 결론 및 시사점

이 논문은 다음과 같은 중요한 메시지를 전달합니다.

  1. AI 는 아직 완벽하지 않다: 현재 AI 는 복잡한 프로그램을 수학적으로 완벽하게 모델링하기엔 부족합니다.
  2. 도움이 되는 방법: AI 에게 코드를 번역하게 할 때, 코드를 단순화하거나 변형해 주는 전처리 과정이 필수적입니다.
  3. 미래 전망: 이 연구는 AI 가 소프트웨어의 안전성을 수학적으로 보장하는 '형식적 검증' 분야에서 중요한 첫걸음입니다. 앞으로 AI 가 더 똑똑해지면, 우리가 만든 앱이나 자율주행차, 의료 장비 등이 수학적으로 100% 안전하다는 것을 AI 가 자동으로 증명해 줄 날이 올 것입니다.

한 줄 요약:

"AI 가 복잡한 프로그램을 수학적으로 증명하는 건 아직 '어린 건축가'가 '고층 빌딩'을 설계하는 것과 비슷해 헛수고를 많이 하지만, 설계도를 단순화해 주면 훨씬 더 안전하고 정확한 청사진을 그려낼 수 있다는 것을 발견했습니다."

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →