역량 평가와 다음 단계

먼저 읽을 장 31.1 단계별 종합 프로젝트

이 책은 0.4장(자가 진단과 역량 지도)에서 시작했다. 그 장에서 네 축과 다섯 수준의 역량 지도를 만들고, 칸마다 근거를 적고, 가장 낮은 칸부터 채우는 경로를 짰다. 이 장은 그 지도로 돌아온다. 같은 도구로 지금의 위치를 다시 재고, 처음 지도와 비교하고, 다음 1년을 계획한다.

다만 출발점과 도착점에서 묻는 질문은 다르다. 처음에는 "이 개념을 아는가, 이 도구를 쓸 수 있는가"를 물었다. 이제는 "연구자로서 일할 수 있는가"를 묻는다. 개념을 설명하는 능력에 더해, 실패의 원인을 나누고, 결과가 주장을 지지하는지 판단하고, 모르는 것을 모른다고 쓰는 능력이다. 이런 역량은 논문 수나 써 본 모델의 개수로 드러나지 않는다. 이 장은 그것을 근거로 평가하는 루브릭(rubric, 채점 기준표)과, 그 근거를 모은 포트폴리오, 그리고 평가 결과를 다음 학습 경로로 옮기는 방법을 다룬다.

학습 목표

  • 연구자의 역량을 다면적으로 평가한다
  • 다음 성장 목표를 정한다
  • 포트폴리오로 역량의 근거를 점검한다

평가 질문

왜 필요한가. 연구 역량을 한 숫자로 요약하려는 유혹은 강하다. 논문 수, 벤치마크 순위, 다룰 줄 아는 모델의 목록이 그렇다. 이 숫자들은 셀 수 있지만 역량의 대리 지표일 뿐이고, 대리 지표에는 운·자원·주제 선택이 섞인다. 같은 결과를 낸 두 사람 중 한 사람은 실패의 원인을 찾을 줄 알고 다른 사람은 모를 수 있다. 다음 연구가 막혔을 때 둘의 차이가 드러난다. 그래서 결과가 아니라 결과를 만드는 과정의 능력을 질문으로 나눠 평가한다.

일곱 개의 평가 질문. 이 책의 모든 트랙이 결국 다음 일곱 질문 중 하나 이상을 키운다. 질문을 세 축으로 묶는다. 지식 축은 0.4장의 이론 축, 기술 축은 구현·운영 축, 연구 습관 축은 연구 축에 해당한다.

축 평가 질문 주로 키운 부
지식 1. 개념을 자신의 언어로 설명하는가 7–14부
지식 2. 새 논문을 기존 지식과 연결하는가 23부, 18–19부
기술 3. 수식을 유도하고 코드로 옮기는가 8부, 17부
기술 4. 실패 원인을 데이터·이론·구현·환경으로 분리하는가 3부, 6부, 15부, 17.9
기술 5. 다른 사람이 재현할 수 있는가 3–4부, 6부, 22부
연구 습관 6. 결과가 주장을 지지하는지 판단하는가 12부, 16.6, 23.5–23.6
연구 습관 7. 모르는 것과 적용 범위를 명시하는가 21부, 23.6

수준 기술. 수준은 0.4장과 같은 다섯 수준(1 인지 · 2 설명 · 3 구현 · 4 검증 · 5 확장)을 쓴다. 다만 질문마다 각 수준이 무엇으로 확인되는지를 구체적으로 적어야 루브릭이 된다. 수준 1(이름과 쓰임새를 안다)은 질문마다 같으므로 생략한다.

질문 2 설명 3 구현 4 검증 5 확장
1. 개념 설명 자료 없이 정의와 가정을 쓴다 개념을 작은 예제 코드로 보인다 설명을 처음 듣는 동료가 이해했는지 질문으로 확인한다 이 책 같은 교재의 설명 오류를 찾아 고친다
2. 논문 연결 논문의 방법이 아는 개념의 어느 변형인지 말한다 논문의 핵심 식을 기존 표기로 다시 쓴다 연결을 작은 실험이나 유도로 확인한다 두 분야의 방법을 연결해 새 질문을 만든다
3. 유도→코드 손실의 gradient를 종이에 유도한다 유도한 식을 코드로 옮긴다 수치미분 등 독립 방법으로 구현을 검증한다 새 층·새 손실을 유도·구현·검증해 공개한다
4. 실패 원인 분리 가능한 원인을 네 층(데이터·이론·구현·환경)으로 나열한다 층마다 확인 절차를 실행한다 원인을 한 층으로 좁힌 디버깅 기록이 있다 같은 실패를 막는 테스트·검사를 프로젝트에 더한다
5. 재현 가능성 재현에 필요한 요소(코드·환경·데이터·seed)를 말한다 lockfile·설정·실행 명령을 갖춘다 다른 사람이 새 환경에서 같은 숫자를 얻는다 재현 패키지를 공개하고 다른 사람의 재현을 돕는다
6. 주장 판단 주장과 그것을 지지하는 실험을 대응시킨다 여러 seed와 공정한 비교로 실험을 설계한다 차이가 잡음보다 큰지 통계로 확인하고 주장의 범위를 정한다 남의 논문에서 근거보다 넓은 주장을 찾아 심사 의견으로 쓴다
7. 한계 명시 평가하지 않은 조건을 나열한다 조건별 성능 표를 만든다 범위 밖 조건에서 실제로 실패하는지 확인한다 적용 범위를 판별하는 방법(OOD 검출 등)을 붙인다

이 표의 칸은 그대로 근거 목록이 된다. 예를 들어 질문 3의 수준 4는 "gradient 검사 테스트가 통과한 코드"라는 파일로, 질문 5의 수준 4는 "동료가 재현한 기록"으로 확인된다. 31.1장의 프로젝트가 이 근거를 만든다. 프로젝트 B는 질문 3의, 프로젝트 C와 F는 질문 4·5의, 프로젝트 D·E·G는 질문 6·7의 근거를 남긴다.

근거 규칙. 0.4장의 규칙을 그대로 쓴다: 근거로 보일 수 있는 수준까지만 인정한다. 스스로 4라고 느껴도 근거 파일이 2까지만 있다면 그 칸은 2다. 이 규칙을 수식으로 쓰면, 항목 ii의 수준은

ℓi=min⁡(ci,ei)\ell_i = \min(c_i, e_i)

다. cic_i는 스스로 매긴 수준, eie_i는 근거로 보일 수 있는 최고 수준이다. 축의 요약은 평균 대신 최저값을 함께 본다. 연구를 막는 것은 평균이 아니라 가장 낮은 칸이기 때문이다.

아래 코드는 한 독자의 루브릭을 집계한다. 0.4장의 첫 진단(first)과, 지금 스스로 매긴 수준(claimed), 근거로 보일 수 있는 수준(evidenced)을 비교한다.

import numpy as np

items = ["개념 설명", "논문 연결", "유도→코드", "실패 원인 분리",
         "재현 가능성", "주장 판단", "한계 명시"]
axis = np.array(["지식", "지식", "기술", "기술", "기술", "연구 습관", "연구 습관"])
first = np.array([2, 1, 1, 1, 1, 1, 0])          # (7,) 0.4장 첫 진단
claimed = np.array([4, 3, 4, 3, 4, 3, 3])        # (7,) 지금 스스로 매긴 수준
evidenced = np.array([4, 3, 4, 1, 4, 3, 2])      # (7,) 근거 파일로 보일 수 있는 최고 수준

now = np.minimum(claimed, evidenced)             # (7,) 근거 규칙: 근거가 있는 수준까지만
for a in ["지식", "기술", "연구 습관"]:
    m = axis == a
    print(f"{a}: 평균 {now[m].mean():.2f}, 최저 {now[m].min()} (처음 최저 {first[m].min()})")
print("근거보다 높게 매긴 항목:", [items[i] for i in np.flatnonzero(claimed > evidenced)])
lowest = np.argsort(now, kind="stable")[:2]      # 같은 수준이면 표의 순서대로
print("다음 목표:", [items[i] for i in lowest])
print("전체 평균:", f"{now.mean():.2f}", "→ 평균만 보면 최저 칸이 가려진다")
지식: 평균 3.50, 최저 3 (처음 최저 1)
기술: 평균 3.00, 최저 1 (처음 최저 1)
연구 습관: 평균 2.50, 최저 2 (처음 최저 0)
근거보다 높게 매긴 항목: ['실패 원인 분리', '한계 명시']
다음 목표: ['실패 원인 분리', '한계 명시']
전체 평균: 3.00 → 평균만 보면 최저 칸이 가려진다

출력에서 세 가지를 읽는다. 첫째, 기술 축의 평균은 3.00이지만 최저는 1이다. "실패 원인 분리"는 처음 진단 이후 근거 수준이 움직이지 않았다. 학습 루프와 재현 패키지는 잘 만들게 되었지만, 학습이 실패했을 때 원인을 한 층으로 좁힌 기록은 아직 없다는 뜻이다. 둘째, 스스로 매긴 수준과 근거 수준이 어긋나는 항목이 바로 다음 목표와 겹친다. 과대평가는 무작위로 일어나지 않고, 대개 연습하지 않은 곳에서 일어난다. 셋째, 축 평균으로만 보면 연구 습관 축(2.50)이 가장 약해 보이지만, 가장 낮은 칸은 기술 축에 있다.

연구에서의 의미. 이 루브릭은 시험이 아니다. 같은 사람이 시간에 따라 어떻게 변하는지 보는 도구이고, 다른 사람과 비교하는 순위표가 아니다. 근거 규칙 때문에 수준이 내려가는 것은 실패가 아니라 루브릭이 제대로 동작한 것이다. 내려간 칸이 다음 1년의 계획이 된다.

과학 연구자로서의 질문

왜 필요한가. 일곱 질문은 ML 연구자 누구에게나 해당한다. AI for Science 연구자에게는 세 질문이 더 있다. 모델이 과학 공동체 안에서 쓰이려면, 점수가 좋은 것만으로는 부족하고 그 분야의 사람들이 결과를 믿고 다음 실험에 쓸 수 있어야 한다.

질문 수준 3(구현)의 근거 수준 4(검증)의 근거
8. 도메인 전문가가 결과를 신뢰할 수 있는가 조건별 오차, 물리적 일관성 검사, 실패 사례를 결과와 함께 보고한다 도메인 과학자가 검토한 기록과, 지적에 따라 고친 분석이 있다(23.13장)
9. 과학적 가설로 연결되는가 모델의 결과에서 검증 가능한 과학적 가설을 하나 이상 도출한다 가설을 기존 이론·문헌과 대조해 새로운지, 이미 알려진 것인지 판단한다
10. 실험·시뮬레이션으로 검증 가능한가 가설을 검증할 실험·시뮬레이션 설계(조건, 측정량, 반증 조건)를 쓴다 실제로 실험·시뮬레이션을 수행하거나 협력자와 수행해 결과를 보고한다(25.3–25.4장)

세 질문은 아래로 갈수록 혼자 할 수 없게 된다. 질문 10의 수준 4는 대개 실험실이나 시뮬레이션 그룹과의 협업을 요구한다. 그래서 이 세 질문의 수준은 개인의 능력만이 아니라 협업 관계의 상태도 보여 준다. 질문 8이 2에 머물러 있다면, 기술을 더 배우기보다 결과를 함께 검토할 도메인 과학자를 찾는 것이 다음 목표다.

성장 계획

왜 필요한가. 이 책을 마친 뒤에는 정해진 경로가 없다. 0.3장의 다섯 단계는 책 안의 지도였고, 그 밖에서는 스스로 다음 길을 정해야 한다. 루브릭의 결과는 길을 정하는 근거가 되지만, 루브릭만으로는 방향이 정해지지 않는다. 무엇을 깊게 할지(도메인과 방법론)와 누구와 할지(커뮤니티)를 함께 정한다.

가장 낮은 칸에서 다음 장으로. 루브릭의 가장 낮은 칸이 다음 학습의 출발점이다. 다음 표는 칸에서 이 책의 장과 프로젝트로 돌아가는 길이다.

가장 낮은 칸 다시 볼 장 근거를 만들 프로젝트
1. 개념 설명 해당 개념의 장을 다시 읽고 자료 없이 설명 쓰기, 0.5장(스터디·강의로 활용하기) 스터디에서 장 하나를 맡아 설명
2. 논문 연결 23.1, 23.2 프로젝트 F의 논문 요약·대응표
3. 유도→코드 8.2, 8.4 프로젝트 B
4. 실패 원인 분리 3.6, 6.6, 15.4, 17.9 프로젝트 C의 테스트, 디버깅 기록
5. 재현 가능성 3.4, 22.1, 22.2 프로젝트 C, 31.2장의 재현 패키지
6. 주장 판단 12.4, 12.5, 23.5, 23.6 프로젝트 D·G의 비교 표
7. 한계 명시 21.2, 21.4, 23.6 프로젝트 E의 조건별 calibration
8–10. 과학 질문 23.13, 24부, 25부, 분야의 부(26–30부) 프로젝트 G·H

심화할 도메인과 방법론. 가장 낮은 칸을 채우는 것과 별개로, 1년 동안 깊게 팔 방향을 도메인 하나와 방법론 하나로 정한다. 둘 다 여러 개를 고르면 어느 것도 수준 5(확장)에 이르지 못한다. 0.3장의 분야 선택 기준(데이터 접근, 함께 검토할 도메인 과학자, 이미 가진 지식과의 연결)이 여기서도 쓰인다. 방법론은 고른 도메인의 핵심 문제와 맞닿은 것을 고른다. 예를 들어 배터리 수명 예측을 고른 사람에게는 불확실성 정량화(21부)나 하이브리드 모델(24.5장, 30.5장)이, 신소재 탐색을 고른 사람에게는 베이지안 실험 설계(25.3장)가 자연스러운 짝이다.

커뮤니티 참여. 연구 역량의 상당 부분은 다른 사람과의 상호작용에서 자란다. 질문 2(논문 연결)와 6(주장 판단)은 남의 논문을 읽고 토론할 때, 질문 5(재현 가능성)는 남이 내 코드를 실행해 볼 때, 질문 8(도메인 신뢰)은 도메인 과학자와 결과를 검토할 때 자란다. 참여는 산출물이 있는 형태로 계획한다.

  • 논문 읽기 모임에서 한 달에 한 편 발표한다(23.2장, 23.10장).
  • 워크숍이나 학회의 심사에 참여한다(23.11장).
  • 쓰는 오픈소스 프로젝트에 기여하거나, 이 로드맵에 실패 사례·퀴즈를 기여한다(31.2장).
  • 0.5장의 방식으로 스터디를 운영해, 자신이 수준 4 이상인 장을 다른 사람에게 가르친다. 가르치는 것은 수준 5(확장)의 근거가 된다.

1년 계획. 계획은 0.3장의 3개월 계획과 같은 형식으로, 기간이 아니라 산출물로 쓴다.

1년 계획 (2026-12 ~ 2027-11)
심화 방향 : 도메인 = 배터리 열화, 방법론 = 불확실성 정량화
가장 낮은 칸: 4. 실패 원인 분리 (1), 7. 한계 명시 (2)

분기 | 산출물                                         | 확인 방법                          | 루브릭 칸
Q1   | 프로젝트 C에 학습 실패 진단 테스트 추가            | 일부러 넣은 버그 3종을 테스트가 잡음   | 4 → 3
Q2   | 프로젝트 E(셀 수명의 예측분포), 조건별 calibration | 저온 셀에서의 coverage 보고          | 7 → 3
Q3   | 독립 연구(H) 계획서, 도메인 과학자 검토            | 검토 의견과 수정 이력                 | 8 → 3
Q4   | 논문 초안과 재현 패키지                          | 동료가 README만으로 표 하나 재현      | 5 → 4, 6 → 4
재진단: 분기마다 루브릭을 다시 채우고 성장 기록에 한 줄씩 남긴다
커뮤니티: 월 1회 논문 읽기 모임 발표, 쓰는 라이브러리에 PR 1개 이상

최종 산출물

왜 필요한가. 루브릭은 스스로 매기는 것이고, 근거 규칙이 있어도 자기 평가에는 한계가 있다. 그래서 이 책의 마지막 산출물은 다른 사람이 검증할 수 있는 형태로 정한다. 논문 초안과, 그 초안의 모든 숫자를 다시 만들 수 있는 연구 프로젝트다. 이것은 31.1장 프로젝트 H의 산출물이기도 하다.

논문 초안. 투고 직전 수준일 필요는 없지만, 다음을 갖춘다(23.8장).

  • 연구 질문과 가설, 그리고 결과를 보기 전에 정한 비교 계획
  • 강한 baseline과의 공정한 비교, 여러 seed의 변동, 통계적 판단
  • 조건별 결과와, 평가하지 않은 조건을 밝힌 한계 절
  • 모든 표·그림이 재현 패키지의 명령에 대응

재현 가능한 연구 프로젝트. 31.2장의 재현 패키지 구조를 따른다. 데이터 설명(출처, 라이선스, 데이터 카드, 분할 파일), 실행 환경(lockfile 또는 컨테이너), 학습, 평가, 결과 재생성 절차(표·그림별 명령과 기대 결과의 허용 범위)가 모두 있어야 한다.

포트폴리오 점검표. 최종 산출물은 포트폴리오의 중심이고, 포트폴리오는 루브릭의 근거를 모은 곳이다. 다음 점검표로 확인한다. 각 항목 옆에는 그것이 근거가 되는 루브릭 질문을 적었다.

항목 근거가 되는 질문 확인
0.4장의 첫 역량 지도와 지금의 루브릭, 날짜가 붙은 성장 기록 전체 ☐
완료한 31.1장 프로젝트마다 계획서·보고서·회고, README 명령으로 주요 표 재생성 3–7 ☐
gradient 검사 등 독립 방법으로 구현을 검증한 테스트 3 ☐
학습 실패를 한 층으로 좁힌 디버깅 기록 하나 이상 4 ☐
다른 사람이 새 환경에서 재현한 기록 5 ☐
논문 재현 보고서(프로젝트 F) 2, 6 ☐
조건별 성능과 적용 범위를 밝힌 표 7 ☐
도메인 과학자의 검토 의견과 반영 이력 8 ☐
공개 기여(병합된 PR, 데이터 카드, 재현 패키지)의 링크 5, 31.2장 ☐
논문 초안과 재현 패키지 6–10 ☐

점검표에서 비어 있는 칸이 있다면, 그 칸에 대응하는 루브릭 질문의 수준은 근거 규칙에 따라 3 이하다. 점검표와 루브릭은 같은 것을 두 방향에서 본다.

실습

역량 지도를 다시 작성해 처음 진단과 비교하고 다음 1년 계획을 세운다.

  1. 루브릭을 채운다. 열 개의 평가 질문(일곱 질문과 과학 질문 세 개)마다 스스로 매긴 수준과, 근거 파일로 보일 수 있는 수준을 따로 적는다. 근거 칸에는 파일 경로나 링크를 쓴다.
  2. 처음 지도와 비교한다. 0.4장에서 만든 첫 역량 지도와 성장 기록을 꺼내, 이 장의 코드처럼 축별 평균·최저와 처음 최저를 나란히 놓는다. 가장 많이 자란 칸과 움직이지 않은 칸을 찾고, 각각 이유를 한 줄씩 쓴다.
  3. 다음 목표를 고른다. 연습문제를 풀어 근거 규칙과 "필요하면서 가장 낮은 칸" 규칙을 함수로 만든 뒤, 자신의 루브릭에 적용한다.
  1. 포트폴리오를 점검한다. 최종 산출물 절의 점검표를 학습 저장소의 README에 옮기고, 비어 있는 항목을 표시한다.
  2. 1년 계획을 쓴다. 심화할 도메인 하나와 방법론 하나, 가장 낮은 두 칸, 분기별 산출물·확인 방법·대응하는 루브릭 칸, 재진단 일정, 커뮤니티 참여 계획을 성장 계획 절의 형식으로 쓴다.
  3. 검토받는다. 계획과 루브릭을 지도교수, 스터디 동료, 또는 함께 일하는 도메인 과학자에게 보여 주고, 특히 "근거보다 높게 매긴 칸이 있는가"를 묻는다. 받은 의견과 고친 점을 문서 끝에 쓴다.

실패 사례

  • 논문 수나 모델 이름의 수로 역량을 평가하는 것. "올해 논문 두 편, 써 본 모델 열다섯 종"은 역량의 대리 지표다. 논문 수에는 주제 선택과 공동 저자의 기여가, 모델 목록에는 사용과 이해의 차이가 섞인다. 평가 질문마다 근거 파일로 평가한다.
  • 자기 평가를 결과 수치로만 하는 것. 벤치마크 점수가 올랐다는 것만으로는 그 점수를 만든 과정(공정한 비교, 원인 분리, 한계 명시)을 평가할 수 없다. 운이 좋은 seed나 약한 baseline에서도 점수는 오른다.
  • 축 평균만 보는 것. 평균은 가장 낮은 칸을 가린다. 연구를 막는 것은 평균이 아니라 최저 칸이다.
  • 근거 없이 수준을 올리는 것. 1년 동안 공부했으니 모든 칸이 올랐을 것이라고 매기면, 연습하지 않은 칸(대개 실패 원인 분리, 한계 명시)이 가려진다. 근거 규칙을 적용하면 수준이 내려가는 칸이 반드시 생기고, 그 칸이 다음 목표다.
  • 다른 사람과 비교하는 순위표로 쓰는 것. 루브릭은 같은 사람의 시간에 따른 변화를 보는 도구다. 배경과 연구 주제가 다른 사람과 수준을 비교하면, 필요하지 않은 칸을 채우는 데 시간을 쓰게 된다.

통과 기준

  • 열 개의 평가 질문마다 스스로 매긴 수준, 근거 수준, 근거 파일의 경로가 있는 루브릭을 작성하고, 0.4장의 첫 진단과 비교한 표와 이유를 남긴다.
  • 연습문제 next-targets의 테스트를 통과하고, 그 함수로 고른 다음 목표 두 칸이 1년 계획에 들어 있다.
  • 분기별 산출물·확인 방법·루브릭 칸·재진단 일정이 있는 1년 계획을 쓰고, 다른 사람의 검토 의견을 반영한다.
  • 논문 초안과 함께 데이터 설명·실행 환경·학습·평가·결과 재생성 절차가 포함된 프로젝트를 완성한다.