Numpy Seed
파이썬, C++ 과 같이 난수를 발생시켜 수행하는 코드에서는 주로 Numpy의 random함수를 많이 사용한다.
그 중에서도 np.random.seed라는 코드가 존재하는데 이는 시드(seed)를 설정해주는 과정이다.
사실 컴퓨터 프로그램에서 발생한 랜덤값은 무작위 수가 아니라 특정 시작 숫자값을 정해주면 정해진 알고리즘에 따라 마치 난수처럼 보이는 수열을 생성하는 것이다. 이때 설정해주는 특정 시작 숫자가 바로 시드(seed)이다.
이 시드값은 보통 현재 시각 등을 이용해 자동으로 정하기도 하지만, 직접 사람이 수동으로 설정할 수도 있다. 특정 시드값이 사용될 경우 이후에 발생되는 난수를 알고리즘에 따라 직접 예측할수도 있다.
np.random.seed(0)
python을 사용해 예제를 들면, 앞에서 말한 numpy의 random.seed함수가 seed설정 함수다. 인수값으로는 0 이상의 정수 값을 넣어주면 된다. 실제로 이렇게 seed를 설정해주고, numpy의 rand함수로 5개의 난수를 생성한다 가정해보자. rand함수는 0~1사이의 난수값을 입력받은 인수만큼 발생시킨다.
np.random.rand(5)
seed번호를 42로 변경하면, 다음과 같다.
np.random.seed(42)
np.random.rand(5)
seed번호를 다시 0으로 바꾸고 출력하면 아까와 동일한 수가 나오게 된다.
이 처럼 정해진 알고리즘에 따라 시작 숫자가 다르면 그에 따른 난수도 바뀌는 것을 확인할 수 있다.
개념 외로 np.random.seed(42)가 많이 통용되길래 무슨 의미가 있나 했는데 다음 링크로 이유를 알 수 있었다.
ㅇㅇ.. 딱히 특별한 이유는 없는 것 같다.
참고포스팅 : https://datascienceschool.net/01%20python/03.05%20%EB%82%9C%EC%88%98%20%EB%B0%9C%EC%83%9D%EA%B3%BC%20%EC%B9%B4%EC%9A%B4%ED%8C%85.html
'머신러닝 > 머신러닝 기초 개념' 카테고리의 다른 글
[머신러닝 통계학] 3.통계적 추론 (0) | 2021.07.28 |
---|---|
[머신러닝 통계학] 2.기술통계 (0) | 2021.07.28 |
[머신러닝 통계학] 1.소개 (0) | 2021.07.27 |
강화학습(Reinforcement Learning) (0) | 2021.06.20 |
Domain Adaptation(Domain-Adversarial Training of Neural Networks) (0) | 2021.06.05 |