[부스트캠프 AI tech 이미지분류] week06 (2022.02.23)

redgreen·2022년 2월 23일
0

09 Ensemble

  • Variance가 높은 경우
    -> Bagging기법 활용
  • Bias가 높은 경우
    -> Boosting기법 활용

Model Averaging(Voting)

  • Hard Voting
    : 다수결
  • Soft Voting
    : 예측값 평균

Cross Validation

  • train set과 validation set을 바꾸어가며 성능을 확인하는 방법
  • Stratified K-Fold
    : split시에 class 분포까지 고려 함

TTA(Test Time Augmentation)

  • 테스트 시에도 augmentation을 하여 label 예측
  • 테스트 데이터가 가질 수 있는 variance를 고려함

Trade-off

  • 앙상블 효과는 확실히 있지만, 그만큼 학습, 추론 시간이 배로 소모됨

Hyperparameter Optimization

Hyperparameter?

  • 시스템의 매커니즘에 영향을 주는 주요한 파라미터
    ex) Hidden layer의 개수, K-fold, loss파라미터, dropout, batch size, learning rate, regularization, optimizer 파라미터
  • Optuna

import optuna
`
def objective(trial):
	x = trial.suggest_uniform('x', -10, 10)
    return (x - 2) ** 2
`
study = optuna.create_study()
study.optimize(objective, n_trials=100)
`
study.best_params # {'x':2.002108}

10 Experiment Toolkits & Tips

Tensorboard

  • 모델 성능 확인
from torch.utils.tensorboard import SummaryWriter
logger = SummaryWriter(log_dir=f'results/{name}")
`
logger.add_scalar('Train/loss', train_loss, epoch * len(train_loader) + idx)
logger.add_scalar('Train/accuracy', train_acc, epoch * len(train_loader) + idx)
  • 학습 이미지를 확인할 수 있음
for idx, train_batch in enumerate(train_loader):
	inputs, labels = train_batch
`
grid = torchvision.utils.make_grid(inputs)
logger.add_image('images', grid, 0)
logger.add_graph(model, inputs)
  • 사용법
tensorboard
	--logdir PATH # log가 저장된 경로
    --host ADDR # 원격 서버에서 사용시 0.0.0.0(default localhost)
    --port PORT # 포트번호

Weight and Bias(wandb)

  • 딥러닝 로그의 깃허브 같은 느낌
  • 터미널에서 wandb login 입력 후 API key 입력
  • 원격저장소에 저장
import wandb
`
## --wandb iniatialize with configuration
wandb.init(config={'batch_size' : batch_size,
				   'lr'			: lr,
                   'epochs'		: num_epochs,
                   'backborn'	: name})
`
# logging wandb train phase
wandb.log({
	'Train loss' : train_loss,
    'Train acc' : train_acc
    })
`
# logging wandb valid phase
wandb.log({
	'Valid loss' : val_loss,
    'Valid acc' : val_acc
    })

Machine Learning Project

1. Jupyter Notebook

  • EDA할때 편리
  • interactive

2. Python IDLE

  • 구현은 한번만, 사용은 언제든, 간편한 코드 재사용
  • 디버깅 기능
  • 자유로운 실험 핸들링
    python train.py --config ./config.json
    python train.py --config ./config_resnet.json
    python test.py --config ./config_test.json

Some Tips...

  • 분석코드보다는 설명글을 유심히 보세요
    - 필자가 생각하고 있는 흐름(코드의 정체성)을 읽을 수 있다.

  • 코드를 볼 때는 디테일한 부분까지
    - 언제든 활용할 수 있을 정도로 이해하기

  • Papers with Codes
    - 최신 논문과 그 코드까지 확인가능

  • 공유하는 것을 주저하지 마세요
    - 새로운 배움의 기회가 될 수 있다.
profile
인공지능 꿈나무

0개의 댓글