랜덤 서치 소개

Python에서의 하이퍼파라미터 튜닝

Alex Scriven

Data Scientist

이미 알고 있는 것

 

그리드 서치와 매우 유사합니다:

  • 추정기, 튜닝할 하이퍼파라미터, 각 범위를 정의합니다.
  • 교차 검증 방식과 스코어링 함수도 설정합니다.

 

하지만 그리드 칸을 무작위로 고릅니다.

Python에서의 하이퍼파라미터 튜닝

왜 효과적일까?

Bengio & Bergstra (2012):

이 논문은 무작위 시도가 그리드 시도보다 하이퍼파라미터 최적화에 경험적·이론적으로 더 효율적임을 보입니다.

두 가지 핵심 이유:

  1. 모든 하이퍼파라미터가 동일하게 중요하지 않음
  2. 확률의 작은 트릭
Python에서의 하이퍼파라미터 튜닝

확률 트릭

그리드 서치:

서로 다른 모델의 10x10

초록 칸 중 하나를 얻을 확률이 95%가 되려면 몇 개의 모델을 실행해야 할까요?

우리의 최상 모델:

서로 다른 모델의 10x10

Python에서의 하이퍼파라미터 튜닝

확률 트릭

 

하이퍼파라미터 조합을 균등 무작위로 고를 때, 모든 시도를 ‘모두 빗나갈’ 확률을 보겠습니다.

  • 1회차 = 성공 0.05, 빗나감 (1 - 0.05)

    • 2회차 = (1-0.05) x (1-0.05) 로 구간을 빗나감
      • 3회차 = (1-0.05) x (1-0.05) x (1-0.05) 로 또 빗나감
  • 일반화하면, n회 시도에서 원하는 지점을 모두 놓칠 확률은 (1-0.05)^n 입니다.

Python에서의 하이퍼파라미터 튜닝

확률 트릭

 

그 구역에 들어갈 확률을 높게(95%) 하려면 시도 횟수는?

  • 모두 빗나갈 확률은 (1-0.05)^n 입니다.
  • 따라서 들어갈 확률은 1 - (1-0.05)^n 입니다.
  • 1-(1-0.05)^n >= 0.95를 풀면 n >= 59
Python에서의 하이퍼파라미터 튜닝

확률 트릭

 

이게 무엇을 의미할까요?

  • 무작위로 점을 고르면 ‘좋은 영역’을 계속 모두 놓칠 확률은 낮습니다.
  • 그리드 서치는 전 범위를 촘촘히 덮느라 ‘나쁜 영역’에 오래 머물 수 있습니다.
Python에서의 하이퍼파라미터 튜닝

중요한 참고 사항

 

기억하세요:

  1. 최댓값은 설정한 그리드의 한계 내에서만 좋습니다.

  2. 그리드 서치와 공정 비교하려면 같은 모델링 ‘예산’을 사용하세요.

Python에서의 하이퍼파라미터 튜닝

하이퍼파라미터 무작위 표본 만들기

하이퍼파라미터 조합의 무작위 표본을 직접 만들 수 있습니다:

# Set some hyperparameter lists
learn_rate_list = np.linspace(0.001,2,150)
min_samples_leaf_list = list(range(1,51))
# Create list of combinations
from itertools import product
combinations_list = [list(x) for x in 
                    product(learn_rate_list, min_samples_leaf_list)]
# Select 100 models from our larger set
random_combinations_index = np.random.choice(
                            range(0,len(combinations_list)), 100, 
                            replace=False)
combinations_random_chosen = [combinations_list[x] for x in 
                            random_combinations_index]
Python에서의 하이퍼파라미터 튜닝

랜덤 서치 시각화

하이퍼파라미터 선택을 X, Y 축에 그려 랜덤 서치의 커버리지를 볼 수도 있습니다.

랜덤 서치 커버리지 그래프

분산 범위는 넓지만 깊게 덮지는 않음을 확인하세요.

Python에서의 하이퍼파라미터 튜닝

연습해 봅시다!

Python에서의 하이퍼파라미터 튜닝

Preparing Video For Download...