모델 실험을 위한 코드 템플릿 생성
다양한 모델 실험 케이스를 효율적으로 분업/관리할 수 있도록, 공통 구조의 .ipynb 코드 템플릿을 제작
sol-commits May 17, 2025
목적, 마감, 결과, subtasks
- 목적
- 다양한 모델 실험 케이스를 효율적으로 분업/관리할 수 있도록, 공통 구조의 Pytorch 기반 .ipynb 코드 템플릿을 제작
- 모든 실험은 템플릿을 복사한 후 핵심만 수정하는 방식으로 재현 가능해야 하며, 결과물 저장 경로/포맷이 고정되어 있어야 자동화 및 통합이 쉬움
- 마감: 5월 17일
- 실험 케이스 목록(1차)
| 실험 유형 | 설명 |
| Stacked LSTM | 기본 LSTM(3 layers) |
| Bi-LSTM | 양방향 처리 |
| Bi-LSTM + Attention | Attention Layer 추가 |
| No phone_detected | 해당 feature 제거 |
| mar/ear only | 핵심 feature subset 사용 |
| Full feature set | 모든 feature 사용 |
| Yawn oversampling | 하품 클래스 샘플 수 증강 |
| Noise injection | 입력 feature에 jittering |
| Long window | 시퀀스 길이 24 |
| Short window | 시퀀스 길이 12 |
| CNN + LSTM | 앞단에 Conv1D 추가 - 이미 작성한 코드가 있어서 코드 템플릿에 고려 안해도됨 |
| TimeDistributed Dense | 시점별 Dense 적용 |
- 산출물
- code_template.ipynb : 팀원이 복사해서 사용하는 실험 템플릿
- 고정된 결과 경로 구조
- subtasks
- case_name을 입력하면 해당 경로 자동 생성
- dataclass를 사용한 구조화
디렉토리 자동 생성 및 고정 경로 관리
실험 조건 지정 변수 구조화
실험 로그 및 리포트 저장
config dataclass
꼭 확인해야 하는 부분
- case_name → 모델 최상위 디렉토리명이 되는 값
- sequence_length
- 이 값에 따라 csv 를 자동으로 가져오므로 확인 필요
early stopping, learning rate scheduler는 제외
- 현재 실험의 목적은 모델 구조(ex. LSTM, BiLSTM, Attention 등) 간의 성능 차이를 공정하게 비교하는 것
- early stopping, lr scheduler를 사용하면 공정성이 떨어짐
- 구조 자체의 차이를 관찰하고 싶을 때는 학습률 변화를 고정한 상태로 실험하는 것이 더 객관적
→ 성능을 최대한 끌어내야 하는 단계에서 이 전략들을 다시 적용
model_type, data_type
모델 저장과 결과 저장하는 함수에 model_type, data_type 을 인자로 받아야하는 경우가 있음
이를 enum으로 코드를 짜서 실수하지 않도록 방지
model_type
ModelType.BEST
ModelType.LAST
모델은 best_model, last_model 둘만 저장하기 때문에, 어떤 모델을 load 할지에 따라 model_type을 넘겨주면 됩니다.
data_type
DataType.TRAIN
DataType.VAL
DataType.TEST
어떤 데이터셋으로 모델 성능을 평가할지에 따라 data_type을 넘겨주면 됩니다.
모델 성능 평가 및 오분류 시각화
- evaluate_model
- 모델을 평가하고 평가 결과인 confusion_matrix, classification_report를 저장 경로에 저장, 시각화, (true_labels, pred_labels, 예측 확률) 반환
- 클래스별 확신 높은 오분류 top-10 인덱스 추출
이 인덱스 중 하나를 골라 다음 함수를 부름
최종 결과물
config.case_name 디렉토리 하위에 모델 결과들이 저장됨
classification_report, confusion_matrix 폴더를 분리하는 게 나을지…
| best_train_classification_report.png | best_model 로 train 성능 평가한 classification_report |
| trainval_curve.png | loss, accuracy curve 그래프 |
| training_results.csv | 매 epoch 마다의 train, validation 의 loss, accuracy |
| weights | best_model.pth last_model.pth 저장 |