스터디·강의로 활용하기
먼저 읽을 장 0.3 학습 경로
혼자 하는 학습은 두 곳에서 잘 무너진다. 하나는 꾸준함이다. 정해진 날짜와 기다리는 사람이 없으면 계획은 쉽게 밀린다. 다른 하나는 검증이다. 자기 설명의 빈틈과 자기 코드의 버그는 자기 눈에 가장 안 보인다. 이 책의 통과 기준 가운데 일부(동료 리뷰, 문서 산출물의 검토)는 처음부터 다른 사람을 전제로 쓰여 있다.
이 장은 이 로드맵을 스터디 그룹이나 강의에서 쓰는 방법, 그리고 혼자 학습할 때 다른 사람의 눈을 빌리는 방법을 정리한다. 참조 등급의 장이므로, 모임을 꾸리거나 강의를 준비할 때 필요한 절을 찾아 읽으면 된다.
학습 목표
- 이 로드맵으로 스터디 그룹이나 강의를 운영하는 방법을 안다
- 혼자 학습할 때의 점검 방법을 정한다
네 가지 모임 형식
모임의 형식은 목적에 따라 고른다. 한 가지 형식만 반복하면 그 형식이 확인하지 못하는 역량이 계속 비어 있게 된다.
| 형식 | 목적 | 준비 | 진행 | 남는 것 |
|---|---|---|---|---|
| 개념 발표 | 설명(2) 수준을 확인한다 | 발표자가 장 하나의 핵심 개념을 정리한다 | 발표자가 자료를 최소한으로 보며 설명하고, 듣는 사람은 "왜"를 묻는다 | 질문 목록과 답하지 못한 질문 |
| 구현 실습 | 구현(3)·검증(4) 수준을 확인한다 | 모두가 장의 실습과 연습문제를 미리 시도한다 | 서로의 코드를 화면에 띄워 비교하고, 테스트가 확인하지 않는 부분을 찾는다 | 고친 코드와 리뷰 의견 |
| 실패 분석 | 원인을 찾는 능력을 기른다 | 각자 실패 하나(자기 실험 또는 장의 실패 사례)를 재현 가능한 형태로 가져온다 |
증상만 보여 주고 다른 사람이 원인을 추측한 뒤, 네 축(이론·구현·연구·운영)으로 분류한다 | 실패 기록과 진단 절차 |
| 논문·분야 적용 | 확장(5) 수준으로 넘어간다 | 그 주의 장이 쓰이는 논문이나 분야 사례 하나를 고른다 | 논문의 주장과 실험을 대응시키고, 장에서 배운 실패 사례가 그 논문에 해당하는지 따진다 | 한 쪽짜리 요약과 남은 의문 |
개념 발표에서 피할 것. 슬라이드를 읽는 발표는 발표자에게도 듣는 사람에게도 인지(1) 수준을 넘지 못한다. 좋은 개념 발표는 발표자가 "이 개념이 없으면 무엇이 막히는가"에서 시작하고, 듣는 사람이 수식의 각 기호가 무엇인지 물을 수 있어야 한다. 발표자가 답하지 못한 질문은 실패가 아니라 다음 모임의 재료다.
실패 분석이 특히 쓸모 있는 이유. 실패는 혼자 볼 때보다 여럿이 볼 때 원인이 빨리 좁혀진다. 사람마다 익숙한 축이 다르기 때문이다. 학습 손실이 발산하는 실패를 보고, 수학에 익숙한 사람은 학습률과 곡률을, 엔지니어는 전처리 버그를, 서버를 관리해 본 사람은 라이브러리 버전을 먼저 의심한다. 0.1장에서 본 네 축이 사람 사이에 나뉘어 있는 셈이다.
운영 주기와 역할
역할. 한 번의 모임에는 세 역할이 있다.
- 발표자: 그 주의 장을 맡아 핵심 개념을 설명하거나 실패를 가져온다.
- 리뷰어: 발표와 코드를 미리 보고, 빠진 가정·검증되지 않은 주장·테스트가 확인하지 않는 부분을 짚는다. 리뷰어의 목표는 틀린 곳을 찾는 것이 아니라 확인되지 않은 곳을 찾는 것이다.
- 실습 진행자: 실습과 연습문제를 모임 전에 직접 끝까지 해 보고, 막히는 지점과 환경 문제를 미리 파악해 진행을 돕는다.
역할은 매주 돌아가며 맡는다. 같은 사람이 계속 발표만 하면, 그 사람의 설명 능력만 자라고 나머지 사람은 듣는 사람으로 남는다.
주기. 주간과 격주 중 하나를 고른다.
| 주기 | 맞는 경우 | 주의할 점 |
|---|---|---|
| 주간 | 모두가 주에 일정 시간을 꾸준히 낼 수 있다. 한 주에 장 하나 | 실습까지 끝내지 못한 채 모임에 오는 일이 늘기 쉽다. 실습을 미리 끝내지 못했으면 발표를 미루는 규칙을 둔다 |
| 격주 | 직장·연구와 병행한다. 2주에 장 하나 또는 두 개 | 사이가 길어 흐름이 끊긴다. 중간 주에 짧은 비동기 점검(코드 링크 공유)을 둔다 |
한 번의 모임은 예를 들어 다음처럼 짠다. 시간 배분은 모임에 맞게 조정한다.
- 지난주 통과 기준 점검: 각자 통과한 것과 못 한 것
- 그 주의 형식(개념 발표·구현 실습·실패 분석·논문 적용)
- 리뷰어의 의견과 토론
- 다음 주 역할과 범위 확인
혼자 학습할 때. 함께할 사람이 없어도 다른 사람의 눈을 빌리는 방법이 있다.
- 학습 노트 공개. 장마다 노트와 실습 코드를 공개 저장소에 올린다. 공개된다는 사실만으로 설명과 코드를 더 꼼꼼히 쓰게 된다. 0.4장의 역량 지도와 성장 기록도 같은 저장소에 둔다.
- 리뷰 요청. 온라인 커뮤니티나 지인에게 특정 질문을 붙여 리뷰를 요청한다. "봐 주세요"보다 "이 gradient 유도에서 셋째 줄이 맞는지", "이 분할에서 누수가 있는지"처럼 범위를 좁히면 답을 받기 쉽다.
- 구술 설명. 장 하나를 마치면 자료 없이 5분 동안 핵심을 설명하는 것을 녹음하고 다시 듣는다. 막힌 곳, "그러니까"로 넘어간 곳이 설명(2) 수준의 빈칸이다.
- 가상의 리뷰어. 자기 코드와 보고서를 다음 날 리뷰어의 역할로 다시 읽는다. 장의
실패 사례를 체크리스트로 쓴다.
점검과 피드백
모임이 발표로만 채워지면, 모두가 들었지만 아무도 확인하지 않은 상태가 된다. 점검은 세 가지를 함께 쓴다.
통과 기준과 퀴즈 결과 공유. 사이트의 내 PC에서 진도를 파일(JSON)로 내보낼 수 있다. 집필 시점의 사이트 기준으로, 장마다 문항별 정답 여부와 시도 횟수, 연습문제 통과 여부, 통과 기준 체크, 직접 고른 장 상태, 복습 목록이 담긴다. 모임 전에 이 파일을 공유하면 누가 어느 장의 어느 목표에서 막혔는지 한눈에 보인다. 다만 이 파일은 증명이 아니라 기록이다. 사이트에는 로그인과 서버 채점이 없고, 퀴즈 정답과 테스트가 공개되어 있다. 진도 파일은 무엇을 이야기할지 정하는 출발점으로 쓰고, 실제 확인은 아래 두 방법으로 한다.
코드 리뷰. 실습 코드를 서로 리뷰할 때는 다음을 확인한다.
- 새 환경에서 README의 명령만으로 실행되는가?
- 테스트가 있고, 테스트가 확인하지 않는 경우(빈 입력, 다른 shape, 다른 seed)에도 동작하는가?
- 배열에 shape 주석이, 물리량에 단위가 있는가?
- 결과 숫자를 만든 설정과 seed가 기록되어 있는가?
- 장의
실패 사례에 해당하는 실수가 없는가?
구술 설명. 진도 파일과 코드로는 설명(2) 수준을 확인할 수 없다. 모임에서 무작위로 한 사람을 골라 그 주의 학습 목표 하나를 자료 없이 설명하게 하는 방법이 가장 직접적이다. 미리 누가 될지 모르게 하면 모두가 준비한다.
강의 교재로 쓸 때
트랙·부 단위로 강의 계획 짜기. 강의는 트랙 하나 또는 부 몇 개를 단위로 짜는 것이 좋다. 트랙에는 핵심 질문, 도달 목표, 졸업 과제가 이미 정해져 있어 강의의 목표와 기말 과제로 그대로 쓸 수 있다. 예를 들어 확률·통계적 추론 트랙의 졸업 과제(같은 회귀 문제를 MLE·MAP·베이지안·GP로 풀고 예측분포를 비교한 보고서)는 한 학기 강의의 기말 프로젝트가 된다. 장 머리의 "먼저 읽을 장"으로 수강생에게 필요한 사전 지식을 확인하고, 빠진 선수 장은 첫 주에 자가 진단(0.4장)으로 점검한다.
실습과 퀴즈의 배치. 장의 요소를 강의 흐름에 다음처럼 나눌 수 있다.
| 요소 | 강의에서의 자리 | 이유 |
|---|---|---|
| 본문 중간의 예측 퀴즈 | 수업 전 또는 수업 시작 | 예측을 먼저 하게 해 수업에서 확인할 질문을 만든다 |
| 위젯·코드 셀 | 수업 중 시연과 함께 조작 | 같은 화면에서 수식과 결과를 연결한다 |
| 개념 퀴즈 | 수업 직후 자기 점검 | 학습 목표별로 빈칸을 확인한다 |
| 연습문제 | 과제 | 공개 테스트로 즉시 피드백을 받는다 |
| 통과 기준의 산출물 | 평가 대상 | 문서·코드·구술로 평가한다 |
연습문제의 테스트와 해답은 공개되어 있으므로, 연습문제 통과 여부를 성적의 근거로 쓰지 않는다. 연습문제는 학습 도구로 쓰고, 성적은 통과 기준의 산출물, 연습문제를 변형한 과제, 구술 설명으로 매긴다.
라이선스와 출처 표기. 이 책의 본문·퀴즈·그림·데이터는 CC BY 4.0, 코드(실습·연습문제·사이트)는 MIT 라이선스다. 강의 자료로 복제·수정·배포할 수 있고 상업적 이용도 허용되지만, CC BY 4.0은 출처를 밝힐 것을 요구한다. 저장소의 LICENSE-CONTENT가 권하는 표기는 다음과 같다.
"AI for Science Roadmap" by pjmbatman and contributors,
https://github.com/pjmbatman/ai-research-roadmap-book, CC BY 4.0
내용을 고쳐서 쓴 경우에는 고쳤다는 사실도 함께 밝힌다. 책 안에 다른 출처의 그림이나 자료가 있으면 그 자료는 원래의 라이선스를 따르므로, 해당 자료에 표시된 출처와 라이선스를 확인한다. 라이선스의 정확한 조건은 저장소의 LICENSE, LICENSE-CONTENT와 Creative Commons의 원문을 기준으로 한다.
로드맵에 돌려주기
이 책은 오픈소스이고, 모임은 책을 개선할 재료를 가장 많이 만드는 곳이다. 여러 사람이 같은 장을 읽으면 오류와 빈틈이 빨리 드러난다.
| 모임에서 발견한 것 | 돌려주는 방법 |
|---|---|
| 틀린 설명·수식·코드·퀴즈 정답·깨진 링크 | 저장소에 "내용 오류" 이슈를 연다. 위치(장 번호와 절), 무엇이 틀렸는지, 근거를 적는다 |
| 실제로 겪은 실패 | 장의 실패 사례 절에 pull request로 더한다. 실제로 겪었거나 재현 가능한 것만 |
| 오개념을 드러내는 좋은 질문 | 장의 quiz.toml에 문항으로 제안한다. 학습 목표 하나에 연결하고, 오답마다 왜 틀렸는지 적는다 |
| 더 나은 설명이나 예시 | 해당 절에 pull request를 보낸다 |
| 새 분야의 사례 | 새 분야의 부는 먼저 이슈로 제안한다. 분야별 부의 뼈대(분야 기초 → 데이터 → 대표 문제와 모델 → 평가와 함정)를 따른다 |
기여 절차는 저장소의 CONTRIBUTING.md에 있다. 요약하면 큰 변경은 이슈로 먼저 제안하고, 변경한 뒤 저장소의 검사를 통과시키고, 한 pull request에는 한 주제만 담는다. 다음은 집필 시점의 검사 명령이다.
# 저장소 루트에서 (집필 시점 예시)
python3 scripts/book.py check
기여한 내용은 저장소와 같은 라이선스로 공개된다. 확인하지 않은 논문·수치를 쓰지 않는다는 원칙도 그대로 적용된다.
실습
한 트랙(또는 한 부)을 6–10주 스터디 계획표로 만든다. 계획표에는 주차별 장, 형식, 실습, 역할이 들어간다. 다음은 세 사람(A, B, C)이 7부(선형대수와 기하)의 필수 장을 8주 동안 하는 예다.
| 주차 | 장 | 형식 | 실습 | 발표자 | 리뷰어 | 실습 진행자 |
|---|---|---|---|---|---|---|
| 1 | 7.1 벡터공간과 선형사상 | 개념 발표 | 장의 실습 | A | B | C |
| 2 | 7.2 아핀 구조와 비선형성 | 구현 실습 | 연습문제 fold-affine-layers, relu-breakpoints |
B | C | A |
| 3 | 7.3 행렬의 네 부분공간과 rank | 개념 발표 | 장의 실습 | C | A | B |
| 4 | 7.4 내적·노름·직교성·사영 | 구현 실습 | 장의 실습 | A | B | C |
| 5 | 7.5 고윳값과 대칭행렬 | 실패 분석 | 각자 고윳값 계산에서 겪은 실패 하나 | B | C | A |
| 6 | 7.6 SVD·PCA·저랭크 근사 | 구현 실습 | 장의 실습 | C | A | B |
| 7 | 7.7 텐서와 einsum | 실패 분석 | shape 버그 하나씩 가져오기 | A | B | C |
| 8 | 정리 | 논문·분야 적용 | 7부 내용이 핵심인 논문 하나 요약 | 전원 | 전원 | — |
계획표를 만든 뒤 다음을 정한다.
- 점검 방식. 매 모임 전 진도 파일 공유, 코드 리뷰 체크리스트, 구술 설명 중 무엇을 쓸지.
- 통과 기준을 못 채웠을 때의 규칙. 예: 실습을 끝내지 못한 사람은 그 주 발표를 다음 주로 미룬다.
- 돌려주기. 모임에서 발견한 오류와 실패 사례를 누가, 언제 이슈로 정리할지.
혼자 학습한다면 역할 열 대신 "공개할 노트", "리뷰를 요청할 질문", "구술 설명 녹음" 열을 둔다.
실패 사례
- 발표만 하고 실습·검증이 없는 스터디. 매주 한 사람이 발표하고 나머지가 듣는 모임은 몇 주가 지나도 아무도 구현(3) 수준에 이르지 못한다. 발표 주 사이에 구현 실습과 실패 분석을 끼워 넣고, 실습을 끝내지 않은 사람은 발표하지 않는 규칙을 둔다.
- 진도를 장 수로만 세는 것. "이번 달에 장 여섯 개를 했다"는 기록은 통과 기준을 몇 개 만족했는지 말해 주지 않는다. 진도는 통과 기준의 산출물과 역량 지도의 칸 변화로 센다.
- 진도 파일이나 연습문제 통과를 실력의 증명으로 쓰는 것. 답과 테스트가 공개된 상태에서 이것들은 학습 기록일 뿐이다. 구술 설명과 코드 리뷰를 함께 쓴다.
- 출처 없이 강의 자료로 쓰는 것. CC BY 4.0은 자유로운 재사용을 허용하지만 출처 표기를 조건으로 한다. 슬라이드에 그림을 가져올 때마다 출처를 붙인다.
통과 기준
- 6–10주 스터디 계획표 또는 개인 학습 계획표를 문서로 만든다. 주차별 장·형식·실습·역할(혼자라면 공개할 노트·리뷰 질문)이 들어 있다.
- 계획표에 점검 방식(진도 파일·코드 리뷰·구술 설명 중 최소 두 가지)과 통과 기준을 못 채웠을 때의 규칙을 적는다.