Scaling Data Difficulty: Improving Coding Models via Reinforcement Learning on Fresh and Challenging Problems

이 논문은 자동 난이도 필터링을 포함한 4 단계 데이터 처리 프레임워크를 통해 최신의 고난이도 프로그래밍 문제만 선별한 'MicroCoder' 데이터셋을 구축하고, 이를 통해 기존 데이터셋 대비 훨씬 큰 성능 향상을 이끌어낸 Reinforcement Learning 기반 코딩 모델 학습 방법을 제안합니다.

Zongqian Li, Tengchao Lv, Shaohan Huang, Yixuan Su, Qinzheng Sun, Qiufeng Yin, Ying Xin, Scarlett Li, Lei Cui, Nigel Collier, Furu Wei

게시일 Tue, 10 Ma
📖 3 분 읽기☕ 가벼운 읽기

Each language version is independently generated for its own context, not a direct translation.

🎓 1. 문제점: "너무 쉬운 문제만 풀고 있는 학생"

지금까지 코딩 AI 를 훈련시킬 때 사용된 데이터셋 (문제집) 은 몇 가지 큰 문제가 있었습니다.

  • 난이도 불균형: 마치 고등학교 수학 문제를 풀면서, "1+1 은 몇?" 같은 아주 쉬운 문제 100 개와 "미적분" 같은 어려운 문제 1 개가 섞여 있는 꼴입니다. AI 는 쉬운 문제만 계속 풀어서 성적이 오르는 척하지만, 진짜 어려운 시험 (실제 상황) 에는 당황합니다.
  • 낡은 문제: 인터넷에서 구한 문제들은 이미 AI 가 훈련할 때 많이 봤던 것들입니다. 마치 시험 전에 정답을 외운 학생처럼, 새로운 문제는 못 풉니다.
  • 형식 불일치: 문제 지시사항이 제각각이라 AI 가 정답은 맞췄는데, 답안지 작성 방식이 틀려서 감점당하는 경우가 많습니다.

🛠️ 2. 해결책: "MicroCoder"라는 새로운 훈련 시스템

연구팀은 이 문제를 해결하기 위해 4 단계의 정교한 필터링 시스템을 만들었습니다. 이를 **'MicroCoder'**라고 이름 지었습니다.

① 수집 (Collection): "전 세계의 어려운 문제 모으기"

유명한 코딩 대회 사이트 (AtCoder, CodeChef 등) 에서 최신의 진짜 문제들을 모았습니다. AI 가 만들어낸 가짜 문제는 배제하고, 인간이 만든 진짜 난이도 높은 문제만 모았습니다.

② 가공 (Processing): "문제지 정리하기"

  • 번역: 영어가 아닌 다른 언어로 된 문제는 모두 영어로 통일합니다.
  • 정리: 그림이 깨지거나, 설명이 불완전한 문제들은 버립니다.
  • 형식 통일: 모든 문제를 같은 형식 (예: 입력값을 주고 답을 출력하는 방식) 으로 맞춰줍니다.

③ 필터링 (Filtering): "AI 가 스스로 난이도를 평가하고 걸러내기" (가장 중요한 부분!)

이게 이 연구의 핵심입니다. 연구팀은 AI(대규모 언어 모델) 를 이용해 각 문제의 난이도를 5 가지 척도로 평가하게 했습니다.

  • 비유: 마치 "이 문제는 초등학생이 풀 수 있을까? 고등학생은? 대학생은?"을 AI 가 판단하게 하는 것입니다.
  • 전략: "너무 쉬운 문제 (1+1 같은 것)"는 과감히 버리고, **"AI 가 풀기 힘들어하는 진짜 어려운 문제"**만 남깁니다.
  • 결과: 전체 데이터의 30% 를 버렸지만, 남은 데이터는 훨씬 더 '질 좋은' 어려운 문제들로 채워졌습니다.

④ 검증 (Verification): "정답 확인"

남은 문제들이 실제로 정답이 맞는지, 테스트 코드가 제대로 작동하는지 다시 한번 확인합니다.

🚀 3. 결과: "어려운 문제를 풀수록 더 똑똑해진다"

이렇게 만든 MicroCoder로 AI 를 훈련시켰을 때 놀라운 결과가 나왔습니다.

  • 기존 데이터 vs MicroCoder: 같은 양의 데이터로 훈련해도, MicroCoder 를 쓴 AI 는 3 배 더 빠르게 실력이 향상되었습니다.
  • 어려운 문제에서의 승리: 특히 '중간'과 '어려운' 난이도의 문제에서 실력이 비약적으로 늘었습니다.
    • 비유: 쉬운 문제만 풀던 학생이, 갑자기 어려운 수학 경시대회 문제를 풀게 되자 오히려 논리력이 길러져서 모든 과목의 성적이 올라간 것과 같습니다.
  • 새로운 문제에도 강함: AI 가 훈련할 때 본 적 없는 최신 문제 (LiveCodeBench) 에도 잘 대처했습니다.

💡 4. 핵심 교훈 (요약)

이 논문의 결론은 매우 간단합니다.

"AI 를 가르칠 때, 양이 많다고 해서 좋은 게 아닙니다. AI 가 '머리를 쥐어짜게' 만드는 진짜 어려운 문제를 골라내서 훈련시키는 것이, AI 를 더 똑똑하게 만드는 지름길입니다."

마치 운동선수가 가벼운 아령만 들고는 마라톤을 못 뛰지만, 무거운 아령으로 근력을 키우면 더 멀리 달릴 수 있는 것과 같은 이치입니다. 연구팀은 **"어려운 문제를 두려워하지 말고, 그것을 훈련의 재료로 쓰라"**고 제안합니다.