한줄 요약
한국어 코드 생성 벤치마크 KR-HumanEval을 구축하고, 퓨샷 프롬프팅에서 영어 기술을 활용할 때 한국어 프로그램 합성 성능이 가장 높다는 역설적 결과를 밝혀 — 현재 LLM의 근본적인 언어 편향을 드러낸 연구.
배경 및 동기
자연어 명세로부터 코드를 자동 생성하는 프로그램 합성은 거대 언어 모델의 발전과 함께 비약적인 진전을 이루었습니다. OpenAI의 HumanEval(164개 수작업 Python 문제)과 같은 벤치마크가 코드 생성 능력 평가의 사실상 표준으로 자리 잡았으나, 이들은 영어 전용으로 구성되어 있습니다.
핵심 문제: GitHub Copilot, ChatGPT 등 LLM 기반 코딩 어시스턴트가 전 세계적으로 보급되면서, 비영어권 사용자들이 모국어로 과제를 기술하는 경우가 증가하고 있습니다. 그러나 한국어 자연어 기술로부터 모델이 올바른 코드를 생성할 수 있는지 평가할 표준화된 벤치마크가 존재하지 않아, 한국어 코드 생성 능력을 체계적으로 측정하거나 개선하는 것이 불가능한 상황입니다.
기존 다국어 코드 생성 연구는 주로 고자원 언어 쌍이나 함수 시그니처의 단순 번역에 초점을 맞추었으며, 한국어 고유의 도전 과제 — 교착어적 형태론, SOV 어순, 한국어 텍스트와 영어 기술 용어의 빈번한 혼용 등 — 를 종합적으로 고려한 평가 프레임워크는 부재했습니다. HumanEval-XL 등 다국어 코드 생성 벤치마크에 대한 연구가 진행되고 있었으나, 공개적으로 사용 가능한 한국어 프로그램 합성 데이터셋은 본 연구 시점에 존재하지 않았습니다.
제안 방법
저자들은 HumanEval의 영어 독스트링을 한국어로 번역하여 KR-HumanEval 벤치마크를 구축하고, 다양한 프롬프팅 전략 하에서 여러 LLM을 체계적으로 평가하여 프롬프트 내 언어 선택이 코드 생성 품질에 미치는 영향을 분석합니다.
1
KR-HumanEval 벤치마크 구축
원본 HumanEval의 164개 영어 독스트링을 다단계 파이프라인을 통해 한국어로 번역합니다. 먼저 DeepL 기계 번역으로 초안을 생성한 뒤, 인간 검수자가 각 번역을 수동 검토하여 1–3점 척도로 품질을 평가합니다. 이후 GPT-4o-mini를 활용한 품질 검수 및 개선을 거칩니다. 최종 데이터셋은 155개(94.5%)가 3점(최고 품질), 9개(5.5%)가 2점, 0개가 1점으로 우수한 번역 품질을 보입니다. 함수 시그니처, 테스트 케이스, 코드 구조는 원본과 동일하게 유지되어 통제된 비교가 가능합니다.
2
네 가지 퓨샷 예제 유형 설계
언어 구성이 다른 네 가지 퓨샷 예제 유형을 정의합니다: [KO, PY] — 한국어 설명 + 표준 Python 코드; [KO, PY(KO var)] — 한국어 설명 + 한국어 변수명 Python 코드; [KO, PY(KO doc)] — 한국어 설명 + 한국어 주석이 추가된 Python 코드; [EN, PY] — 영어 설명 + 표준 Python 코드. 각 유형은 템플릿과 변환 지시문을 통해 일관성을 확보합니다.
3
1-Shot부터 5-Shot까지 체계적 실험
네 가지 예제 유형 각각에 대해 1~5개의 퓨샷 예제를 사용한 실험을 수행하여, 모델당 제로샷 기준선 포함 총 21개 설정을 테스트합니다. 각 예제는 데이터 오염을 방지하기 위해 LLM(Gemini)이 제작한 문제에서 선정합니다. 지시어 튜닝 모델(GPT-4o-mini, EXAONE-3.0-7.8B-Instruct)은 대화형 템플릿을, 기반 모델(DeepSeek-Coder-V2-16B-Base)은 표준 완성형 템플릿을 사용합니다.
평가 모델
- GPT-4o-mini (폐쇄형): 폭넓은 다국어 및 코딩 능력을 갖춘 범용 고성능 모델.
- DeepSeek-Coder-V2-16B-Base (오픈소스): 대규모 코드 코퍼스로 사전학습되어 코드 생성 벤치마크에서 높은 성능을 기록한 모델.
- EXAONE-3.0-7.8B-Instruct (오픈소스): 한국어 중점 지시어 튜닝 모델로, 한국어 중심 사전학습의 영향을 분석하기 위해 사용.
평가 지표로는 탐욕적 디코딩을 사용하여 모델이 생성한 단일 코드 샘플이 모든 단위 테스트를 통과하는지 확인하는 표준 함수 정확성 지표인 pass@1을 사용합니다.
실험 결과
세 모델을 KR-HumanEval에서 제로샷 및 네 가지 퓨샷 구성(각 1~5샷)으로 평가한 결과, 프롬프트 내 언어 선택과 예제 유형이 한국어 코드 생성에 미치는 뚜렷한 패턴이 드러났습니다.
제로샷 vs. 최고 퓨샷 성능 (pass@1)
| 모델 | 제로샷 | [KO, PY] | [KO, PY(KO var)] | [KO, PY(KO doc)] | [EN, PY] |
| GPT-4o-mini | 72.8 | 73.6 | 69 | 72.4 | 75 |
| DeepSeek-Coder-V2-16B-Base | 37.2 | 50.6 | 48.4 | 46.5 | 49.7 |
| EXAONE-3.0-7.8B-Instruct | 53.6 | 52.3 | 50.2 | 54.4 | 51.5 |
각 예제 유형별 1~5샷 중 최고 pass@1 값을 표시. 굵은 글씨는 모델별 전체 설정 중 최고 점수.
샷 수별 상세 퓨샷 결과 (pass@1)
| 모델 | # 샷 | [KO, PY] | [KO, PY(KO var)] | [KO, PY(KO doc)] | [EN, PY] |
| GPT-4o-mini | 1 | 73.2 | 76.2 | 71.3 | 75.6 |
| 2 | 76.8 | 70.1 | 76.8 | 78.7 |
| 3 | 77.4 | 68.3 | 75 | 75.6 |
| 4 | 70.7 | 64 | 70.1 | 69.5 |
| 5 | 70.1 | 66.4 | 68.9 | 75.6 |
| DeepSeek-Coder-V2-16B-Base | 1 | 45.7 | 47 | 43.3 | 44.5 |
| 2 | 48.8 | 50.6 | 47 | 51.2 |
| 3 | 53.7 | 51.2 | 48.2 | 54.3 |
| 4 | 52.4 | 46.3 | 44.5 | 48.2 |
| 5 | 52.4 | 47 | 49.4 | 50.6 |
| EXAONE-3.0-7.8B-Instruct | 1 | 56.1 | 56.7 | 52.4 | 57.3 |
| 2 | 56.1 | 51.8 | 54.3 | 56.7 |
| 3 | 51.2 | 48.2 | 55.5 | 50.6 |
| 4 | 50 | 46.3 | 53 | 47 |
| 5 | 48.1 | 48.1 | 56.7 | 45.7 |
굵은 글씨는 각 모델의 전체 퓨샷 설정 중 최고 점수.
주요 발견
- 퓨샷이 제로샷을 일관되게 능가: 세 모델 모두 퓨샷 프롬프팅에서 전반적으로 성능이 향상되었습니다. DeepSeek-Coder-V2-16B-Base가 가장 큰 향상을 보여, 제로샷 37.2에서 3-shot [EN, PY] 54.3으로 17.1점 상승했습니다.
- [EN, PY]가 최고 정점 점수 달성: GPT-4o-mini(2-shot에서 78.7)와 DeepSeek-Coder-V2-16B-Base(3-shot에서 54.3) 모두 영어 설명 예제에서 최고 성능을 기록하여, 사전학습 과정에서 형성된 강력한 영어-코드 정렬을 통한 교차 언어 전이를 시사합니다.
- 한국어 중점 모델은 한국어 주석에서 이점: 한국어 중심 모델인 EXAONE-3.0-7.8B-Instruct는 유일하게 [KO, PY(KO doc)] 예제에서 지속적으로 이점을 보여, 5-shot에서 최고 성능 56.7을 달성했습니다. 이는 한국어 중심 사전학습이 모델의 한국어 주석 활용 능력을 향상시킴을 나타냅니다.
- 한국어 변수명은 성능을 저하시킬 수 있음: GPT-4o-mini는 [KO, PY(KO var)] 예제에서 성능 저하를 보여, 변수 명명 규칙의 변형에 민감함을 나타냈습니다. 반면 EXAONE-3.0-7.8B-Instruct는 5-shot에서 164개 문제 중 108개에서 한국어 변수명을 자연스럽게 생성했습니다.
- 샷 수가 많다고 항상 좋지는 않음: GPT-4o-mini는 2~3샷에서 최고 성능을 보이고 4~5샷에서는 하락하는 반면, DeepSeek-Coder-V2-16B-Base는 일반적으로 3샷까지 향상됩니다. 이는 과도한 예제로 인한 수확 체감 및 간섭 가능성을 시사합니다.
코드 분석: 한국어 변수 채택
[KO, PY(KO var)] 예제 사용 시, 모델 간 한국어 변수 채택에 극적인 차이가 나타납니다. 5-shot 예제 기준 EXAONE-3.0-7.8B-Instruct는 164개 문제 중 108개에서 한국어 변수명이 포함된 코드를 생성하여, GPT-4o-mini나 DeepSeek-Coder-V2-16B-Base보다 월등히 많았습니다. 특히 GPT-4o-mini와 DeepSeek는 한국어 변수를 사용하지 않거나 사용 시 오류가 있는 코드를 생성한 반면, EXAONE은 한국어 변수를 활용하여 올바른 코드를 성공적으로 생성하여 — 한국어 중심 사전학습의 코드 생성에서의 가치를 부각했습니다.
프롬프트 설계에 대한 시사점
- 범용 모델의 경우, 하이브리드 프롬프팅 전략 — 한국어 대상 과제에 [EN, PY] 예제를 2~3샷으로 사용 — 이 최적으로 보입니다.
- 한국어 특화 모델의 경우, [KO, PY(KO doc)] 한국어 주석 예제가 모델의 한국어 이해 능력을 활용하여 최적의 성능을 제공합니다.
- [EN, PY] 샷 수를 늘리면 오히려 성능이 저하될 수 있다는 발견은 교차 언어 코드 생성을 위한 효율적인 프롬프팅 기법 연구의 필요성을 시사합니다.
의의
본 연구는 다국어 코드 생성 연구에 네 가지 중요한 기여를 합니다:
- 최초의 공개 한국어 코드 생성 벤치마크: KR-HumanEval은 164개의 고품질 한국어 번역 프로그래밍 문제(94.5%가 최고 품질 등급)로 핵심적인 평가 공백을 해소하여, 한국어 프로그램 합성 능력을 측정하고 개선하기 위한 표준화된 도구를 커뮤니티에 제공합니다. 저자들은 데이터셋의 공개 배포를 계획하고 있습니다.
- 코드 LLM의 언어 편향 규명: 한국어 대상 과제에서도 영어 퓨샷 기술이 더 높은 성능을 보인다는 발견은 현재 모델의 영어 중심 코드 생성 편향을 드러내며, 보다 균형 잡힌 다국어 학습을 위한 구체적인 방향을 제시합니다.
- 한국어 특화 모델의 차별적 행동 발견: EXAONE(한국어 중심)과 GPT-4o-mini(범용) 간 한국어 주석 및 변수에 대한 상이한 반응은 사전학습 언어 구성이 비영어 코드 생성 처리 방식에 실질적으로 영향을 미침을 보여주며, 한국어 특화 코드 모델에 대한 추가 연구를 촉진합니다.
- 실용적 프롬프팅 가이드라인: 총 60개 설정(3 모델 x 4 예제 유형 x 5 샷 수)에 대한 체계적 분석을 통해 실질적 지침을 도출했습니다: 범용 모델에는 2~3샷 [EN, PY], 한국어 특화 모델에는 [KO, PY(KO doc)]가 최적입니다. 신중한 프롬프트 엔지니어링으로 교차 언어 성능 격차를 최대 17점까지 해소할 수 있습니다.
본 논문은 한국어 NLP 커뮤니티에 대한 기여를 인정받아 HCLT 2024 최우수논문상을 수상하였습니다. 향후 다른 프로그래밍 언어로의 확장, 한국어 데이터 증강 및 교차 언어 전이 기법 연구 등이 후속 연구 방향으로 제시되었습니다.
Benchmark
Multilingual