프로그래밍 언어 혼동 현상 분석
초록
본 논문은 대형 언어 모델(LLM)이 코드 생성 및 번역 과정에서 사용자가 지정한 프로그래밍 언어와 다른 언어로 코드를 출력하는 “프로그래밍 언어 혼동(PLC)” 현상을 체계적으로 조사한다. 10개의 대표 LLM을 6개의 다국어 데이터셋(LiveCodeBench, BabelCode, HumanEval‑XL, McEval 등)에서 약 75 000개의 샘플에 적용해 혼동 비율을 측정하고, 혼동이 무작위 오류가 아니라 모델이 학습한 통계적 선호에 기반한 패턴임을 밝혀냈다. 특히 파이썬으로의 기본 이동과 문법이 유사한 언어 쌍(C#‑Java 등) 사이에서 빈번한 전이가 관찰되었다. 명시적 언어 키워드가 가장 효과적인 완화 수단이며, 양자화된 모델은 혼동을 크게 악화시킨다. 논문은 언어 충실도를 핵심 평가 지표로 삼을 것을 제안한다.
상세 분석
본 연구는 프로그래밍 언어 혼동(PLC)을 정의하고, 이를 정량화하기 위한 세 가지 메트릭(LCPR, CPPR, DMR)을 설계하였다. LCPR은 생성된 코드가 목표 언어와 일치하는 비율을, CPPR은 구문적으로 파싱 가능한 비율을, DMR은 혼동된 샘플이 특정 언어(주로 파이썬)로 이동하는 비율을 측정한다. 실험에 사용된 10개 모델은 일반 목적 모델(GPT‑3.5‑Turbo, Llama‑3.1 등)과 코드 전용 모델(CodeLlama‑13B, Starcoder2 등)로 구성되며, 파라미터 규모와 아키텍처 다양성을 고려하였다.
데이터셋은 코드 생성용 LiveCodeBench, BabelCode‑HumanEval, BabelCode‑MBPP, BabelCode‑TP3, HumanEval‑XL와 코드 번역용 McEval을 포함한다. 각 샘플은 16개 프로그래밍 언어와 12~23개의 자연어 설명으로 구성되어, 언어 간 교차 영향과 자연어 프롬프트의 영향을 동시에 평가할 수 있다.
핵심 결과는 다음과 같다. 첫째, 대부분의 모델에서 LCPR이 70 % 이하로 낮아, 목표 언어를 정확히 유지하지 못한다. 특히 코드 전용 모델인 CodeLlama‑13B와 DeepSeek‑Coder‑V2는 파이썬으로의 전이율(DMR)이 45 %에 달해, 다른 언어를 요구받아도 파이썬 코드를 출력한다. 둘째, 혼동된 코드의 다수는 구문적으로 올바른 형태를 유지한다(CPPR 80 % 이상). 이는 모델이 “문법적으로 가능한” 언어를 선택하는 경향이 있음을 의미한다. 셋째, 언어 쌍 간 유사성(예: C#‑Java, C‑C++)이 높은 경우 상호 전이가 빈번히 발생한다. 이는 모델이 학습 데이터에서 언어 간 토큰 분포를 공유하면서 발생하는 부정적 전이(negative transfer) 현상으로 해석된다.
프롬프트 실험에서는 명시적 언어 키워드(예: “Write the solution in Java”)가 LCPR을 평균 20 %p 상승시키는 반면, 자연어 설명만으로는 효과가 미미했다. 또한 모델 양자화(4‑bit, 8‑bit) 실험에서, 양자화된 모델은 LCPR이 평균 15 %p 감소하고, CPPR도 10 %p 이하로 떨어져 구문 안정성까지 악화되는 것을 확인했다. 이는 양자화 과정에서 미세한 토큰 확률 차이가 증폭되어 언어 선택 편향이 강화된 것으로 보인다.
이러한 결과는 현재 코드 LLM이 다중 언어 환경에서 “언어 경계 유지”라는 기본적인 신뢰성을 보장하지 못함을 시사한다. 따라서 언어 충실도를 별도 평가 지표로 도입하고, 프롬프트 설계 시 명시적 언어 태그를 포함시키는 것이 실무적 완화책이 될 수 있다. 또한, 모델 설계 단계에서 언어별 토큰 임베딩을 분리하거나, 다중 언어 학습 시 언어 간 교차 손실을 최소화하는 정규화 기법이 필요하다.
댓글 및 학술 토론
Loading comments...
의견 남기기