Do Machines Struggle Where Humans Do? LLM and Human Comprehension of Obfuscated Code
이 논문은 대규모 언어 모델이 난독화된 코드를 이해할 때 인간의 실패 양상을 공유하는지 평가하며, 추론 튜닝된 모델은 다양한 난독화 단계에 걸쳐 인간의 어려움 패턴과 유의미하게 일치하는 반면 지시 튜닝된 모델은 그렇지 않다는 것을 발견하였다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
이제 퍼즐을 풀고 있다고 상상해 보세요. 그런데 누군가 그 퍼즐을 가져가서 두 가지 일을 합니다:
- 조각의 이름을 바꿉니다: 체스 조각이 "킹", "퀸", "폰" 대신 "X", "Y", "Z"라고 이름 붙여집니다. 혹은 당신을 속이기 위해 "킹"을 "폰"이라고 이름 붙이기도 합니다.
- 지침을 뒤섞습니다: "앞으로 가고, 왼쪽으로 돌기"와 같은 명확한 경로 대신, 순서를 파악하기 위해 복잡한 지도가 필요한 아주 작고 단절된 단계들로 지침이 쪼개집니다.
이것이 바로 **코드 난독화(code obfuscation)**가 컴퓨터 프로그램에 하는 일입니다. 프로그램은 똑같이 작동하게 유지하면서도, 인간이 읽고 이해하기는 믿을 수 없을 정도로 어렵게 만듭니다.
이 논문은 단순하지만 심오한 질문을 던집니다: AI 모델(대규모 언어 모델)도 인간이 하는 방식과 똑같이 이 뒤섞인 퍼즐 때문에 어려움을 겪을까요? 아니면 인간과는 완전히 다른, 신비로운 방식으로 실패할까요?
연구 결과의 핵심 내용을 일상적인 비유를 들어 설명해 드리겠습니다:
1. "똑똑한" AI vs. "훈련된" AI
연구진은 다양한 유형의 AI 모델을 테스트했습니다. 이들을 서로 다른 유형의 학생이라고 생각하면 됩니다:
- "코더/지시(Coder/Instruct)" 모델: 이들은 방대한 코드 예시가 담긴 교과서를 통째로 암기한 학생들과 같습니다. 이들은 패턴을 찾아내는 데 탁ual합니다(예를 들어 "print"라는 단어를 보고 무엇을 해야 할지 아는 것). 하지만 퍼즐이 뒤섞이면 이들은 혼란에 빠집니다. 왜냐하면 그들의 "패턴 매칭"이 깨지기 때문입니다. 이들은 코드가 왜 작동하는지 실제로 이해하는 것이 아니라, 코드가 보통 어떻게 생겼는지를 알 뿐입니다.
- "추론(Reasoning)" 모델: 이들은 생각하는 법을 배운 학생들과 같습니다. 단순히 암기하는 것이 아니라, 논리를 단계별로 풀어가려고 노력합니다.
핵심 발견: "추론" 모델들은 뒤섞인 퍼즐에 대해 정확히 인간과 똑같은 방식으로 어려움을 겪었습니다. 퍼즐이 어려워질수록(더 많이 난독화될수록), 인간과 추론형 AI 모두 속도가 느려지고 실수가 많아졌습니다. 반면, "코더" 모델들은 난이도에 크게 개의치 않았습니다. 이들은 그냥 무작위로 실패하거나 난이도에 따른 변화를 보이지 않았는데, 이는 이들이 문제에 대해 인간처럼 실제로 "생각"하고 있는 것이 아님을 보여줍니다.
2. "자신만만한 실수"의 함정
연구에서 가장 흥고한 부분 중 하나는 **적대적 이름 변경(Adversarial Renaming)**이라 불리는 특정 트릭과 관련이 있습니다.
- 시나나리오: 세율을 계산하는 함수의 이름이
calculate_tax라고 가정해 봅시다. 난독화 도구가 이 이름을calculate_bonus로 바꿉니다. - 인간의 반응: 프로그래머는 "보너스"라는 단어를 보고 "잠깐, 세금에 보너스라는 단어는 맞지 않는데?"라고 생각하겠지만, 코드 로직이 지저분하다면 여전히 혼란을 느낄 수 있습니다.
- AI의 반응: "추론"형 AI들은 이 함정에 빠지곤 했습니다. 이들은 "보너스"라는 단어를 보고 코드가 돈을 주는 것에 관한 것이라고 가정하며, 자신 있게 틀린 답을 내놓았습니다.
연구 결과, 이 "자신만만한 실수"는 두 가지 일이 동시에 일어날 때만 발생했습니다: 이름이 오해의 소지가 있고 동시에 코드 구조가 혼란스러울 때 말이죠. 마치 누군가 당신에게 도시 지도를 건네주었는데, "병원"을 "피자 가게"라고 표시해 놓았고, 거리들은 모두 일방통행 루프로 되어 있는 것과 같습니다. 당신은 자신 있게 "피자 가게"(병원)로 운전해 갔다가 길을 잃게 될 것입니다.
3. "생각하는 시간" 측정기
연구진은 AI가 답하기 전에 얼마나 많이 "생각"했는지 살펴보았습니다. 이들은 AI가 생성한 "사고의 사슬(Chain of Thought, AI의 내부 독백)"의 단어 수를 세어 이를 측정했습니다.
- 인간과의 평행 이론: 인간이 어려운 퍼즐에 직면하면 문제를 푸는 데 시간이 더 오래 걸립니다.
- AI와의 평행 이론: 퍼즐이 어려워질수록, AI는 점점 더 긴 내부 독백을 생성했습니다.
- 함정: 흥미롭게도, AI는 더 오래 생각한다고 해서 어려운 퍼즐을 더 잘 풀게 되는 것은 아니었습니다. 사실, AI가 더 오래 생각할수록 정답을 맞힐 확률은 오히려 낮아졌습니다. 이는 마치 학생이 수학 문제를 한 시간 동안 뚫어지게 쳐다보며 페이지 가득 노트를 적고 있지만, 문제 자체가 너무 까다롭기 때문에 결국 틀린 답을 내는 것과 같았습니다. 생각의 길이는 성공의 징후가 아니라 난이도의 징후였습니다.
4. "전문가"의 차이
연구진은 인간 전문가와 초보자를 비교했습니다.
- 초보자: 코드가 뒤섞이면 초보자들은 문제를 푸는 능력이 훨씬 떨어졌습니다.
- 전문가: 놀랍게도 전문가는 약간 뒤섞인 코드를 풀 때 오히려 더 잘하게 되기도 했습니다. 왜일까요? 그들은 변수의 이름(예: "킹"이나 "폰" 레이블)에 의존하는 것을 멈추고, 순수하게 로직과 구조에 집중하기 시작했기 때문입니다.
- AI의 격차: 어떤 AI 모델도, 심지어 가장 똑똑한 모델조차도 이러한 "전문가"의 행동을 재현할 수 없었습니다. 그들은 약간 뒤섞인 코드에 대해 더 잘하게 되는 것이 아니라, 그냥 더 못하게 되었습니다. 이는 AI가 추론 능력은 갖추었을지언정, 오해의 소지가 있는 레이블을 무시하고 순수하게 밑바탕이 되는 구조에 집중할 수 있는 인간의 직관 수준에는 아직 도달하지 못했음을 시사합니다.
요약: 이것이 의미하는 바는 무엇인가?
- AI가 인간처럼 코드를 이해하나요? "추론"형 AI들은 그렇게 시작하고 있습니다. 그들은 인간이 겪는 것과 똑같은 어려운 퍼즐에서 막힙니다. "코더"형 AI들은 그저 패턴 매칭 기계일 뿐이며, 인간과는 다르게 실패합니다.
- 혼란스러운 코드에 AI를 믿어도 될까요? 맹목적으로는 안 됩니다. 코드에 이상한 이름이나 혼란스러운 구조가 있다면, AI는 매우 자신 있게, 그러나 매우 틀린 답을 줄 수 있습니다.
- "생각"의 신호: 만약 AI가 단순한 문제를 해결하기 위해 매우 길고 장황한 설명을 쓰기 시작한다면, 그것은 천재성의 징후가 아닙니다. 그것은 AI가 고군분투하고 있으며 곧 실수를 저지를 수도 있다는 신호입니다.
요컨대, 이 논문은 우리가 인간처럼 "생각"하기 시작한 AI를 만들고 있지만, 실제 세상의 개발자들이 매일 마주하는 지저치고, 혼란스럽고, 까다로운 코드를 다루기에는 아직 갈 길이 멀다는 것을 보여줍니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.