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)
'딥러닝 > 딥러닝 기초' 카테고리의 다른 글
라그랑주 승수법 간단하게 (0) | 2024.03.01 |
---|---|
gradient descent를 위한 gradient vector의 이론적 설명 간단하게 (0) | 2024.03.01 |
구현하면서 배우는 weight initialization(가중치 초기화) 중요성 (0) | 2023.09.13 |
구현하면서 배우는 batch normalization에 대한 몇가지 핵심사항 (0) | 2023.09.13 |
컴퓨터로 sound data를 표현하는 방법들에 대하여(Fourier transform, spectrogram, melspectrogram, MFCC) (0) | 2023.07.05 |
TAGS.