놀라운 발견! AI는 코드를 얼마나 이해할까요? 🤔


본 연구는 대규모 언어 모델(LLM)의 코드 이해 능력을 변이 테스트를 통해 평가한 최초의 대규모 실증 연구입니다. LLM은 코드의 의미론적 이해보다는 표면적인 특징에 의존하며, 코드 앞부분을 더 잘 이해하는 경향을 보이는 것으로 나타났습니다. 이는 LLM의 코드 이해 능력 향상을 위한 추가 연구의 필요성을 강조합니다.

related iamge

AI, 코드 이해력의 실체를 파헤치다: 대규모 실험 결과 발표

최근, 코드 수정 및 테스트와 같은 개발 후 작업에서 대규모 언어 모델(LLM)의 활용이 급증하고 있습니다. 하지만 LLM이 코드를 실제로 얼마나 '이해'하는지는 여전히 미지의 영역이었습니다. 개발자 설문조사는 LLM 평가에 적합하지 않고, 기존 벤치마크는 코드 생성에 초점을 맞춰 코드 이해 측정에는 부적합했기 때문입니다.

사바트 하룬 등 8명의 연구진은 이러한 한계를 극복하고자, 최초로 LLM의 코드 이해 능력에 대한 대규모 실증 연구를 진행했습니다. 그들의 핵심 전략은 무엇일까요? 바로 변이 테스트를 활용한 새로운 평가 방식입니다. 연구진은 LLM이 미묘한 기능적 차이를 식별할 수 있다면 코드를 잘 이해하는 것이라고 가정했습니다. 즉, LLM의 오류 발견 능력을 코드 이해 수준의 척도로 삼은 것입니다.

연구진은 실제 프로그램에 오류를 주입하고 LLM에게 이를 찾도록 했습니다. 여기서 중요한 점은, 단순히 오류를 찾는 것뿐만 아니라, 의미를 유지하는 코드 변이(SPMs) 를 적용했을 때에도 LLM이 여전히 오류를 찾아낼 수 있는지를 확인했다는 것입니다. 이를 통해 LLM이 단순히 표면적인 특징에 의존하는지, 아니면 코드의 의미를 실제로 이해하는지를 판별하려 했습니다.

결과는 놀라웠습니다. Java와 Python 프로그램 1207개, 총 575,000개의 디버깅 작업을 대상으로 9개의 인기 LLM을 평가한 결과, SPM을 적용했을 때 81%의 경우 LLM이 동일한 버그를 찾지 못했습니다. 이는 LLM이 코드를 깊이 이해하지 못하고 의미와 무관한 특징에 의존한다는 것을 의미합니다. 또한, LLM은 코드의 앞부분을 뒤쪽보다 더 잘 이해하는 경향을 보였는데, 이는 자연어 처리를 위한 토큰화 방식 때문에 의미론적 이해보다는 어휘 및 구문적 특징에 의존하기 때문으로 해석됩니다.

이 연구는 LLM의 코드 이해 능력에 대한 객관적인 지표를 제시하고, 그 한계를 명확히 보여줍니다. 앞으로 LLM이 진정한 코드 '이해'에 도달하기 위해서는 의미론적 이해 능력을 향상시키는 연구가 더욱 필요함을 시사합니다. AI의 코드 이해 능력 향상은 소프트웨어 개발의 미래를 좌우할 중요한 과제입니다. 이 연구는 그 첫걸음이 될 것입니다. ✨


*이 기사는 AI가 생성한 내용으로, 일부 정보가 실제와 다를 수 있습니다. 정확한 확인을 위해 추가적인 검증을 권장드립니다.

Reference

[arxiv] How Accurately Do Large Language Models Understand Code?

Published:  (Updated: )

Author: Sabaat Haroon, Ahmad Faraz Khan, Ahmad Humayun, Waris Gill, Abdul Haddi Amjad, Ali R. Butt, Mohammad Taha Khan, Muhammad Ali Gulzar

http://arxiv.org/abs/2504.04372v1