Try Again, Don't Look Back: Blind Resampling Outperforms Self-Repair in Small Code Models
이 논문은 소규모 코드 모델의 경우, 모델이 자신의 실패한 시도에 의존하게 되면 실행 피드백을 효과적으로 활용하기보다 원래의 오류에 "고착(anchor)"되는 현상이 발생하기 때문에, 블라인드 리샘플링(피드백 없는 재시도)이 표준적인 셀프 리페어 방식보다 훨씬 적은 토큰을 사용하면서도 성능이 더 뛰어나거나 대등함을 입증한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
당신이 로봇에게 컴퓨터 코드를 작성하는 법을 가르치고 있다고 상상해 보세요. 당신은 로봇에게 "두 숫자를 더하는 프로그램을 작성하라"와 같은 과제를 주고, 로봇은 그것을 수행하려고 노력합니다. 때때로 로봇은 실수를 하여 코드가 제대로 작동하지 않습니다. 인공지능의 세계에서 "자기 수리(self-repair)"라는 개념은 매우 인기 있는 아이디어입니다. 이것은 마치 로봇에게 "이봐, 네가 틀렸어. 여기 네가 망친 코드와 에러 메시지가 있어. 이제 이걸 보고 무엇이 잘못되었는지 생각한 다음, 다시 고쳐봐"라고 말하는 것과 같습니다. 이는 실수로부터 배우는 똑똑한 방법처럼 들립니다, 그렇죠? 하지만 여기에는 함정이 있습니다. 우리가 이 "수정"이 효과가 있는지 테스트할 때, 우리는 종종 단 한 번의 시도 후에 포기해 버리는 로봇과 비교하곤 합니다. 이는 두 번째 기회를 얻은 로봇이 단순히 다시 시도했기 때문에 성공 확률이 높아지는 것이지, 반드시 자신의 실수로부터 배웠기 때문이 아니라는 점에서 다소 불공평합니다. "수정"이 정말 마법 같은 비결인지 알기 위해서는, 실패를 보지 못한 채 두 번째 기회를 얻는 로봇과 비교해야 합니다. 이 논문은 바로 그 질문을 파고듭니다. 실패를 되돌아보고 그것을 고치려고 노력하는 것이 나을까요, 아니면 실패를 잊고 완전히 새로운 방식으로 처음부터 다시 시작하는 것이 나을까요?
이 논문의 연구자들은 몇몇 작은 AI 모델들을 대상으로 "다시 시도하되, 뒤돌아보지 마라"라는 게임을 하기로 했습니다. 그들은 보통 약이 효과가 있는 것인지 아니면 단순히 약을 먹었다는 기대감이 효과를 내는 것인지 확인하기 위해 사용하는 "플라세보(placebo)" 테스트를 사용하여 정교한 실험을 설계했습니다. 여기서 그들은 로봇이 코드를 수정하는 네 가지 서로 다른 방법을 비교했습니다:
- 맹목적 재샘플링(Blind Resampling): 로봇은 첫 번째 시도에 대해 아무것도 듣지 못한 채 두 번째 기회를 얻습니다. 이는 학생에게 첫 번째 시험지를 보여주지 않고 수학 시험을 다시 치르게 하는 것과 같습니다.
- 플라세보(The Placebo): 로봇은 망가진 코드와 함께 "이것은 틀렸다"라는 간단한 메모를 봅니다. 하지만 왜 틀렸는지에 대한 세부 사항은 알 수 없습니다.
- 실제 피드백(Real Feedback): 로봇은 망가진 코드와 함께 구체적인 에러 메시지(예: "세미콜론을 빠뜨렸습니다")를 봅니다.
- 성찰(Reflection): 로봇은 에러를 보고, 다시 시도하기 전에 무엇이 잘못되었는지 설명하는 문단을 작성하도록 요청받습니다.
그들은 이 테스트를 세 가지 크기의 AI 모델(작은, 중간, 약간 큰 모델)에 대해 실행하며 얼마나 자주 코드를 올바르게 작성하는지 관찰했습니다.
여기 놀라운 반전이 있습니다: 과거의 실수를 되돌아보는 것이 오히려 작은 로봇들을 더 못하게 만들었습니다.
작은 모델들(15억 및 30억 파라미터)의 경우, "맹목적 재샘플링" 전략이 확실한 승자였습니다. 이 방식은 가장 정확했을 뿐만 아니라 컴퓨터 시간과 에너지 측면에서도 가장 저렴했습니다. 연구자들이 로봇에게 자신의 실패한 코드를 보게 강제했을 때(플라세보 또는 피드백 그룹), 로봇들은 갇혀버렸습니다. 그들은 완전히 새로운 해결책을 생각하는 대신, 깨진 코드를 아주 미세하고 거의 눈에 띄지 않는 수준으로 수정하는 경향을 보였습니다. 논문에서는 이를 **"앵커링(anchoring, 닻 내리기)"**이라고 부릅니다. 이것은 마치 고양이를 그리려다 망쳤을 때, 잘못된 그림의 선을 몇 개 지우면서 고치려고 애쓰는 것과 같습니다. 결국 당신은 이상하게 반쯤 고쳐진 고양이를 얻게 될 것입니다. 하지만 그냥 종이를 내려놓고 새 종이에 다시 그린다면, 당신은 완전히 다른, 더 나은 고양이를 그릴 수도 있습니다.
연구자들은 로봇이 자신의 실패한 시도를 보았을 때, 거의 동일한 프로그램을 **33%에서 68%**의 확률로 재현한다는 것을 발견했습니다. 반면에, 보지 않고 맹목적으로 시도했을 때는 자신을 반복하는 비율이 **2%에서 14%**에 불과했습니다. 에러 메시지에 담긴 "정보"는 전혀 도움이 되지 않았습니다. 단순한 "이것은 틀렸다"라는 메모는 전체 에러 보고서만큼이나 별로였습니다. 심지어 "생각을 소리 내어 말하라(Reflection)"고 요청하는 것도 상황을 구원하지 못했습니다. 그것은 결과가 개선될 만큼 충분히 좋아지지 않으면서 과정의 비용만 더 높일 뿐이었습니다.
하지만 더 큰 뇌를 위한 희망의 빛은 있습니다. 가장 큰 모델(70억 파라미터)을 테스트했을 때, 되돌아보는 것에 대한 페널티가 거의 사라졌습니다. "맹목적 재샘플링"과 "자기 수리" 방식은 통계적으로 무승부를 기록했습니다. 이는 AI가 똑똑해질수록 자신의 실수에 갇히지 않는 능력이 좋아진다는 것을 시사합니다. 하지만 사람들이 실제로 많이 사용하는 더 작고 저렴한 모델들의 경우, 조언은 명확합니다: 뒤돌아보지 마세요.
논문은 또한 다른 몇 가지 아이디어들도 배제했습니다. 그들은 문제가 단순히 프롬프트가 너무 길어져서 로봇을 혼란스럽게 만든 것인지 확인했지만, 다른 성공적인 작업의 코드를 추가해도 성능에 해가 되지 않았습니다. 이는 문제가 길이가 아니라, 구체적으로 로봇이 자신의 실패를 보는 것에서 비롯되었다는 것을 증명했습니다. 그들은 또한 이것이 컴퓨터가 숫자를 저장하는 방식(양자화)의 문제인지도 확인했지만, 결과는 동일했습니다.
그렇다면 결론은 무엇일까요? 만약 당신이 코드를 작성하기 위해 작은 AI를 사용하고 있다면, 그것의 실수를 보여주고 그것을 고치라고 요구하는 데 시간을 낭비하지 마세요. 그것은 아마도 무의미한 미세 수정의 루프에 갇히게 될 것입니다. 대신, 그냥 처음부터 다시 시도하라고 하세요. 그것이 더 빠르고, 더 저렴하며, 놀랍게도 더 잘 작동합니다. 나쁜 첫 번째 시도를 고치는 데 드는 비용은 결국 나쁜 첫 번째 시도에 갇혀버리는 비용일 뿐입니다. 때로는, 과거를 잊고 새로 시작하는 것이 앞으로 나아가는 가장 좋은 방법입니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.