reproducibility를 위한 random seed

1. 필요성

 

모델의 재현성

 

cross validation의 경우 실행할 때마다 매번 다르게 sampling되어 model의 성능이 매번 다르다

 

반복해서 실행했을 때 동일한 조건에서 동일하게 sampling되어야 정확하게 model 성능 측정이 가능함

 

머신러닝 모델도 random하게 작동하므로 작업 복원을 위해서라도 반드시 필요함

 

어떤 가설을 설정하고, 그것이 맞는지 실험할려고 하는데 재현이 안된다면 가설에 의한 변화 때문에 성능이 바뀐건지, 다른 원인이 있는건지 파악할 수 없음

 

 

2. seed

 

모델의 랜덤성 때문에 풀고자 하는 문제에 대하여 데이터가 매번 바뀌면 모델 성능 측정시 내가 만든 feature나 전처리 방식이 효과적인지 확인이 어렵다

 

랜덤성을 제거하기 위한 seed를 고정

 

feature engineering이나 parameter handling이 의미 있는지 validation성능으로 판단할 수 있게 만들어줌

 

import numpy as np
import random
import torch
import os

def seed_everything(seed=0):
    random.seed(seed)
    os.environ['PYTHONHASHSEED'] = str(seed)
    np.random.seed(seed)
    
    torch.manual_seed(seed)
    if torch.cuda.is_available():
        torch.cuda.manual_seed_all(seed)
    torch.backends.cudnn.deterministic = True
    torch.backends.cudnn.benchmark = True

SEED = 14
seed_everything(SEED)
TAGS.

Comments