Executive Summary
이 글은 2026년 10월 9일 arXiv에 올라온 논문 한 편을 읽는다. 네덜란드 국립수학정보연구소(CWI)의 연구진이 데이터 과학 에이전트 세 종을 과제 220개에 돌려, 에이전트가 짠 분석 절차를 정확도가 아니라 절차 자체로 채점했다. 지금까지의 평가는 거의 전부 예측 성능과 코드가 돌아가는지만 봤다.
가장 오래 남는 숫자는 2.58이다. 채점을 받은 분석 절차 1,761개에서 방법론 결함 4,557건이 검출됐으니, 절차 하나당 평균 2.58건이다. 여기서 방향이 갈린다. 데이터 누수에 해당하는 결함은 모두 예측 순위를 올렸고, 학습과 검증을 나누지 않는 것 같은 생략형 결함은 순위를 깎았다. 성적표만 보면 답이 샌 쪽이 더 좋은 모델로 보인다는 뜻이다.
이 글이 옮긴 수치와 설명은 전부 논문 원문에서 가져왔다. 6절에서 질문을 사내 데이터팀의 결재 절차 쪽으로 돌리는 대목은 논문의 주장이 아니라 이 글의 해석이다.
주요 수치
네 칸을 뽑았다. 앞의 둘은 결함이 얼마나 흔한지와 자체 점수가 실제와 얼마나 어긋나는지이고, 뒤의 둘은 전담 안전장치가 있어도 새는 비율과 아예 손도 못 댄 시험 결과다.
2.58건
분석 절차 하나당 결함
채점한 절차 1,761개에서 결함 4,557건이 나왔다. 채점자가 보수적이라 실제보다 적게 센 값일 가능성이 크다고 저자들은 적는다
1.0 → 0.444
자체 점수와 실제 점수
캐글 대회 하나에서 ReAct가 쓸 수 없는 특징을 끌어다 쓰고 받은 자체 검증 점수와, 같은 절차를 실제 리더보드에 올렸을 때의 점수
50%
누수 검사 전담 장치를 둔 쪽의 누수율
누수 점검 에이전트를 따로 둔 MLEvolve를 가장 센 모델에 붙였는데, 절차 절반에서 검증 데이터가 학습으로 새어 들었다
6 중 2
여섯 조합이 다 틀린 시험
함정을 심어 둔 통제 시험 여섯 가지 중 상관·인과 구분과 특징 선택 누수 탐지는 시험에 쓴 조합 여섯 전부가 실패율 1.0이었다
자체 점수는 1.0, 실제 점수는 0.444
논문에 실린 사례 하나부터 보자. 캐글의 '문제적 인터넷 사용' 대회는 청소년의 인터넷 사용 정도를 예측하는 과제다. 연구진이 이 대회의 데이터를 자기들 방식으로 다시 나눠 에이전트에게 맡겼더니, ReAct와 AIDE가 자체 검증에서 거의 만점에 가까운 점수를 받았다. 이 대회가 쓰는 지표인 QWK 기준으로 1.0에 가까웠다.
원인은 실력이 아니었다. 연구진이 나눈 평가용 데이터 안에는 PCIAT-로 시작하는 변수들이 섞여 있었고, 그중 PCIAT-PCIAT_Total에서는 맞혀야 할 정답을 그대로 계산해 낼 수 있었다. 실제 캐글 대회의 채점용 데이터에는 들어 있지 않은 값이다. 두 에이전트는 이 변수를 특징으로 골라 넣었다. 답을 보고 답을 맞힌 셈이다.
같은 절차를 실제 대회 리더보드에 올리면 숫자가 달라진다. ReAct는 0.4440, AIDE는 0.4280, MLEvolve는 0.4170을 받았다. 같은 대회 1위 사람 참가자의 점수는 0.4820이다. 네 숫자는 모두 비공개 순위표 기준이고, 공개 순위표에서도 순서는 같다. 자체 검증에서 1.0을 받던 절차가, 새는 통로를 막자 1위에 뚜렷이 못 미치는 자리로 내려앉았다.
남은 격차는 결함으로 설명되지 않는다. 연구진이 1위 해법의 절차를 나란히 놓고 뜯어 보니, 거기서는 맞혀야 할 지수를 직접 예측하지 않았다. 에이전트가 특징으로 끌어다 쓴 바로 그 연속 점수를 예측 대상으로 삼고, 등급을 가르는 임계값은 마지막 단계에서만 조정했다. 손실 함수도 목표값 분포에 맞는 것으로 골랐고, 시드를 바꿔 가며 10겹 교차검증을 돌렸으며, 계열이 다른 모델들을 섞었다. 세 에이전트 어느 쪽도 이런 선택에 닿지 못했다. 논문은 이 대목을 결함 목록과 분리해 적는다. 결함을 다 지워도 남는 것이 있어서다.
여기서 중요한 건 에이전트가 거짓말을 했다는 게 아니다. 에이전트는 자기가 받은 데이터 안에서 가장 잘 맞히는 특징을 정직하게 골랐다. 그 선택을 걸러 낼 장치가 평가 어디에도 없었다. 점수만 보고받은 사람은 이 절차를 승인했을 것이다.
정확도 말고 절차를 채점한다
연구진이 평가한 대상은 데이터 과학 에이전트 세 종이다. 도구를 쓰며 생각을 이어 가는 기본형 ReAct, 코드를 반복해 고쳐 나가는 AIDE, 여러 에이전트가 탐색과 기억을 나눠 맡는 자기진화형 MLEvolve다. 여기에 언어모델 세 종을 각각 붙여 아홉 가지 조합을 만들었다. 비교 기준으로는 에이전트가 아닌 기존 자동화 도구 AutoGluon도 함께 돌렸다.
과제는 220개다. 회귀 123개와 분류 97개로, STRABLE에서 108개, 캐글에서 44개, OpenML에서 36개, UCI에서 24개, MLE-bench에서 8개를 가져왔다. 각 과제의 데이터는 8 대 2로 나눠 두고, 에이전트에게는 양쪽을 다 주되 평가용 몫은 학습에 쓰지 않는 것이 올바른 절차라고 전제했다. 의료가 50개, 금융이 47개로 가장 많다.
여기서 먼저 걸리는 의심이 있다. 이 과제들은 대부분 인터넷에 공개된 표 데이터라, 언어모델이 학습 과정에서 이미 봤을 수 있다. 그렇다면 좋은 점수는 분석 실력이 아니라 기억에서 나온 것이 된다. 연구진도 이 가능성을 먼저 걸러 냈다. 열 이름을 맞히게 해 과제별로 암기 정도를 재고, 암기 정도가 높은 묶음과 낮은 묶음을 따로 뽑아 열 이름과 설명을 가린 채 다시 돌렸다. 가리지 않은 판도 같이 돌려 비교 기준으로 뒀다. 세 에이전트에 같은 모델을 붙여 돌린 검정 여섯 번 모두 유의한 차이가 없었다. 표를 외워서 점수가 올라간 것은 아니었다.
채점은 사람이 아니라 언어모델 심판이 맡았다. 먼저 절차를 읽어 어떤 단계가 들어 있는지 파악하고, 그 단계에 해당하는 결함만 골라 두 번째 호출에서 판정하는 2단계 방식이다. 데이터에 시간 순서가 없는데 '시간 순서를 무시했다'고 채점하면 안 되니, 적용 가능한 결함만 추리는 단계를 앞에 둔 것이다. 사람이 따로 매긴 285건과 대조했더니 89.5%가 일치했고, 일치도 지표인 코헨 카파는 0.62였다.
이 심판의 성향도 논문이 밝혀 뒀다. 정밀도 0.71에 재현율 0.65로, 있는 결함을 놓치는 쪽에 가깝다. 그래서 본문에 적힌 결함 비율은 과대가 아니라 과소 추정일 가능성이 크다고 저자들은 적는다. 아래 숫자들을 읽을 때 염두에 둘 방향이다.
결함 목록은 15가지이고, 두 무리로 갈린다. 평가용 데이터의 정보가 학습으로 흘러드는 데이터 누수 계열이 여섯 가지, 지켜야 할 단계를 빠뜨리거나 잘못 고르는 비누수 계열이 아홉 가지다.
| 데이터 누수 계열 (6) | 비누수 계열 (9) |
|---|---|
| 탐색 단계에서 평가용 데이터 들여다보기 분할 전 결측치 채우기 시간 순서 무시 분할 전 스케일링 분할 전 특징 선택 평가용 데이터를 여러 후보 비교에 재사용 |
과제 정의를 잘못 세움 데이터 정제 생략 학습·검증 분할 없음 특징 공학 생략 과제에 안 맞는 모델 선택 딥러닝에 정규화 없음 단순 평균으로 모델 합치기 변동성 있는 모델을 한 번만 평가 평가 지표를 하나만 사용 |
아홉 조합이 빠짐없이 결함을 안고 있었고, 어느 조합에서든 절차의 43% 이상에 나타나는 결함이 최소 하나씩 있었다. 틀에 넣어 센 15가지 바깥에서도 심판이 문제를 추가로 짚었는데, 걸러 내고 남은 실제 방법론 위반이 절차의 37%에서 나왔다. 그중 가장 흔한 것이 또 누수였다.
누수는 순위를 올리고 생략은 대체로 순위를 깎는다
이 논문의 중심 발견은 결함과 성적의 관계다. 과제마다 쓰는 지표가 달라 점수를 그대로 비교할 수 없으니, 연구진은 아홉 조합이 낸 절차들을 과제별로 줄 세운 순위를 성능의 대리값으로 썼다. 그리고 조합이 다르면 애초에 잘하고 못하는 차이가 있으니, 모델과 에이전트의 정체를 변수로 넣어 그 차이를 걷어낸 뒤 결함 하나의 효과만 남겼다.
줄을 세운 점수가 어디서 나온 값인지가 중요하다. 에이전트에게 건네진 바로 그 평가용 데이터 위에서 잰 값이다. 쓰지 말라는 조건을 달고 건넨 몫이다. 조직이 에이전트에게서 받아 보는 검증 점수와 같은 자리에 있는 숫자이고, 누수가 점수를 밀어 올리는 통로도 정확히 거기다.
그렇게 걸러 낸 결과가 두 방향으로 갈렸다. 데이터 누수 계열은 전부 순위를 끌어올렸다. 평가용 데이터의 정보가 학습에 섞여 들어갔으니 당연한 결과이지만, 점수에는 그 상승분이 실력과 똑같은 모습으로 적힌다. 반대로 비누수 계열은 대체로 순위를 깎았고, 그중 학습·검증 분할을 아예 두지 않는 결함의 효과가 가장 커서 평균 한 순위 넘게 떨어뜨렸다.
예외가 하나 있다. 평가 지표를 하나만 쓰는 것은 비누수 계열인데도 순위가 올라갔다. 연구진은 이렇게 본다. 지표를 하나만 보는 절차는 그 지표에만 맞춰 조여지고, 순위를 매길 때 쓰는 지표가 하필 그 지표라서 유리해진다는 것이다. 성적이 좋아진 대가로 다른 축의 견고함을 잃었을 수 있지만, 그 손실은 하나짜리 지표에 잡히지 않는다.
정리하면 이렇다. 평가용 데이터 위의 점수가 높다는 사실은 좋은 절차를 뜻하지 않는다. 점수만으로 에이전트를 평가하면, 평가 체계가 누수에 상을 주게 된다.
작은 모델이 안 새는 건 잘해서가 아니다
결함 표를 처음 보면 엉뚱한 결론이 나온다. 가장 작은 모델을 붙인 ReAct는 누수 계열 네 가지가 모두 0.00이다. 분할 전 결측치 채우기도, 시간 순서 무시도, 분할 전 스케일링도, 분할 전 특징 선택도 한 건이 없다. 같은 표의 다른 칸을 보면 이유가 드러난다. 이 조합은 학습·검증 분할을 아예 하지 않은 비율이 1.00이고, 특징 공학을 하지 않은 비율이 0.98이다.
분할을 안 하면 분할 전에 저지르는 잘못도 없다. 특징을 만들지 않으면 특징을 통해 새는 일도 없다. 작은 모델의 깨끗한 누수 성적은 지켜서 얻은 것이 아니라 안 해서 생긴 공백이다. 같은 모델을 AIDE에 붙여 검증 분할을 하게 만들자, 분할 전 결측치 채우기가 0.00에서 0.08로 올라왔다.
역량이 올라가면 반대 현상이 생긴다. 센 모델은 특징을 만들고 검증 세트를 스스로 지정하지만, 그렇게 늘어난 단계 안에서 또 샌다. 세 에이전트 어느 쪽에 붙이든, 가장 센 모델은 시간 순서를 지켜야 하는 과제의 3분의 1 이상에서 그 순서를 무시했다. 틀 바깥에서 집계한 '검증 데이터가 학습으로 새어 든' 비율도 모델 역량을 따라 8%, 16%, 26%로 올라간다.
프레임워크를 갈아 끼워도 같은 일이 벌어진다. 고쳐 주는 칸과 새로 만드는 칸이 따로 있다. 가장 센 모델에서 AIDE와 MLEvolve는 ReAct가 0.40이던 '학습·검증 분할 없음'을 0.00으로 내렸다. MLEvolve는 '특징 공학 생략'을 0.38에서 0.00으로, '단순 평균으로 모델 합치기'를 0.90에서 0.04로 내렸다. 대신 AIDE는 어떤 모델을 붙이든 절차의 85~88%에서 평가 지표를 하나만 썼다. 같은 칸에서 ReAct는 작은 모델과 가장 센 모델이 각각 15%와 14%다.
우연이 아니라 설계다. AIDE는 검증 지표 하나로 후보 해법에 점수를 매겨 고르는 구조다. 그런데 3절에서 본 대로, 지표를 하나만 쓰는 것은 비누수 계열 중 유일하게 순위를 올려 주는 결함이다. 줄 세우기에 유리한 결함 하나가 프레임워크 설계에 붙박여 있는 셈이다.
가장 뼈아픈 칸은 MLEvolve다. 이 프레임워크는 누수를 점검하는 에이전트를 따로 두고 있고, 가장 센 모델을 붙였을 때 틀 안에서 잡힌 결함이 가장 적었다. 그런데 그 조합의 절차 50%에서 검증 데이터가 학습으로 새어 들었고, 틀 바깥 결함을 가진 절차 비율은 57%로 아홉 조합 중 가장 높았다. 전담 점검 장치를 붙인다고 막히는 종류의 문제가 아니라는 뜻이다.
그래서 결함 개수를 세는 방식의 품질 관리는 작동하지 않는다. 절차를 적게 밟을수록 틀릴 기회도 줄기 때문이다. 세어야 할 것은 결함의 수가 아니라 밟은 단계와 그 단계마다 지킨 것이 무엇인지다.
상관과 인과는 아무도 가르지 못했다
대규모 분석은 에이전트가 실제로 무엇을 하는지 보여 주지만, 그 과제들은 애초에 함정을 심어 만든 것이 아니라서 정답이 무엇인지 못 박기 어렵다. 그래서 연구진은 따로 시험지를 만들었다. 각 시험마다 특정 함정 하나를 데이터에 심어 두고, 에이전트가 그 함정을 알아보는지 본다. 과제 17개에 바탕 데이터 3종, 조합마다 다섯 번씩 돌려 평균을 냈다.
시험은 여섯 가지다. 클래스 불균형, 표기가 제각각인 값, 상관과 인과의 구분, 도메인 지식이 필요한 특징 변환, 특징 선택 단계의 데이터 누수, 지표 선택. 앞서 쓴 세 모델 중 작은 두 종은 여기서 쓸 만한 코드를 대부분 내놓지 못해 분석에서 빠졌다. 남은 한 종에 이 시험에만 따로 투입한 모델 한 종을 더해, 모델 두 종과 에이전트 세 종을 짝지은 여섯 조합이 분석에 남았다.
결과가 선명하다. 여섯 시험 중 둘은 이 조합들이 모두 매번 틀렸다. 정답과 아무 관계가 없는데 숫자만 강하게 붙어 있는 가짜 특징을 걸러 내는 시험과, 학습 시점에 쓸 수 없는 특징을 특징 선택에서 제외하는 시험이다. 실패율이 양쪽 모두 1.0이다. 표기가 제각각인 값을 정리하는 시험도 이에 가까워, 여섯 조합 중 다섯이 매번 틀렸고 나머지 하나가 0.8이었다. 나머지 세 시험은 조합에 따라 편차가 컸다.
뒤늦게 투입한 모델이 앞의 모델보다 늘 낫지는 않았다. ReAct에 붙였을 때 클래스 불균형과 도메인 특징 변환 두 시험에서는 실패가 줄었지만, 그 개선이 나머지 시험으로 번지지 않았다. 모델이 세진다고 방법론을 고르는 판단까지 고르게 좋아지지는 않는다.
힌트를 주면 달라지는지도 확인했다. ReAct와 AIDE는 힌트가 구체적일수록 실패율이 가파르게 떨어져 0에 가까워졌다. 못 해서 틀린 게 아니라 무엇을 조심해야 하는지 알아차리지 못해 틀렸다는 뜻이다. MLEvolve는 다르게 움직였다. 중간 수준의 힌트까지는 나아지다가 더 구체적인 힌트에는 더 반응하지 않았고, 끝까지 두 에이전트보다 실패율이 높았다. 탐색과 최적화를 정교하게 짤수록 처음 받은 제약을 끝까지 들고 가기 어려워지는 쪽으로 저자들은 읽는다.
페블러스가 이 연구를 주목하는 이유
이 논문은 보통 '데이터 과학 에이전트는 아직 멀었다'는 자료로 읽힌다. 데이터를 다루는 자리에서는 다른 것이 먼저 보인다. 사람이 하던 시절에는 저 열다섯 가지 중 상당수가 코드 리뷰와 동료 검토에서 걸렸다. 분할을 언제 했는지, 결측치를 채운 시점이 분할 앞인지 뒤인지, 지표를 왜 그것으로 골랐는지는 리뷰어가 묻던 질문이다. 자동화된 뒤 그 질문을 하는 자리가 사라졌다.
사라진 자리를 대신한 것이 최종 점수 하나다. 그리고 이 논문이 측정한 바로는, 그 점수는 가장 잡아야 할 결함에 상을 준다. 조직이 에이전트에게 받은 "검증 정확도 0.93"은 절차를 잘 지켜서 나온 숫자일 수도 있고, 답이 새어 들어서 나온 숫자일 수도 있다. 숫자 자체로는 둘을 구분할 방법이 없다.
그래서 결재 전에 물을 것이 바뀐다. 점수가 얼마인지가 아니라, 그 점수가 무엇을 지켜서 나왔는지다. 학습과 검증을 언제 나눴고 그 앞뒤로 어떤 처리를 했는지, 시간 순서가 있는 데이터인데 무작위로 나누지는 않았는지, 지표를 하나만 보고 있지는 않은지. 이 논문의 실패 목록은 그대로 점검 목록이 된다. 적어도 에이전트에게 "어느 단계를 밟았고 각 단계에서 평가용 데이터를 어떻게 격리했는지"를 함께 제출하게 할 수는 있다.
한 가지 더 남는다. 결함 개수를 세는 점검은 역효과를 낸다는 것이 4절의 교훈이다. 단계를 건너뛴 절차가 가장 깨끗해 보이기 때문이다. 품질 기록은 무엇을 틀렸는지보다 무엇을 했는지를 먼저 남겨야 한다. 어떤 단계를 밟았고, 그 단계에서 어떤 경계를 지켰는가. 이 두 줄이 없으면 어떤 점수도 증거가 되지 못한다.
여기까지 읽어 주셔서 감사하다. 논문 원문은 여기에서, 실패 유형 분류와 시험지는 프로젝트 페이지에서 볼 수 있다. 여러분의 팀은 에이전트가 낸 모델을 받을 때 점수 말고 무엇을 함께 요구하는가? 의견을 나눠 주시면 좋겠다.
참고문헌
- 1.Li, X., Xia, H., Gomm, D., Santos, A., Wolff, C., & Hulsebos, M. (2026). "The Silent Failures in Agentic Data Science." arXiv:2610.14115.
- 2.TRL Lab. (2026). "Silent Failures in Agentic Data Science — Project Page." 실패 유형 분류와 통제 시험 시험지 공개 자료.