챗GPT는 코드를 얼마나 이해할까요? 놀라운 연구 결과!
본 기사는 대규모 언어 모델(LLM)의 코드 이해 능력에 대한 최초의 대규모 실증 연구 결과를 소개합니다. 연구 결과, LLM은 코드의 의미를 제대로 이해하지 못하고 표면적인 특징에 의존하는 경향이 있음을 밝혔습니다. 이는 LLM의 발전 방향에 중요한 시사점을 제공합니다.

최근 급부상하는 대규모 언어 모델(LLM)은 코드 수정 및 테스트와 같은 개발 후 작업에 점점 더 많이 사용되고 있습니다. 하지만 LLM이 코드를 얼마나 '이해'하는지는 아직까지 미지의 영역이었습니다. Sabaat Haroon 등 8명의 연구자들은 이 질문에 대한 답을 찾기 위해 야심찬 연구를 진행했습니다. 그 결과는 놀라웠습니다.
코드 이해 능력 평가의 어려움: 새로운 척도 제시
코드 이해 능력을 측정하는 것은 쉽지 않습니다. 추상적인 코드의 특성과 표준화된 척도의 부재가 그 이유입니다. 기존에는 개발자 설문조사에 의존했지만, LLM 평가에는 적합하지 않습니다. 또한 기존의 LLM 벤치마크는 코드 생성에 초점을 맞추고 있어 코드 이해 능력 평가에는 부적절합니다.
돌연변이 테스트 기반의 새로운 평가 방식
연구팀은 LLM의 '오류 찾기 능력'을 코드 이해 능력의 대리 지표로 사용하는 독창적인 접근 방식을 제시했습니다. 이는 미묘한 기능적 불일치를 식별할 수 있는 모델이 코드를 잘 이해한다는 통찰에 기반합니다. 실제 프로그램에 의도적으로 오류를 주입하고, LLM이 이를 찾아내도록 하는 것입니다. 더 나아가, 의미를 유지하면서 코드를 변형하는 '의미 보존 코드 변이(SPMs)'를 적용하여 LLM의 코드 이해 능력을 더욱 정밀하게 평가했습니다.
충격적인 결과: LLM의 '얕은' 코드 이해
연구팀은 9개의 인기 있는 LLM을 대상으로 Java와 Python 프로그램 1207개, 총 600,010개의 디버깅 작업을 수행했습니다. 결과는 충격적이었습니다. SPMs가 적용되면 LLM은 동일한 버그를 디버깅할 능력을 78%나 상실했습니다. 이는 LLM이 코드를 '얕게' 이해하고, 의미와 무관한 특징에 의존한다는 것을 시사합니다. 또한, 프로그램 초반부의 코드를 후반부보다 더 잘 이해한다는 사실도 밝혀졌습니다. 이는 LLM의 코드 이해 능력이 자연어 처리를 위해 설계된 토큰화로 인해 어휘 및 구문적 특징에 묶여 있고, 코드의 의미를 간과한다는 것을 의미합니다.
미래를 위한 시사점
이 연구는 LLM의 코드 이해 능력에 대한 중요한 통찰력을 제공합니다. LLM이 코드를 생성하는 데 뛰어난 능력을 보여주지만, 실제로 코드를 '이해'하는 수준은 아직 미흡하다는 것을 보여줍니다. 앞으로 더욱 심층적인 코드 이해 능력을 갖춘 LLM 개발을 위해서는 의미론적인 이해를 중시하는 새로운 접근 방식이 필요합니다. 이 연구는 LLM의 발전 방향을 제시하는 중요한 이정표가 될 것입니다.
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.04372v2