인프런 커뮤니티 질문&답변

유영재님의 프로필 이미지
유영재

작성한 질문수

최신 딥러닝 기술 Vision Transformer 개념부터 Pytorch 구현까지

WeightedRandomSampler 질문이 있습니다

작성

·

1.9K

0

안녕하세요. vit 구현하실 때 WeightedRandomSampler 동작에 대해서 궁금한 점이 있습니다

해당 class 갯수가 작을 때는 weight 값이 크게 들어가고, 반대 상황에서는 다르게 들어가는데

그럼 DataLoader에서 weight가 어떻게 동작하게 되는 것인가요? 결국 DataLoader에서는 모든 이미지가 한 번씩 나오게 되는데, 그럼 배치마다 클래스에 따라 균일하게 나오게 되는 것인가요?

답변 2

1

딥러닝호형님의 프로필 이미지
딥러닝호형
지식공유자

안녕하세요!

질문이 크게 3개 정도 되는 것으로 보여 나눠서 답변드리겠습니다.

1. Weighted random sampling 동작방법

Weighted random sampling은 클래스 불균형 문제를 해결하기 위한 방법 중 하나입니다. 개별 이미지 한 장이 뽑힐 확률은 1/전체개수 입니다. 따라서 이미지를 많이 가지고 있는 클래스가 뽑힐 확률이 더 높습니다. 이를 보완하고자 더 적은 이미지를 갖는 클래스의 이미지가 뽑힐 확률을 높히도록 큰 가중치를 곱하고 반대로 많은 이미지를 갖는 클래스의 이미지가 뽑힐 확률이 낮아지도록 작은 가중치를 곱하게 되어 클래스 당 확률을 동일하게 맞춰줍니다. 이렇게 맞춰진 가중 확률을 기반으로 Sampler가 이미지를 확률적으로 골라서 배치를 만들게 됩니다.

 

2. 배치 데이터는 균일한가요? 

앞서 말씀드렸듯이 Sampler가 균일하게 하려고 동작을 합니다. 따라서 말씀해주신 7:3 비율을 갖는 바이너리 데이터가 있다면 배치에서는 5:5로 뽑아주게 하는 것입니다. 하지만 확률적으로 뽑기 때문에 항상 5:5는 아닐 수 있지만 대부분 균일하다고 보시면 됩니다. (확률적이기 때문에 "항상 균일하다"라는 표현을 사용하지 않았습니다.)

 

3. 중복으로 데이터가 뽑히나요?

네, 맞습니다!! 무작위 중복으로 뽑힐 수 있습니다!

 

따라서 위 과정을 순서대로 정리하면 다음과 같습니다. 

1. 가중 확률 정의

2. 가중 확률을 기반으로 Sampler가 데이터 선택

3. 매 배치마다 balanced batch set 생성

0

유영재님의 프로필 이미지
유영재
질문자

기존에 7:3 비율을 가지는 갯수의 데이터셋이 존재한다면 배치에서도 7:3으로 동일하게 나올 수 있게 하는 장치인가요? 

뽑을 확률을 동일하게 가져갔을 때 문제가 데이터 갯수 불균형이 일어나면, 중복되게 뽑아야하는 경우가 나오지 않나요?

유영재님의 프로필 이미지
유영재

작성한 질문수

질문하기