이 글은 Kaggle Benchmarking Challenge 제출물입니다.
한 유전자는 한 세포 유형에서는 증가하고 다른 세포 유형에서는 감소할 수 있습니다. 평균 발현량이 증가했는지 묻는다면, 그 답은 어떤 세포 혼합물을 의미하는지에 따라 달라집니다.
더 미묘한 질문이 있습니다: 정확한 백분율 증가를 알지 못해도 발현량이 증가했다고 알 수 있을까?
네. 그리고 모델은 이 두 가지를 동시에 말할 수 있어야 합니다.
저는 그 경계를 테스트하기 위해 CellCaution을 만들었습니다. 작고 통제된 연구에서 Gemma는 모든 주요 사례에 대해 정확하게 답변했습니다. 검증 지침은 GPT-5.4 mini가 더 많은 올바른 판결을 내렸지만, 올바른 완전한 답변은 적었습니다. Claude의 엄격한 점수는 재앙적으로 보였지만, 제가 응답 형식 준수와 수학적 내용을 분리하자 상황이 달라졌습니다.
이러한 발견들은 과학 분석을 위한 AI 어시스턴트를 평가하는 방식을 바꾸어 놓았습니다: 판결(verdict), 숫자(number), 그리고 출력 계약(output contract) 각각이 자체적인 증거를 필요로 합니다.
제가 벤치마킹한 내용
제 관심사는 단일 세포 RNA 시퀀싱을 위한 AI 작업에서 비롯되었습니다. 복잡한 생물학적 연구를 모델에게 해석하도록 요청하기 전에, 저는 모델이 정확하게 계산할 수 있는 작은 서술적 비교를 처리할 수 있는지 알고 싶었습니다.
다음 합성 발현 측정치를 고려해 보세요:
| 세포 유형 | 대조군 평균 (Control mean) | 처리군 평균 (Treated mean) |
|---|
| A | 17 | 22 |
| B | 53 | 50 |
| Information supplied | Is a strict increase supported? | Unique percentage | Possible percentage range |
|---|
| Exactly 80% A | Yes | 14.05% | 14.05% to 14.05% |
| ... | | | |
In the middle row, every allowed reference gives an increase. But the constraints do not identify one percentage. Returning null is the mathematically correct answer to the magnitude question, even though the direction is known. | | | |
Identical expression measurements produce a known percentage, a positive interval, or an interval crossing zero as reference constraints change.
그림 1. 이것들은 이전 파일럿에서 가져온 예시가 아니라 최종 v2 측정값입니다.
제가 측정하고자 했던 구체적인 행동은 알려진 것은 보존하고 알려지지 않은 것을 지어내지 않는 것입니다.
정확한 정답 키가 있는 벤치마크
주요 데이터셋에는 24개의 케이스: 고정적(fixed), 제약적(constrained), 비제약적(unrestricted) 참조 조성 하에 각각 제시된 8개의 템플릿이 포함되어 있습니다. 이 템플릿들은 두세 가지 세포 유형과 네 가지 발현 패턴, 즉 혼합 변화(mixed changes), 가산 증가(additive increases), 비례 변화(proportional changes), 그리고 변화 없음(no change)을 다룹니다.
각 응답은 다음의 네 가지 JSON 필드를 제공해야 합니다:
{
"verdict": "supported",
"standardized_change_percent": null,
...
판결(verdict)은 처리된 평균이 모든 허용 참조에서 엄격하게 높을 경우 supported이며, 어느 곳에서도 높지 않을 경우 unsupported이고, 답변이 참조에 따라 달라지는 경우 insufficient_information입니다.
**주요 점수(primary score)**는 정확한 판결과 올바른 백분율 또는 null 둘 다를 요구합니다. 범위의 정확도는 별도로 측정됩니다. 수치형 답변은 0.05 퍼센트 포인트의 허용 오차를 사용합니다. 설명은 검사를 위해 유지되지만, LLM 심사관(judge)은 그 산문(prose)에 점수를 매기지 않습니다.
답변 키는 유리수 산술을 사용합니다. 허용 가능한 집합은 제공된 참조 꼭짓점들의 모든 볼록 혼합체입니다. 차이는 가중치에 대해 선형적입니다. 양의 대조군 평균(positive control means)을 가진 경우, 임의의 혼합체에서의 백분율 비율은 각 꼭짓점의 비율에 대한 가중 평균이며, 이때 가중치는 각 꼭짓점의 대조군 평균에 비례합니다. 따라서 그 극값(extrema)은 꼭짓점에서 발생합니다. 이는 샘플링된 격자나 다른 모델의 판단에 의존하지 않고 정확한 경계값을 제공합니다.
테스트된 모델들
저는 Kaggle Benchmarks 레지스트리에서 사용할 수 있는 세 가지 모델을 사용했습니다:
| 모델 | 요청된 레지스트리 ID |
|---|
| Gemma 4 31B | google/gemma-4-31b |
| ... | |
| 이것은 Gemma와 두 개의 호스팅되는 어시스턴트를 포함하여 세 가지 모델 계열에 걸쳐 관리 가능한 라인업입니다. 이는 이 작업에서 요청된 모델들을 비교한 것이지, 제공사 전체에 대한 주장은 아닙니다. | |
각 모델에 대해 저는 24개의 직접 응답, 명시적인 검증 지침이 포함된 24개의 응답, 그리고 여덟 개의 재배열된 대조군을 기록했습니다: 총 168개의 사례 평가가 이루어졌습니다. 검증 프롬프트는 모델에게 각 꼭짓점에서 가중 평균을 계산하고 부호(signs), 극값(extrema), 고유성(uniqueness)을 확인한 후 답변을 반환하도록 요청합니다.
저는 공유되고 명시적으로 제어되는 온도나 추론 예산 대신 SDK 기본 설정을 사용했습니다. 내보내진 ID는 요청된 모델들을 식별하며, 서비스되는 정확한 백엔드 개정판(revision)을 독립적으로 검증하지는 않습니다.
발견 사항
1. 점수는 무엇을 계산하는지 말해야 한다
여기 고정된 출력 계약 하에서의 직접 프롬프트 결과입니다. 유효하지 않은 출력은 이 총계에서 오답으로 간주됩니다.
| 모델 | 유효 출력 / 24 | 판결 정확도 / 24 | 백분율 또는 null 정확도 / 24 | 범위 정확도 / 24 | 주요 항목 정확도 / 24 |
|---|
| Gemma 4 31B | 24 | 24 | 24 | 24 | 24 |
| ... | | | | | |
| Gemma는 이 작은 데이터셋에서 일관되게 정확했습니다. 이는 유용한 결과이지만, 24개의 관련 합성 사례가 광범위한 과학적 신뢰성을 확립한다고 보기는 어렵습니다. | | | | | |
Claude의 결과는 다른 설명이 필요합니다. 24개의 직접 응답 중 23개에서, 고정 파서(frozen parser)가 응답 형식을 거부했습니다. JSON 블록 주변에 추가 텍스트를 넣으면 요청된 계약을 위반합니다. 전체 JSON 객체 또는 단일 감싸는 구분자만 허용되며, 주변의 해설은 허용되지 않습니다.
저는 그 엄격한 점수를 유지하고 모델 전반에 걸쳐 통일적으로 적용되는 **사후 진단(post-hoc diagnostic)**을 추가했습니다. 정확히 하나의 감싸진 JSON 블록을 포함하는 유효하지 않은 응답의 경우, 해당 블록만 추출하여 변경되지 않은 채점기(grader)를 실행합니다. 어떠한 값도 수정되지 않으며, 추가적인 모델 호출도 이루어지지 않습니다.
이 진단을 통해 Claude의 직접적인 주 결과는 23/24가 됩니다. 남아있는 오류는 수학적입니다: 고정 구성 예시에서 14.05% 대신 약 22.40%를 반환했는데, 이는 가중 평균을 비교하는 것이 아니라 세포 유형 비율 변화를 평균화한 것과 일치합니다.
Strict primary scores and a separately labeled JSON extraction diagnostic for direct and verification prompts.
그림 2. 추출 진단은 고정된 엄격 점수를 대체하지 않습니다.
실질적인 교훈은 두 계층(layer) 모두를 보고해야 한다는 것입니다. 다운스트림 프로그램은 사용 가능한 응답이 필요합니다. 과학적 평가 역시 사용 불가능한 응답과 잘못된 수학적 내용을 구별할 필요가 있습니다.
2. 검증은 한 구성 요소에는 도움이 되었고 다른 구성 요소에는 해를 끼쳤다
검증 지침(verification instructions)은 다음과 같은 주 점수 비교를 생성했습니다:
| 모델 | 직접 / 24 | 검증 / 24 |
|---|
| Gemma 4 31B | 24 | 24 |
| ... | | |
GPT verification improves verdict accuracy while decreasing percentage-or-null and combined primary accuracy.
그림 3. 케이스 및 프롬프트 팔(prompt arm)당 기록된 한 세대; 이 비교는 재현이 필요합니다.
답변을 검증하라는 지시 자체가 개선의 증거는 아닙니다. 여기서는 수치적 계약(numerical contract)이 덜 신뢰로워진 동안 질적인 결정에 도움을 주었습니다. 판결만으로 구성된 벤치마크였다면 이러한 트레이드오프를 놓쳤을 것입니다.
Claude의 검증 응답은 엄격한 계약 하에서 모두 유효하지 않았습니다. 모든 24개는 별도로 보고된 추출 진단(extraction diagnostic)을 통과했습니다. 다시 말해, 엄격한 점수만으로는 실패 메커니즘을 설명할 수 없습니다.
3. 증거 재배열은 또 다른 불안정성을 노출시켰습니다
8개의 제약된 케이스에 대해 저는 셀 유형 행(cell-type rows)과 모든 해당 가중치(weight)를 역순으로 배열했습니다. 수학적 문제와 정답(gold answer)은 동일하게 유지됩니다.
Gemma는 8/8 쌍 전체에서 판결, 백분율/널 값, 범위를 보존했습니다. GPT는 3/8 쌍 전체에서 세 가지 모두를 보존했습니다. Claude 역시 추출 진단 하에서 8/8로 일치했지만, 재배열된 엄격한 출력은 유효하지 않았기 때문에 엄격한 일치 여부는 평가할 수 없습니다.
이는 동등한 제시 조건 하에서 관찰된 답변 불안정성의 증거입니다. 한 제시당 하나의 세대만으로는 배열 효과를 일반적인 생성 변동성(generation variability)과 분리할 수 없습니다. 다음 실험에서는 통제된 설정을 사용하여 두 가지 순서를 반복해야 합니다.
벤치마크 자체에서 제가 수정해야 했던 것들
첫 번째 제어 내보내기(control exports)가 감사에 실패했습니다. 의도했던 재배열된 제어값 대신 기본 케이스 ID와 검증 프롬프트가 포함되어 있었기 때문입니다. 실행 경로는 작업 컨텍스트 전반에 걸쳐 결과를 재사용하고 있었습니다.
저는 해당 내보내기(exports)들을 제외하고 별도의 작업 식별자(task identity) 하에서 제어군(controls)을 다시 실행했습니다. 포함된 복구 파일에는 의도했던 8개의 제어 ID와 각 모델에 대한 정확한 프롬프트가 담겨 있습니다. 그런 다음 포함된 168개 기록 전체를 고정값(fixtures)과 비교하여 원시 응답(raw responses)으로부터 엄격 등급을 재계산했습니다.
이러한 수정은 중요합니다. 단순히 실행이 완료되었는지 여부만 확인하는 평가자는 조용히 잘못된 실험에 점수를 매길 수 있기 때문입니다.
제 생각을 바꾼 것들
저는 모델들이 생물학적 비교를 올바르게 할 수 있는지 테스트하는 것으로 시작했습니다. 결국 저는 그들이 이용 가능한 증거의 경계(boundary)를 나타낼 수 있는지 여부에 똑같이 관심을 갖게 되었습니다.
분석 보조 도구로서, 저는 이제 세 가지 사항을 독립적으로 확인할 것입니다. 결론이 제약 조건(constraints)에서 도출되는지, 숫자가 실제로 식별 가능한지, 그리고 소프트웨어가 그 응답을 소비할 수 있는지 여부입니다. 자신감 있는 설명은 이들 검사 중 어느 것도 대체할 수 없습니다.
본 연구는 합성 기술적 측정값(synthetic descriptive measurements)을 사용합니다. 이는 원시 시퀀싱 분석, 생물학적 복제, 인과 치료 효과, 유의성 테스트 또는 임상 결정을 테스트하지 않습니다. 24개 사례는 8개의 템플릿을 공유하며, 검증 비교는 탐색적(exploratory)입니다. 저는 다음으로 반복 실행, 더 많은 미확인 템플릿 패밀리, 그리고 산술 오류와 누락된 정보에 대한 추론 실패를 구별하기 위한 계산기 지원 팔(arm)을 추가할 것입니다.
저의 벤치마크
Kaggle에서 CellCaution 탐색하기
게시된 CellCaution 작업