시드 넘버
컴퓨터가 무작위로 숫자들을 선별하는 방식을 pseudorandom number generation이라고 한다. 재밌는 점은 이 방식은 실제론 무작위(Random)가 아니다. 그렇게 보일 뿐이다.
A pseudorandom number generator (PRNG), also known as a deterministic random bit generator (DRBG), is an algorithm for generating a sequence of numbers whose properties approximate the properties of sequences of random numbers. The PRNG-generated sequence is not truly random, because it is completely determined by an initial value, called the PRNG’s seed (which may include truly random values). Although sequences that are closer to truly random can be generated using hardware random number generators, pseudorandom number generators are important in practice for their speed in number generation and their reproducibility. – Wikipedia ‘Pseudorandom number generator’
컴퓨터는 실제로는 사람처럼 무작위로 아무 규칙없이 임의의 숫자들을 생성해낼 수 없다. 그래서 초기숫자(시드넘버)를 입력받으면 그에 해당하는 사전에 생성되어있는 무작위 숫자들을 하나씩 꺼내오는 방식으로 무작위를 흉내낸다.
딥러닝 모델 내부에 모델의 일반화 성능을 향상시키기 위한 목적으로 입력된 데이터 중 일부를 무작위로 선별하는 층을 구현하는 방식을 사용하기도 하는데, 이 경우 시드넘버가 달라질 때마다 모델의 성능이 바뀐다. 더 좋아지기도하고 나빠지기도 한다.
재밌는 점은 시드를 고정시켜둔다면 오늘 학습을 하든 내일 학습을 하든 그 학습 곡선의 형태가 완전히 똑같이 그려진다는 점이다. 더 나아지지도 더 나빠지지도 않는다.
시드넘버를 바꾸는 순간에는 결과가 좋아질 지 나빠질 지 알 수 없다. 다만 확실한 것은 시드넘버를 바꾸지 않으면 변화 자체가 발생하지 않는다는 것이다.
사는 것이랑 비슷해보인다. 내가 할 수 있는 것은 시드넘버를 바꾸고 모델의 구조를 바꾸는 것 밖에 없으니 둘 다 해봐야한다. 아무것도 안하면 그냥 똑같은 날들이 반복될 뿐이다.(혹은 나빠지는 것 밖에 없다)
그러니 일단 해야한다. 계속해야 한다.
(내가 점점 사람이 아니라 컴퓨터가 되어가는 걸 지도 모른다.)