[논문 리뷰] Exploring the Robustness of Large Language Models for Solving Programming Problems
이 논문은 Codex, CodeGen, InstructGPT, ChatGPT와 같은 대규모 언어 모델(LM)이 문제 설명과 프롬프트 형식을 수정함으로써 초급 프로그래밍 문제를 해결하는 데 있어 얼마나 견고한지 평가한다. 오래된 모델인 Codex는 특히 변수 이름에 매우 민감한 반면, newer 모델인 ChatGPT는 RLHF 피팅을 통해 상당히 향상된 견고성을 보이며, 암기보다 깊은 이해에 가까운 진전을 보이고 있음을 시사한다.
Using large language models (LLMs) for source code has recently gained attention. LLMs, such as Transformer-based models like Codex and ChatGPT, have been shown to be highly capable of solving a wide range of programming problems. However, the extent to which LLMs understand problem descriptions and generate programs accordingly or just retrieve source code from the most relevant problem in training data based on superficial cues has not been discovered yet. To explore this research question, we conduct experiments to understand the robustness of several popular LLMs, CodeGen and GPT-3.5 series models, capable of tackling code generation tasks in introductory programming problems. Our experimental results show that CodeGen and Codex are sensitive to the superficial modifications of problem descriptions and significantly impact code generation performance. Furthermore, we observe that Codex relies on variable names, as randomized variables decrease the solved rate significantly. However, the state-of-the-art (SOTA) models, such as InstructGPT and ChatGPT, show higher robustness to superficial modifications and have an outstanding capability for solving programming problems. This highlights the fact that slight modifications to the prompts given to the LLMs can greatly affect code generation performance, and careful formatting of prompts is essential for high-quality code generation, while the SOTA models are becoming more robust to perturbations.
연구 동기 및 목표
- LLM이 프로그래밍 문제를 진정으로 이해함으로써 해결하는지, 표면적인 신호에 기반해 기억된 솔루션을 검색함으로써 해결하는지 조사하기 위해.
- 프롬프트 형식과 수정 사항이 다양한 최신 SOTA LLM에서 코드 생성 성능에 미치는 영향을 평가하기 위해.
- 변수 이름과 의미적 변화가 코드 생성 작업에서 모델 행동에 얼마나 영향을 미치는지 정도를 규명하기 위해.
- 문제 설명의 표면적 및 의미적 변형에 대해 LLM의 견고성을 평가하기 위해.
- 현재 LLM의 자동 프로그래밍 문제 해결 능력과 한계에 대한 실증적 통찰을 제공하기 위해.
제안 방법
- 연구는 Aizu Online Judge (AOJ)의 문제 설명을 LLM에 입력으로 사용하여 파이썬 코드를 생성한다.
- 두 가지 주요 실험을 실시한다: (1) 표면적 형식 변형(예: 줄 바꿈, 문장 부호)과 (2) 의미적 및 표면적 수정(예: 문제 명시의 반대, 변수 이름 무작위화).
- 성능은 숨겨진 테스트 케이스를 사용해 코드 정확도로 측정되며, 주요 지표로는 해결률을 사용한다.
- 평가된 모델로는 CodeGen, Codex, InstructGPT, ChatGPT가 포함되며, RLHF를 포함한 다양한 훈련 방법론을 반영한다.
- 변수 이름 익명화에 UUID를 사용하여 프롬프트의 어휘적 신호에 대한 의존도를 테스트한다.
- 변형된 입력에 대한 모델 응답을 비교하여 민감도와 일반화 능력을 평가한다.

실험 결과
연구 질문
- RQ1LLM이 코드 생성 시 형식과 변수 이름과 같은 표면적 신호에 얼마나 의존하는가?
- RQ2프롬프트 형식은 다양한 LLM의 코드 생성 성능에 어떻게 영향을 미치는가?
- RQ3의미적 수정(예: 문제 명시의 반대)은 모델 출력과 정확도에 어떻게 영향을 미치는가?
- RQ4RLHF 피팅의 포함 여부는 프롬프트 변형에 대한 견고성에 어떻게 영향을 미치는가?
- RQ5LLM은 원래 프롬프트와 의미적으로 반대되는 문제로 일반화할 수 있는가?
주요 결과
- Codex는 최악의 형식과 최선의 형식 간에 25.9%의 성능 향상을 보였으며, 형식에 매우 민감함을 시사한다.
- CodeGen은 형식 변경에 따라 14.7%의 성능 변동을 보였으며, 역시 형식 의존성이 높음을 나타낸다.
- 변수 이름을 무작위화(예: UUID 사용)하면 Codex의 해결률이 크게 감소하여, 변수 이름의 의미적 정보에 크게 의존하고 있음을 보여준다.
- ChatGPT와 InstructGPT는 형식과 변수 이름의 변형에 대해 뛰어난 견고성을 보이며, 더 깊은 이해를 하고 있음을 시사한다.
- Codex는 때로 문제의 의미가 반대된 경우(예: 합계 → 곱)에도 원래 문제의 정답 코드를 생성했으며, 이는 추론보다 암기에 기반함을 시사한다.
- 모델들은 종종 생성된 코드에서 익명화된 변수 이름을 사용하는 것을 거부하고 원래 이름을 선호했으며, 이는 어휘적 신호에 대한 의존도를 더욱 확인시킨다.

더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.