단계별 종합 프로젝트

먼저 읽을 장 0.3 학습 경로

이 책의 장마다 통과 기준이 있다. 그러나 장 하나의 통과 기준은 부분 역량을 확인할 뿐이다. 데이터 분할을 제대로 할 줄 알고, baseline의 의미를 알고, 학습 루프를 쓸 줄 알아도, 이것들을 한 문제 위에서 한 번에 엮어 보지 않으면 어디서 이음매가 터지는지 모른다. 실제 연구에서 문제는 대개 장과 장 사이의 이음매에서 생긴다. 분할 파일과 학습 코드가 서로 다른 버전을 가리키거나, baseline과 새 모델이 다른 metric으로 평가되거나, 보고서의 숫자가 어느 실행에서 나왔는지 아무도 모르는 식이다.

이 장은 0.3장(학습 경로)의 다섯 단계에 대응하는 여덟 개의 종합 프로젝트 A–H를 설계한다. 모든 프로젝트는 같은 여섯 단계(문제 정의 → 데이터 → baseline → 모델 → 평가 → 보고)를 따르고, 단계마다 참조할 장과 산출물, 통과 기준을 갖는다. 프로젝트 D–H는 배터리·기후·화학·물리·생명 중 한 분야를 골라 수행할 수 있게 분야별 변형을 함께 제시한다.

학습 목표

  • 단계별 프로젝트로 여러 트랙의 역량을 통합한다
  • 프로젝트를 문제 정의부터 보고까지 여섯 단계로 나누고, 단계마다 산출물과 통과 기준을 정한다
  • 자신의 학습 단계와 분야에 맞게 프로젝트의 범위를 정한다

프로젝트의 공통 골격

왜 필요한가. 프로젝트가 실패하는 가장 흔한 방식은 "모델" 단계에서 시작하는 것이다. 흥미로운 아키텍처를 먼저 정하고, 데이터를 거기에 맞추고, 결과가 나온 뒤에 비교 대상을 찾는다. 이 순서로는 결과가 좋은지 나쁜지 판단할 기준이 끝까지 생기지 않는다. 공통 골격은 판단 기준(문제 정의, 분할, baseline)을 모델보다 먼저 고정하게 만든다.

여섯 단계. 모든 프로젝트는 다음 순서를 따른다. 단계마다 산출물이 하나씩 있고, 다음 단계는 앞 단계의 산출물 위에서 시작한다.

단계 답할 질문 산출물 기본 참조 장
1. 문제 정의 입력·출력·평가 기준은 무엇이고, 어떤 결과가 나오면 성공·실패인가 한 쪽 계획서 1.3, 23.4
2. 데이터 데이터의 단위·출처·라이선스는 무엇이고, 어떻게 나누는가 고정된 분할 파일, 데이터 설명서 15.1, 15.4, 15.5
3. baseline 학습 없이, 또는 아주 단순한 모델로 어디까지 가는가 baseline 점수 표 16.1, 16.2
4. 모델 무엇을 바꾸면 baseline보다 나아질 것이라 예상하는가 학습·평가 코드, 설정 파일 프로젝트마다 다름
5. 평가 차이가 잡음보다 큰가, 어떤 조건에서 실패하는가 비교 표, 조건별 표 16.6, 12.5, 23.6
6. 보고 다른 사람이 숫자를 다시 얻고 주장을 판단할 수 있는가 보고서, README, 재현 명령 1.5, 23.9, 22.2

표의 숫자는 부.장 형식의 장 번호다. 자주 돌아가게 될 장은 다음과 같다: 문제를 수학적으로 정의하기, 데이터 분할과 누수 방지, 기준 모델의 철학, 모델 선택과 평가, 재현성.

범위 정하기. 프로젝트의 범위는 다음 세 가지를 하나씩으로 시작한다.

  • 연구 질문 하나: "A가 B보다 C 조건에서 낫다" 꼴의 문장 하나.
  • 데이터셋 하나: 처음부터 여러 데이터셋을 합치지 않는다.
  • 주 metric 하나: 보조 metric은 보고하되, 성공·실패 판정은 하나로 한다.

그리고 기한을 먼저 정하고 범위를 거기에 맞춘다. 기한이 다가오는데 끝나지 않으면 기한을 늘리지 않고 범위를 줄인다. 이것은 0.3장의 "기간은 계획 범위, 진도는 산출물" 원칙을 프로젝트 하나에 적용한 것이다. 여섯 단계를 모두 거친 작은 프로젝트는 4단계에서 멈춘 큰 프로젝트보다 다음 프로젝트에 더 많은 것을 남긴다. 4단계에서 멈춘 프로젝트에는 비교 기준도, 보고서도, 재현 명령도 없기 때문이다.

계획서. 1단계의 산출물은 한 쪽짜리 계획서다. 모든 프로젝트에 같은 양식을 쓴다.

프로젝트: D. 과학 데이터 예측 (배터리)
질문    : 초기 100 사이클의 측정만으로 셀의 수명(용량 80% 도달 사이클)을 예측할 수 있는가
입력/출력: 사이클별 방전 용량·전압 곡선 요약 특징 → 수명(cycle)
데이터  : 공개 셀 열화 데이터셋 1개 (라이선스·출처는 data/README.md)
분할    : 셀 단위 group 분할, 분할 파일 splits/v1.json 고정
metric  : 주 metric = 수명의 MAE(cycle). 보조 = 로그 수명의 RMSE
baseline: 학습 평균, 초기 용량 감소 기울기의 선형 회귀
가설    : 전압 곡선 특징을 더하면 기울기 baseline보다 MAE가 줄어든다
반증 조건: seed 5개 평균의 차이가 seed 간 표준편차보다 작으면 가설을 지지하지 않는다고 판단
기한    : 6주. 4주차까지 baseline 표가 없으면 특징 수를 줄인다

마지막 두 줄이 계획서의 핵심이다. 반증 조건이 없으면 어떤 결과든 성공으로 읽을 수 있고, 범위 축소 규칙이 없으면 기한은 계속 늘어난다.

단계와 프로젝트. 여덟 프로젝트는 0.3장의 다섯 단계에 다음과 같이 대응한다. 단계마다 프로젝트를 모두 할 필요는 없지만, 단계를 넘어갈 때는 그 단계의 프로젝트 하나 이상을 통과 기준까지 마친다.

학습 단계 프로젝트 통합하는 트랙
1단계 A 오리엔테이션 · 연구 소프트웨어 · 머신러닝 핵심
2단계 B 수리 기초 · 머신러닝 핵심
3단계 C, D, E 연구 소프트웨어 · 연구 인프라 · 확률적 추론 · 머신러닝 시스템
4단계 F, G 연구 방법론 · 과학 머신러닝
5단계 H 전 트랙 · 분야별 응용

A. 회귀·분류 baseline

목표. 공개된 표 데이터 하나로 문제 정의부터 보고까지 한 번 완주한다. 모델의 성능이 아니라 판단 기준을 세우는 과정을 연습하는 프로젝트다. 1.5장(첫 번째 연구 파이프라인 완주하기)의 파이프라인을 자기 손으로 다시 만드는 것으로 볼 수 있다.

단계 할 일 참조 장
문제 정의 입력·출력·metric을 한 문장으로 쓴다. 회귀인지 분류인지, 오차의 단위는 무엇인지 1.3
데이터 scikit-learn 내장 데이터 등 공개 표 데이터를 불러와 shape·결측·단위를 확인한다. 학습·검증·테스트 분할을 파일로 저장한다 5.3, 15.1, 15.3, 15.4
baseline 평균(분류는 최빈 클래스) 예측과 선형·로지스틱 회귀 16.1, 16.2
모델 트리 앙상블 하나 또는 작은 MLP 하나 16.4, 1.5
평가 같은 분할·같은 metric으로 비교한다. 하이퍼파라미터는 검증 데이터로 고르고 테스트는 마지막에 한 번 쓴다 16.6
보고 표 하나, 그림 하나, 한계 세 줄의 한 쪽 보고서 1.5, 23.9

산출물. 공개 Git 저장소. README에 적힌 명령 하나로 비교 표가 다시 만들어진다.

통과 기준.

  • 비교 표에 평균 예측 baseline이 있고, 모든 모델이 같은 분할 파일·같은 metric으로 평가되어 있다.
  • 테스트 데이터를 몇 번 평가했는지 보고서에 적혀 있다(원칙은 한 번).
  • 다른 사람이 새 환경에서 README의 명령으로 같은 표를 얻는다.

B. NumPy 기반 작은 신경망

목표. PyTorch가 대신 해 주던 일(forward, gradient, optimizer)을 NumPy로 직접 구현하고, 구현이 맞는지 독립적인 방법으로 검증한다. 2단계의 수학이 코드의 어느 줄에 해당하는지 연결하는 프로젝트다.

단계 할 일 참조 장
문제 정의 2층 MLP로 무엇을 확인할지 정한다: gradient의 정확성, 수렴, 표현력 7.2, 17.1
데이터 정답 함수를 아는 합성 데이터(예: sin⁡\sin 곡선에 잡음)와 프로젝트 A의 데이터 5.3, 15.6
baseline 같은 데이터에서 최소제곱으로 푼 선형 회귀(닫힌 해) 7.4
모델 forward·backward를 행렬 미분으로 유도해 구현하고, SGD와 Adam을 직접 구현한다 8.2, 8.4, 10.3, 10.4
평가 모든 파라미터의 gradient를 중심 차분과 비교한다. 작은 batch 하나에 과적합되는지 본다 0.4, 9.1, 17.9
보고 유도 노트와, 식의 각 항이 코드의 어느 줄인지 대응시킨 표 23.7

0.4장의 연습문제 numerical-gradient에서 만든 함수가 평가 단계의 도구가 된다. float64에서 중심 차분과 해석적 gradient의 상대오차는 보통 10−610^{-6}보다 훨씬 작다. 이보다 크면 대개 유도나 구현에 오류가 있다. 반대로 float32로 같은 검사를 하면 반올림 오차 때문에 상대오차가 커지므로, gradient 검사는 float64로 한다(9.1장).

산출물. 유도 노트, 구현 코드, gradient 검사 테스트.

통과 기준.

  • float64에서 모든 파라미터의 gradient 상대오차가 10−610^{-6} 이하임을 확인하는 테스트가 통과한다.
  • 샘플 8개 정도의 작은 batch 하나에서 학습 손실이 처음 값의 1% 아래로 내려간다.
  • 같은 데이터에서 신경망이 선형 회귀 baseline보다 나은지 나쁜지를 표로 보고하고, 이유를 한 문단으로 쓴다.

C. PyTorch 연구 템플릿

목표. 이후 모든 프로젝트의 출발점이 될 연구 코드 템플릿을 만든다. "한 번 돌아간 코드"를 "설정 파일 하나로 실험 하나가 정의되고, 중단해도 이어서 돌고, 다른 기계에서도 같은 숫자가 나오는 코드"로 바꾸는 것이 목표다.

단계 할 일 참조 장
문제 정의 템플릿이 지원할 "실험"의 단위를 정한다. 설정 파일 하나 = 실행 하나 6.1, 6.3
데이터 Dataset·DataLoader로 분할 파일을 읽는다. 데이터 경로는 설정에서 받는다 17.4
baseline 프로젝트 A의 baseline을 템플릿의 설정 하나로 옮긴다 16.1
모델 nn.Module, 학습 루프, checkpoint 저장·복원, 로깅 17.3, 17.5, 17.6, 17.7, 6.5
평가 smoke test, 작은 batch 과적합 테스트, 결정적 실행, 중단 후 재개 테스트 6.6, 17.9, 22.2
보고 README, CLI 도움말, 실험 추적 기록 6.4, 6.7, 22.1

17.7장(Trainer 설계)에서 직접 작성과 프레임워크 사용의 장단점을 다뤘다. 이 프로젝트에서는 둘 중 무엇을 고르든, 위 표의 평가 단계 테스트가 모두 통과하는지가 기준이다.

산출물. 템플릿 저장소와 lockfile. 템플릿으로 프로젝트 A를 다시 실행한 기록.

통과 기준.

  • 설정 파일 하나와 명령 하나로 학습·평가가 실행되고, 결과에 커밋 해시와 설정이 함께 기록된다.
  • 결정적 설정에서, 중간에 멈췄다가 checkpoint로 재개한 실행의 최종 손실이 멈추지 않은 실행과 일치한다.
  • 다른 기계(또는 새 컨테이너)에서 lockfile로 환경을 다시 만들고 테스트가 모두 통과한다.

D. 과학 데이터 예측

목표. 측정 또는 시뮬레이션에서 나온 과학 데이터로 예측 모델을 만든다. 표 데이터와 달리 과학 데이터는 같은 대상(셀, 지역, 분자 골격, 단백질 계통)에서 나온 표본이 서로 강하게 닮아 있다. 그래서 이 프로젝트의 중심은 모델이 아니라 분할과 조건별 평가다.

단계 할 일 참조 장
문제 정의 무엇을 어떤 조건에서 예측하는지, 물리량의 단위와 함께 쓴다. 도메인 과학자에게 문제 정의를 확인받는다 1.3, 23.13
데이터 단위·메타데이터를 확인하고, 분야에 맞는 group·시간 분할을 정한다 15.1, 15.4, 15.5
baseline 분야의 단순 규칙(경험식, persistence 등)과 프로젝트 A의 baseline 16.1
모델 데이터 구조에 맞는 귀납적 편향을 가진 모델을 프로젝트 C의 템플릿 위에 18.1, 18.6, 18.7
평가 무작위 분할과 group·시간 분할의 점수 차이, 조건별 성능 16.6, 21.4
보고 조건별 표와, 모델이 가장 나쁜 조건 23.6

분야마다 무엇이 "같은 대상"인지, 무엇이 단순 규칙인지가 다르다. 아래 표는 분야별 변형의 예다.

분야 예측 과제 예 분할 단순 baseline 참조 장
배터리 초기 사이클 측정으로 셀 수명 예측 셀 단위 group 분할 초기 용량 감소 기울기의 선형 회귀 30.3, 30.4
기후 지역 기온·강수 예측 연도 단위 시간 분할 persistence, climatology 27.1, 27.2, 27.4
화학·재료 분자 물성 예측 scaffold(분자 골격) 분할 분자 지문 + 랜덤 포레스트 28.1, 28.2, 28.5
물리·공학 시뮬레이션 파라미터에서 해를 예측하는 대리모델 파라미터 범위 밖 분할 학습 표본 사이 보간 26.2, 26.5
생명과학 단백질 서열에서 기능·안정성 예측 서열 유사도 클러스터 분할 가장 비슷한 학습 서열의 값을 그대로 쓰는 최근접 이웃 29.2, 29.5

산출물. 분할 파일과 분할 기준 설명, 무작위·group(또는 시간) 분할 비교 표, 조건별 성능 표.

통과 기준.

  • 무작위 분할과 분야에 맞는 group·시간 분할의 점수를 같은 표에 나란히 보고한다.
  • 분야의 단순 baseline이 비교 표에 있고, 모델의 개선을 skill score 등 baseline 대비 값으로도 보고한다.
  • 조건별 성능 표에서 모델이 가장 나쁜 조건을 찾아 이유에 대한 가설을 한 문단으로 쓴다.

E. 확률적 예측 모델

목표. 프로젝트 D의 점 예측을 예측분포로 바꾼다. 과학과 공학에서 예측은 결정에 쓰이고, 결정에는 "얼마나 확실한가"가 필요하다. 배터리 교체 시점, 실험 후보의 우선순위, 극한 기상 경보는 모두 예측의 퍼짐에 의존한다.

단계 할 일 참조 장
문제 정의 예측분포를 어떤 결정에 쓰는지 정한다. 필요한 것이 분위수인지, 구간인지, 전체 분포인지 12.3, 21.6
데이터 프로젝트 D의 분할을 그대로 쓴다. calibration용 데이터를 검증 데이터에서 따로 뗀다 15.4, 21.3
baseline 학습 잔차의 분산을 쓴 등분산 가우시안 예측 12.6
모델 이분산 가우시안 NLL 학습, deep ensemble, conformal 구간 중 둘 이상 21.1, 21.3, 13.7
평가 proper scoring rule(NLL, CRPS), calibration(PIT 히스토그램, reliability), 구간의 coverage와 폭 21.2
보고 조건별 coverage 표, 분포 이동 조건에서의 calibration 21.4

21.2장(예측분포와 구간의 평가)에서 본 것처럼, 구간 평가는 coverage와 폭을 함께 본다. coverage만 보면 무한히 넓은 구간이 항상 이긴다.

산출물. 확률적 예측 코드, 평가 표(점수·coverage·폭), calibration 그림.

통과 기준.

  • 명목 90% 구간의 테스트 coverage와 평균 폭을 조건별로 보고한다.
  • proper scoring rule 하나 이상으로 등분산 baseline과 비교한다.
  • 프로젝트 D에서 모델이 가장 나빴던 조건에서 calibration이 어떻게 변하는지 보고한다.

F. 논문 재현

목표. 논문 하나의 주장 하나를 골라 그 숫자를 다시 얻고, 숫자를 만든 요인을 분리한다. 23.3장(논문 재현)의 절차를 처음부터 끝까지 수행하는 프로젝트다.

단계 할 일 참조 장
문제 정의 재현할 주장 하나와 그 주장을 뒷받침하는 표·그림 하나를 고른다 23.2, 23.3
데이터 원 논문의 데이터·분할·전처리 조건을 표로 정리하고, 실제로 쓴 조건과의 차이를 기록한다 23.3
baseline 논문의 baseline 숫자부터 재현한다. 자기 baseline이 논문의 baseline과 맞지 않으면 그 차이가 먼저다 16.1
모델 공개 코드를 실행하거나 재구현한다. 둘 다 가능하면 둘 다 한다 17.7
평가 여러 seed로 실행해 원 수치와의 차이를 seed 변동과 비교한다. ablation 하나로 주장의 원인을 확인한다 12.5, 22.2, 23.5
보고 23.3장 형식의 재현 보고서. 필요하면 저자에게 질문한다 23.3

baseline부터 재현하는 이유는 오차의 원인을 나누기 위해서다. 논문의 새 방법만 재현해 숫자가 다르면, 그 차이가 방법 구현의 문제인지 데이터·전처리·평가 조건의 문제인지 구분할 수 없다. baseline 숫자가 맞으면 데이터와 평가 조건은 맞췄다고 볼 근거가 생긴다.

산출물. 재현 보고서와 재현 코드. 원 논문 조건과 실제 조건의 차이 표.

통과 기준.

  • 23.3장의 재현 보고서 여덟 절(대상 · 원 논문 조건 · 실제 조건 · 차이 · 결과 · 결론 · 한계 · 저자와의 소통)을 모두 쓴다.
  • 원 수치와의 차이를 seed 간 변동과 비교해 "재현됨 · 부분 재현 · 재현되지 않음" 중 하나로 판정하고 근거를 쓴다.
  • 주장의 원인을 확인하는 ablation을 하나 이상 수행한다.

G. 물리·데이터·하이브리드 비교

목표. 같은 과학 문제 하나를 세 가지 방식으로 푼다. 물리 모델(지배 방정식과 수치해), 순수 데이터 모델, 둘을 결합한 하이브리드 모델이다. 정확도만이 아니라 일반화(학습 범위 밖 조건)와 계산 비용을 함께 비교해, 어떤 조건에서 무엇을 쓸지 결론을 내는 프로젝트다.

단계 할 일 참조 장
문제 정의 지배 방정식을 아는 문제 하나를 고른다(감쇠 진동자, 열전도, 배터리 등가회로 등). 알려지지 않은 부분을 명시한다 24.1
데이터 시뮬레이터로 데이터를 만들고 관측 잡음을 더한다. 학습 범위 밖의 테스트 조건을 따로 만든다 9.6, 9.7, 15.6
baseline 파라미터를 보정한 물리 모델, 그리고 순수 데이터 모델 24.6
모델 하이브리드(물리 모델 + 학습된 잔차), PINN, Neural ODE 중 하나 이상 24.2, 24.3, 24.5
평가 범위 안·밖 오차, 물리 제약(보존량 등) 위반, 학습·추론 시간 24.5, 22.4
보고 정확도·일반화·비용 세 축의 비교 표와, 조건별 권고 23.6

수치해도 오차를 가진다. 물리 모델의 "정답"은 시뮬레이터의 해이고, 그 해는 격자 크기와 시간 간격에 따른 오차를 가진다. 학습 모델의 오차가 시뮬레이터 자체의 수치 오차보다 작다고 보고하는 것은 의미가 없다. 격자나 시간 간격을 절반으로 줄여 해가 얼마나 바뀌는지로 수치 오차의 크기를 먼저 추정하고, 그 값을 비교 표에 함께 적는다(9.7장).

산출물. 세 모델의 구현, 범위 안·밖 비교 표, 수치 오차 추정, 조건별 권고 한 문단.

통과 기준.

  • 세 모델을 같은 데이터·같은 평가 조건에서 비교한 표에 범위 안 오차, 범위 밖 오차, 물리 제약 위반, 학습·추론 시간이 모두 있다.
  • 시뮬레이터 자체의 수치 오차를 추정해 표에 함께 적는다.
  • "어떤 조건에서 어떤 모델을 쓸 것인가"를 표의 숫자에 근거해 한 문단으로 쓴다.

H. 독립 연구

목표. 자기 질문을 세우고, 공정하게 비교하고, 다른 사람이 재현할 수 있는 형태로 공개한다. 앞의 프로젝트에서 만든 템플릿(C), 분할과 조건별 평가(D), 불확실성 평가(E), 재현 경험(F), 모델 비교(G)가 모두 재료가 된다.

단계 할 일 참조 장
문제 정의 분야를 정하고 반증 가능한 가설을 쓴다. 도메인 과학자와 질문의 과학적 의미를 확인한다 23.4, 23.13, 분야의 부(26–30부)
데이터 데이터 공개 가능성과 라이선스를 시작 전에 확인하고 데이터 카드를 쓴다 15.5, 23.12, 31.2
baseline 강한 baseline을 새 방법과 같은 튜닝 예산으로 튜닝한다 16.1, 22.3, 23.5
모델 가설이 예측하는 변화를 구현한다 분야의 부, 24부
평가 사전에 정한 비교 계획대로 평가하고, 계획에서 벗어난 분석은 따로 표시한다 12.5, 23.5, 23.6
보고 논문 초안과 공개 재현 패키지 23.8, 23.9, 31.2

계획서의 비교 계획을 결과를 보기 전에 커밋해 두면, 어떤 분석이 사전 계획이었고 어떤 분석이 결과를 본 뒤 추가된 것인지가 커밋 이력으로 남는다. 연구 질문과 분석 계획을 미리 등록하는 사전 등록(preregistration)의 간이판이다(Nosek 외, 2018; 23.4장).

산출물. 논문 초안, 재현 패키지(31.2장), 데이터 카드.

통과 기준. 31.3장의 최종 산출물 기준과 같다: 논문 초안과 함께 데이터 설명, 실행 환경, 학습, 평가, 결과 재생성 절차가 포함된 공개 프로젝트를 완성한다.

실습

자신의 학습 단계에 맞는 프로젝트를 골라 계획서를 쓰고 완수한다.

  1. 프로젝트를 고른다. 0.4장의 역량 지도와 0.3장의 학습 경로에서 지금의 단계를 확인하고, 그 단계의 프로젝트 하나를 고른다. D–H라면 분야도 고른다.
  2. 계획서를 쓴다. 공통 골격 절의 양식으로 한 쪽 계획서를 쓴다. 반증 조건과 범위 축소 규칙을 반드시 넣는다.
  3. 계획서를 검토받는다. 스터디 동료나 지도교수에게 보여 주고, 특히 "분할이 실제 사용 상황을 반영하는가"와 "baseline이 충분히 강한가"를 묻는다. D–H는 가능하면 도메인 과학자에게 문제 정의를 확인받는다.
  4. 여섯 단계를 순서대로 수행한다. 단계마다 산출물을 커밋하고, 커밋 메시지에 단계 이름을 쓴다. baseline 표가 커밋되기 전에는 모델 코드를 커밋하지 않는다.
  5. 통과 기준으로 점검한다. 프로젝트 절의 통과 기준을 체크리스트로 옮겨 README 끝에 두고 하나씩 확인한다.
  6. 회고를 쓴다. 계획서와 실제 진행을 비교해 범위를 줄인 곳, 예상과 다른 결과, 다음 프로젝트에서 바꿀 점을 다섯 줄 이내로 쓴다.

실패 사례

  • 프로젝트 결과물 없이 다음 단계로 넘어가는 것. 프로젝트 C의 템플릿 없이 F의 논문 재현을 시작하면, 재현 실험마다 설정·로깅·checkpoint를 다시 만들게 되고, 재현 실패의 원인이 논문인지 자기 코드인지 분리할 수 없다. 범위를 줄여서라도 앞 단계의 산출물을 통과 기준까지 마친다.
  • 범위가 너무 큰 프로젝트. "모든 배터리 화학계에 통하는 수명 예측 foundation model"처럼 시작하면, 몇 달 뒤에도 데이터 통합 단계에 머문다. 질문 하나, 데이터셋 하나, 주 metric 하나로 시작해 끝까지 간 뒤에 넓힌다.
  • baseline 없이 시작하는 것. 새 모델의 RMSE만 있는 결과는 좋은지 나쁜지 판단할 수 없다. baseline 표를 모델보다 먼저 만든다.
  • 분할을 나중에 바꾸는 것. 결과를 본 뒤 분할을 바꾸면, 그 분할은 사실상 테스트 데이터를 보고 고른 것이 된다. 분할 파일은 데이터 단계에서 고정하고 커밋하며, 바꿔야 하면 이유를 기록하고 모든 모델을 다시 평가한다.
  • 보고 단계를 생략하는 것. 노트북 안의 숫자는 몇 주 뒤 자신도 재현하지 못한다. 보고서와 재현 명령이 없으면 프로젝트는 끝나지 않은 것이다.

통과 기준

  • 고른 프로젝트의 한 쪽 계획서에 질문·입출력·데이터·분할·주 metric·baseline·가설·반증 조건·기한과 범위 축소 규칙이 모두 있다.
  • 프로젝트 절의 통과 기준을 모두 만족하는 산출물을 공개 저장소로 남긴다. README의 명령으로 보고서의 주요 표가 다시 만들어진다.
  • 커밋 이력에서 baseline 표가 모델 결과보다 먼저 커밋되어 있다.
  • 계획과 실제 진행을 비교한 회고를 저장소에 남긴다.

참고 문헌

  • Sandve, G. K., Nekrutenko, A., Taylor, J., & Hovig, E. (2013). Ten simple rules for reproducible computational research. PLoS Computational Biology, 9(10), e1003285. — 결과의 출처 추적, 수작업 단계 배제, seed 기록 등 재현 가능한 계산 연구의 규칙
  • Pineau, J., et al. (2021). Improving reproducibility in machine learning research (A report from the NeurIPS 2019 reproducibility program). Journal of Machine Learning Research, 22(164), 1–20. — 재현성 체크리스트와 코드 제출 정책
  • Kapoor, S., & Narayanan, A. (2023). Leakage and the reproducibility crisis in machine-learning-based science. Patterns, 4(9), 100804. — 과학 분야 ML 논문의 데이터 누수 유형
  • Nosek, B. A., Ebersole, C. R., DeHaven, A. C., & Mellor, D. T. (2018). The preregistration revolution. Proceedings of the National Academy of Sciences, 115(11), 2600–2606. — 연구 질문과 분석 계획의 사전 등록