심화 A — 데이터 과학: AI를 "더 잘" 가르치기
대상 모방학습 4~6차시 이후 · 도구 imitation_learning_car/tools/*
목표 "데이터가 모델을 만든다"를 체험한다. 데이터를 늘리고(증강), 들여다보고(편향 분석), 점검하고(오류 분석), 부족한 곳을 더 가르친다(DAgger).
기존 차시는 "데이터를 모아 학습"까지였습니다. 이 차시는 모은 데이터 자체를
다루는 기술 — 실제 머신러닝 엔지니어가 시간의 대부분을 쓰는 일입니다.
cd "d:\data\study\AI\Fab-Lab\CAR\Program\auto_car\imitation_learning_car\tools"
1차시 — 데이터 들여다보기: 편향 분석 (dataset_viewer.py)
python dataset_viewer.py
- 모은
dataset.json의 속도·조향 분포를 막대그래프로 표시
- 좌/우/직진, 주행/정지 개수와 편향 경고:
- "우회전 데이터가 3배 → 한쪽 치우침"
- "정지 데이터 없음 → 못 멈춤"
- 토론: 편향된 데이터 → 편향된 AI. 한 트랙·한 조명만으로 배우면 왜 실패할까?
2차시 — 데이터 늘리기: 증강 (augment_dataset.py)
python augment_dataset.py # dataset_augmented.json 생성
python augment_dataset.py --inplace # 원본 교체(.bak 백업)
- 이미지를 좌우 반전 + 조향 부호 반전 → "반대 커브" 데이터를 공짜로 생성
- 1차시에서 발견한 편향을 이걸로 보강
- 실험: 증강 전/후로 모드 3 모델을 학습해 자율주행 성공률 비교
- 생각: 좌우반전이 해로운 경우는? (좌/우가 다른 표지판, 일방통행 등)
3차시 — 모델 점검: 오류 분석 (error_analysis.py)
python error_analysis.py --top 8
- 학습된 모델(
models/ridge_model.npz)을 데이터에 적용해 RMSE와 가장 많이 틀린 샘플을 표시
- "평균만 보지 말고 어디서 틀리는지 봐라" — 모델 디버깅의 기본
- 같은 화면인데 정답 조향이 들쭉날쭉하면 모순된 데이터 → 모드 3
X로 제거
- 활동지: 가장 많이 틀린 샘플 3개의 공통점은? (특정 커브? 흐릿한 구간?)
4차시 — DAgger: 틀린 곳만 더 가르치기 (모드 3/5/6 활용)
DAgger(Dataset Aggregation) — AI 연구의 실제 기법. 코드 추가 없이 기존 모드로 실습:
- 모드 3/5/6으로 데이터 수집 →
M 학습 → G 자율주행
- 자율주행 중 차가 실수하는 지점을 관찰
- 그 지점에서 사람이 개입해 올바른 운전을 추가 수집(같은 dataset)
- 다시
M 학습 → G 자율주행
- 실수가 줄 때까지 2~4 반복
- 핵심 통찰: 무작정 많이 모으는 것보다 틀리는 곳을 집중적으로 가르치는 게 효율적
- 비교 실험: "랜덤하게 50개" vs "DAgger로 30개" — 어느 쪽이 더 잘 달리나?
| 반복 | 데이터 수 | 성공률(5회 중) | 주로 실패한 곳 |
| 1 | | | |
| 2 | | | |
| 3 | | | |
ACT 역량 연계
- A: 데이터 편향을 스스로 진단하고 보강 전략(증강/추가수집)을 결정
- C: DAgger 반복을 조별로 분담, 학습 곡선 비교
- T: 데이터 편향이 만드는 불공정한 AI, 자율주행 데이터(영상)의 프라이버시 토론