본문 바로가기
공부 자료/머신러닝

[python/머신러닝] random seed local로 적용하기

by 푸르미로 2021. 4. 22.
반응형

머신러닝 시뮬레이션을 하려고 할때, 

매번의 새로운 실행마다 랜덤하게 추출되는 변수를 고정하려고 하면 어떻게 해야될까?

 

예를 들어, 분산학습이나 연합학습의 상황을 가정하자. 

실험 초기에는 각 디바이스에게 데이터를 분배하는 과정이 필요한데

데이터 분배의 랜덤성으로 발생되는 변동성을 제외하기 위해

매 실험마다 데이터를 동일하게 분배하고 싶다면?

 

처음에 단순히 생각한것은 아래와 같이 random 함수에 seed를 부여하는 것이었다.

 

하지만, 위와 같이 일반적인 방법으로 랜덤시드를 주면

특정 클래스나 특정 부분에만 적용되는 것이 아니고

작성한 코드의 모든 랜덤함수에 시드값이 적용된다.

처음의 의도와는 다르게 똑같은 실험 결과를 내뿜으면서 무의미한 결과들이 저장된다.

즉 랜덤 시드는 글로벌하게 적용되는 특성이 있다.

 

따라서 내가 원하는 부분에만 시드를 적용할 필요성이 있는데

아래와 같이 random.Random(#정수값) 을 활용하여 rng에 시드를 부여하면

rng를 적용하는 모든 random 모듈의 함수들은 동일한 시드가 적용된다.

시드를 부여하고 싶은 랜덤 함수에는 random.sample이 아닌 rng.sample과 같은 방식으로 사용하면 된다.

1차 출력

 

2차 출력

 

반응형

댓글