250205 TIL #604 AI Tech #136 샘플링 랜덤 시드 고정

김춘복·2025년 2월 5일
0

TIL : Today I Learned

목록 보기
606/627

Today I Learned

레퍼런스 삼았던 코드에서 랜덤시드가 고정이 안되어있었다.
이를 적용하니 실험 결과가 달라졌다.


샘플링 랜덤 시드 고정

레퍼런스 코드에서 np.random을 사용하면서 시드를 고정하지 않는 부분을 확인했다.

  • negative sampling을 할 때 random의 seed가 고정되지 않아 실험을 할 때 마다 샘플링이 바뀐다.
    def sample_negatives(self, item_sequence):
        negatives = self.all_items[~np.isin(self.all_items, item_sequence)]
        if self.full_negative_sampling:
            negatives = np.random.choice(
                negatives,
                size=self.num_negatives * (len(item_sequence) - 1),
                replace=True,
            )
            negatives = negatives.reshape(len(item_sequence) - 1, self.num_negatives)
        else:
            negatives = np.random.choice(
                negatives, size=self.num_negatives, replace=False
            )

        return negatives
  • 위의 코드 외에도 여러 부분에 있어 np.random을 사용하면서 seed가 고정이 되지 않았다.

  • 실험의 재현성을 위해 np.random.seed(42)로 고정 후 진행하기로 했다.

  • 고정 전 hitrate@10은 16epoch일때 0.194140625

  • 고정 후 hitrate@10은 16epoch일때 0.19814453125로 변화가 있다.

  • 고정 후 재 실험에서는 변화가 없다.

profile
Backend Dev / Data Engineer

0개의 댓글

관련 채용 정보