Skip to main content
QUICK REVIEW

[논문 리뷰] Comparing large language models and human programmers for generating programming code

Wenpin Hou, Zhicheng Ji|arXiv (Cornell University)|2024. 03. 01.
Software Engineering Research인용 수 4
한 줄 요약

이 연구는 다양한 프롬프트 전략, 프로그래밍 언어, 과제 난이도를 바탕으로 일곱 개의 대규모 언어 모델(LLM)이 프로그래밍 코드를 생성하는 데 대해 체계적으로 평가한다. GPT-4는 특히 최적화된 프롬프트 전략을 사용할 경우, LeetCode 및 GeeksforGeeks 코딩 대회에서 85% 이상의 인간 참가자보다 뛰어난 성능을 보이며, 강력한 다국어 코드 번역 능력, 오류 학습 능력, 계산 효율성이 뛰어난 코드 생성 능력을 보이며 소프트웨어 개발의 매우 능숙한 보조 수단으로 자리매김한다.

ABSTRACT

We systematically evaluated the performance of seven large language models in generating programming code using various prompt strategies, programming languages, and task difficulties. GPT-4 substantially outperforms other large language models, including Gemini Ultra and Claude 2. The coding performance of GPT-4 varies considerably with different prompt strategies. In most LeetCode and GeeksforGeeks coding contests evaluated in this study, GPT-4 employing the optimal prompt strategy outperforms 85 percent of human participants. Additionally, GPT-4 demonstrates strong capabilities in translating code between different programming languages and in learning from past errors. The computational efficiency of the code generated by GPT-4 is comparable to that of human programmers. These results suggest that GPT-4 has the potential to serve as a reliable assistant in programming code generation and software development.

연구 동기 및 목표

  • 다양한 프로그래밍 언어와 과제 난이도에서 일곱 개의 LLM이 프로그래밍 코드를 생성하는 데 대한 체계적 평가를 수행하는 것.
  • 다양한 프롬프트 전략이 LLM의 코딩 성능에 미치는 영향을 분석하고, 특히 표준 프롬프트와의 비교를 통해 평가하는 것.
  • 실제 코딩 대회에서 LLM이 생성한 코드의 성능을 인간 프로그래머의 성능과 직접 비교하는 것.
  • LLM의 다국어 간 코드 번역 능력과 인간이 작성한 코드 대비 계산 효율성 평가하는 것.
  • LLM이 이전 오류를 학습하고 반복 시도에서 성능 향상을 이룰 수 있는지 검토하는 것.

제안 방법

  • 연구는 LeetCode 대회 25개에서 무작위로 선정된 100개의 프로그래밍 과제와 GeeksforGeeks의 더 작은 데이터셋을 사용하였으며, 모두 GPT-4의 지식 커파운드 이전인 2021년 9월 이후의 과제를 대상으로 하였다.
  • 다섯 가지의 독립된 프롬프트 전략을 개발하고 테스트: 표준 프롬프트, 사고의 사슬(Chain-of-Thought)과 피드백를 포함한 피드백 CI, 사고의 사슬과 자기 일관성(self-consistency)을 포함한 피드백 CI, 그리고 두 가지 유형의 흩어진 예시(Fe-w-shot prompting) 전략.
  • LLM의 성능은 한 번 시도 성공률, 다섯 번 시도 성공률, 복구 성공률(후속 시도에서 성공한 비율), 계산 효율성(실행 시간 및 메모리 사용량 백분위수)을 기준으로 측정되었다.
  • 코드 번역 평가를 위해 GPT-4는 피드백 CI 프롬프트를 사용해 Python3 코드를 생성한 후, 이를 Java, JavaScript, C++로 번역하였으며, 과제 난이도에 따라 성공률을 평가하였다.
  • 계산 효율성 평가에서는 GPT-4가 생성한 코드(자기 최적화 이전 및 이후)를 동일한 과제에서 인간이 작성한 코드와 비교하였으며, 실행 시간과 메모리 사용량에 대해 백분위수 순위를 기준으로 평가하였다.
  • 인간의 성능은 LeetCode 및 GeeksforGeeks의 공식 대회 순위를 기준으로 기준화되었으며, LLM의 순위는 인간 참가자들과의 백분위수 비교를 통해 산정되었다.
Figure 1: A schematic illustrating the prompt strategies that were developed and assessed in this study.
Figure 1: A schematic illustrating the prompt strategies that were developed and assessed in this study.

실험 결과

연구 질문

  • RQ1다양한 과제 난이도에서 프롬프트 전략의 선택이 LLM의 코딩 성능에 어떤 영향을 미치는가?
  • RQ2최적의 프롬프트를 사용할 경우, GPT-4는 LeetCode 및 GeeksforGeeks의 실제 코딩 대회에서 인간 프로그래머보다 얼마나 뛰어나게 성능을 내는가?
  • RQ3LLM은 다양한 프로그래밍 언어 간에 효과적으로 코드를 번역할 수 있는가? 번역 성공률은 과제 난이도에 따라 어떻게 변화하는가?
  • RQ4자기 최적화 이전 및 이후에 LLM이 생성한 코드의 계산 효율성은 인간이 작성한 코드와 비교해 어떻게 되는가?
  • RQ5LLM은 이전 오류를 학습하고 반복 시도에서 성능을 향상시킬 수 있는가? 복구 성공률을 통해 이를 측정할 수 있는가?

주요 결과

  • GPT-4는 최적의 프롬프트 전략(사고의 사슬과 자기 일관성을 포함한 피드백 CI)을 사용할 경우, LeetCode의 쉬운 과제에서 86.2%의 한 번 시도 성공률, 중간 과제에서 60.0%, 어려운 과제에서 14.3%를 기록하며 대부분의 대회에서 85% 이상의 인간 참가자보다 뛰어난 성능을 보였다.
  • GPT-4의 복구 성공률은 시행 횟수가 증가함에 따라 크게 향상되었으며, 다섯 번째 시도에서 중간 및 어려운 과제에서 90% 이상을 기록하여 강력한 오류 복구 및 학습 능력을 보였다.
  • GPT-4는 높은 코드 번역 성공률를 보였으며, 중간 난이도 과제에서 정확하게 생성된 Python3 코드 중 80%가 Java, JavaScript, C++로 성공적으로 번역되었고, 원본 코드가 잘못되었을 경우에도 강력한 성능를 유지하였다.
  • GPT-4가 생성한 코드의 계산 효율성은 인간이 작성한 코드와 유사했다. 자기 최적화 이후, GPT-4의 코드는 모든 과제 난이도에서 실행 시간과 메모리 사용량 모두 90번째 백분위수 이상을 기록하였다.
  • GPT-4는 Gemini Ultra 및 Claude 2를 포함한 다른 LLM들보다 모든 지표에서 뛰어난 성능를 보였으며, 특히 복잡하고 어려운 과제에서 성능 격차가 가장 컸다.
  • 연구는 프롬프트 엔지니어링이 LLM의 코딩 성능을 크게 향상시킨다는 점을 확인하였으며, 피드백 CI 전략이 모든 모델에서 가장 높은 성공률 및 복구 성공률를 기록하였다.
Figure 2: Five-attempt and one-attempt success rates for tasks with varying difficulty levels. Each row represents a different prompt strategy and a different LLM. The text within each bar displays the success rate, the number of programming tasks solved, and the total number of tasks. Rows are orde
Figure 2: Five-attempt and one-attempt success rates for tasks with varying difficulty levels. Each row represents a different prompt strategy and a different LLM. The text within each bar displays the success rate, the number of programming tasks solved, and the total number of tasks. Rows are orde

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.